openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
January 2017
- 1 participants
- 679 discussions
Hello community,
here is the log from the commit of package libnxml for openSUSE:Factory checked in at 2017-01-25 23:26:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libnxml (Old)
and /work/SRC/openSUSE:Factory/.libnxml.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libnxml"
Changes:
--------
New Changes file:
--- /dev/null 2016-12-08 12:47:06.134691974 +0100
+++ /work/SRC/openSUSE:Factory/.libnxml.new/libnxml.changes 2017-01-25 23:27:09.760154978 +0100
@@ -0,0 +1,42 @@
+-------------------------------------------------------------------
+Tue Jan 17 00:56:07 UTC 2017 - jengelh(a)inai.de
+
+- Disable static library generation
+- Update RPM groups/description
+- Drop excessive pkgconfig Require
+
+-------------------------------------------------------------------
+Mon Jan 9 11:53:44 UTC 2017 - sebix+novell.com(a)sebix.at
+
+- add baselibs.conf to specfile
+
+-------------------------------------------------------------------
+Mon Jan 9 09:10:10 UTC 2017 - sebix+novell.com(a)sebix.at
+
+- fix spec file (license, source URL, spec-cleaner)
+
+-------------------------------------------------------------------
+Tue Jan 31 12:21:43 UTC 2012 - jengelh(a)medozas.de
+
+- Remove redundant tags/sections per specfile guideline suggestions
+- Parallel building using %_smp_mflags
+- Remove dependency on licenses package (it's no longer there)
+
+-------------------------------------------------------------------
+Tue Jan 31 11:33:44 UTC 2012 - jengelh(a)medozas.de
+
+- Remove redundant tags/sections per specfile guideline suggestions
+- Parallel building using %_smp_mflags
+
+-------------------------------------------------------------------
+Wed Feb 17 19:25:08 UTC 2010 - pascal.bleser(a)opensuse.org
+
+- add baselibs.conf
+- add backwards compatibility patch to build with the curl that is
+ shipped with SLES 9
+
+-------------------------------------------------------------------
+Wed Feb 17 07:24:39 UTC 2010 - pascal.bleser(a)opensuse.org
+
+- new package (0.18.3)
+
New:
----
baselibs.conf
libnxml-0.18.3.tar.gz
libnxml-curl_compat.patch
libnxml.changes
libnxml.spec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libnxml.spec ++++++
#
# spec file for package libnxml
#
# 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
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%define soname 0
Name: libnxml
Version: 0.18.3
Release: 0
Summary: XML Parsing Library
License: LGPL-2.1+
Group: Development/Libraries/C and C++
Url: http://www.autistici.org/bakunin/codes.php
Source: http://www.autistici.org/bakunin/libnxml/libnxml-%{version}.tar.gz
Source1: baselibs.conf
Patch1: libnxml-curl_compat.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: gcc
BuildRequires: glibc-devel
BuildRequires: libtool
BuildRequires: make
BuildRequires: pkgconfig
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} == 0 || 0%{?suse_version} >= 1030
BuildRequires: libcurl-devel
%else
BuildRequires: curl-devel
%endif
%description
nXML is a C library for parsing, writing and creating XML 1.0 and 1.1 files or
streams. It supports UTF-8, UTF-16BE and UTF-16LE, UCS-4 (1234, 4321, 2143,
2312).
%package -n libnxml%{soname}
Summary: XML Parsing Library
Group: System/Libraries
%description -n libnxml%{soname}
nXML is a C library for parsing, writing and creating XML 1.0 and 1.1 files or
streams. It supports UTF-8, UTF-16be and UTF-16le, UCS-4 (1234, 4321, 2143,
2312).
%package -n libnxml-devel
Summary: XML Parsing Library
Group: Development/Libraries/C and C++
Requires: libnxml%{soname} = %{version}-%{release}
%if 0%{?suse_version} == 0 || 0%{?suse_version} >= 1030
Requires: libcurl-devel
%else
Requires: curl-devel
%endif
%description -n libnxml-devel
nXML is a C library for parsing, writing and creating XML 1.0 and 1.1 files or
streams. It supports UTF-8, UTF-16be and UTF-16le, UCS-4 (1234, 4321, 2143,
2312).
%prep
%setup -q
%patch1
%build
export CFLAGS="%{optflags} -fno-strict-aliasing"
export CPPFLAGS="$CFLAGS"
%configure --disable-static
make %{?_smp_mflags}
%install
%make_install
find %{buildroot} -type f -name "*.la" -delete -print
%post -n libnxml%{soname} -p /sbin/ldconfig
%postun -n libnxml%{soname} -p /sbin/ldconfig
%files -n libnxml%{soname}
%defattr(-,root,root)
%doc README AUTHORS COPYING NEWS ChangeLog
%{_libdir}/libnxml.so.%{soname}
%{_libdir}/libnxml.so.%{soname}.*
%files -n libnxml-devel
%defattr(-,root,root)
%{_includedir}/nxml.h
%{_libdir}/libnxml.so
%{_libdir}/pkgconfig/nxml.pc
%changelog
++++++ baselibs.conf ++++++
libnxml0
++++++ libnxml-curl_compat.patch ++++++
--- src/nxml_error.c.orig 2010-02-17 20:15:49.000000000 +0100
+++ src/nxml_error.c 2010-02-17 20:21:39.000000000 +0100
@@ -24,6 +24,10 @@
#include "nxml.h"
+#if LIBCURL_VERSION_MAJOR < 7 || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR < 12)
+#define curl_easy_strerror(code) "Download error"
+#endif
+
char *
nxml_strerror (nxml_t * nxml, nxml_error_t err)
{
1
0
Hello community,
here is the log from the commit of package aide for openSUSE:Factory checked in at 2017-01-25 23:26:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aide (Old)
and /work/SRC/openSUSE:Factory/.aide.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aide"
Changes:
--------
--- /work/SRC/openSUSE:Factory/aide/aide.changes 2015-08-01 11:39:04.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.aide.new/aide.changes 2017-01-25 23:26:41.572404390 +0100
@@ -1,0 +2,12 @@
+Wed Jan 18 13:38:03 UTC 2017 - meissner(a)suse.com
+
+- Updated to 0.16
+ - lots of bugfixes
+ - including regexp matching within subdirectories of expressions
+- aide-0.16-as-needed.patch: replaces aide-0.15.1-as-needed.patch
+- aide-no_m4_dir.patch: upstream
+- aide.keyring: added from keyserver, cross checked key id on
+ http://aide.sourceforge.net/ and a signature from someone
+ I signed.
+
+-------------------------------------------------------------------
Old:
----
aide-0.15.1-as-needed.patch
aide-0.15.1.tar.bz2
aide-no_m4_dir.patch
New:
----
aide-0.16-as-needed.patch
aide-0.16.tar.gz
aide-0.16.tar.gz.asc
aide.keyring
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aide.spec ++++++
--- /var/tmp/diff_new_pack.MpVTOc/_old 2017-01-25 23:26:42.456271141 +0100
+++ /var/tmp/diff_new_pack.MpVTOc/_new 2017-01-25 23:26:42.456271141 +0100
@@ -1,7 +1,7 @@
#
# spec file for package aide
#
-# Copyright (c) 2015 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
@@ -26,17 +26,18 @@
BuildRequires: libselinux-devel
BuildRequires: pkg-config
BuildRequires: zlib-devel
-Version: 0.15.1
+Version: 0.16
Release: 0
Summary: Advanced Intrusion Detection Environment
License: GPL-2.0+
Group: Productivity/Security
-Source0: http://www.cs.tut.fi/~rammer/aide-%{version}.tar.bz2
+Source0: https://downloads.sourceforge.net/project/aide/aide/%version/aide-%version.…
+Source42: https://downloads.sourceforge.net/project/aide/aide/%version/aide-%version.…
+Source43: aide.keyring
Source1: aide.conf
Source2: aide-cron_daily.sh
Source3: aide-test.sh
Patch1: aide-%{version}-as-needed.patch
-Patch2: aide-no_m4_dir.patch
Patch3: aide-xattr-in-libc.patch
Patch4: aide-dynamic.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -55,7 +56,6 @@
%prep
%setup -q
%patch1 -p1
-%patch2
%patch3 -p1
%patch4 -p1
++++++ aide-0.15.1-as-needed.patch -> aide-0.16-as-needed.patch ++++++
--- /work/SRC/openSUSE:Factory/aide/aide-0.15.1-as-needed.patch 2011-09-23 01:51:31.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.aide.new/aide-0.16-as-needed.patch 2017-01-25 23:26:40.300596123 +0100
@@ -1,13 +1,13 @@
-Index: aide-0.15.1/src/Makefile.am
+Index: aide-0.16/Makefile.am
===================================================================
---- aide-0.15.1.orig/src/Makefile.am
-+++ aide-0.15.1/src/Makefile.am
-@@ -25,7 +25,7 @@ AM_YFLAGS= -d
- #AM_LFLAGS= -d
- LEX_OUTPUT_ROOT = lex.yy
+--- aide-0.16.orig/Makefile.am
++++ aide-0.16/Makefile.am
+@@ -55,7 +55,7 @@ if USE_CURL
+ aide_SOURCES += include/fopen.h src/fopen.c
+ endif
--LDADD = -lm @CRYPTLIB@ @ACLLIB@ @SELINUXLIB@ @AUDITLIB@ @ATTRLIB@ @E2FSATTRSLIB@ @ELFLIB@
-+LDADD = -lm @LDFLAGS@ @CRYPTLIB@ @ACLLIB@ @SELINUXLIB@ @AUDITLIB@ @ATTRLIB@ @E2FSATTRSLIB@ @ELFLIB@
+-aide_LDADD = -lm @PCRELIB@ @CRYPTLIB@ @ACLLIB@ @SELINUXLIB@ @AUDITLIB@ @ATTRLIB@ @E2FSATTRSLIB@ @ELFLIB@
++aide_LDADD = -lm @LDFLAGS@ @PCRELIB@ @CRYPTLIB@ @ACLLIB@ @SELINUXLIB@ @AUDITLIB@ @ATTRLIB@ @E2FSATTRSLIB@ @ELFLIB@
AM_CFLAGS = @AIDE_DEFS@ -W -Wall -g
-
- CLEANFILES = conf_yacc.h conf_yacc.c conf_lex.c db_lex.c *~
+ AM_CPPFLAGS = -I$(top_srcdir) \
+ -I$(top_srcdir)/include \
++++++ aide-xattr-in-libc.patch ++++++
--- /var/tmp/diff_new_pack.MpVTOc/_old 2017-01-25 23:26:42.532259686 +0100
+++ /var/tmp/diff_new_pack.MpVTOc/_new 2017-01-25 23:26:42.536259083 +0100
@@ -1,16 +1,20 @@
---- aide-0.15.1.orig/configure.in
-+++ aide-0.15.1/configure.in
-@@ -514,7 +514,7 @@ AC_ARG_WITH([xattr],
+Index: aide-0.16/configure.ac
+===================================================================
+--- aide-0.16.orig/configure.ac
++++ aide-0.16/configure.ac
+@@ -536,7 +536,7 @@ AC_ARG_WITH([xattr],
AS_IF([test "x$with_xattr_support" != xno],
[AC_DEFINE(WITH_XATTR,1,[use xattr])
- ATTRLIB=-lattr
+ ATTRLIB=
compoptionstring="${compoptionstring}WITH_XATTR\\n"
- aideextragroups="${aideextragroups}+xattr"
+ aideextragroups="${aideextragroups}+xattrs"
AC_MSG_RESULT(yes)],
---- aide-0.15.1.orig/include/db_config.h
-+++ aide-0.15.1/include/db_config.h
+Index: aide-0.16/include/db_config.h
+===================================================================
+--- aide-0.16.orig/include/db_config.h
++++ aide-0.16/include/db_config.h
@@ -62,7 +62,6 @@ typedef struct acl_type {
#ifdef WITH_XATTR /* Do generic user Xattrs. */
1
0
Hello community,
here is the log from the commit of package python-dulwich for openSUSE:Factory checked in at 2017-01-25 23:26:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-dulwich (Old)
and /work/SRC/openSUSE:Factory/.python-dulwich.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-dulwich"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-dulwich/python-dulwich.changes 2016-08-17 12:05:36.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-dulwich.new/python-dulwich.changes 2017-01-25 23:26:34.529466160 +0100
@@ -1,0 +2,36 @@
+Wed Jan 18 17:49:04 UTC 2017 - dmueller(a)suse.com
+
+- update to 0.16.3:
+ IMPROVEMENTS
+ * Fixed failing test-cases on windows.
+ (Koen Martens)
+ * Add support for worktrees. See `git-worktree(1)` and
+ `gitrepository-layout(5)`. (Laurent Rineau)
+ * Add support for `commondir` file in Git control
+ directories. (Laurent Rineau)
+ * Add support for passwords in HTTP URLs.
+ (Jon Bain, Mika Mäenpää)
+ * Add `release_robot` script to contrib,
+ allowing easy finding of current version based on Git tags.
+ (Mark Mikofski)
+ * Add ``Blob.splitlines`` method.
+ (Jelmer Vernooij)
+ * Add `dulwich.config.parse_submodules` function.
+ * Add `RefsContainer.follow` method. (#438)
+ * Support `ssh://` URLs in get_transport_and_path_from_url().
+ (Jelmer Vernooij, #402)
+ * Support missing empty line after headers in Git commits and tags.
+ (Nicolas Dandrimont, #413)
+ * Fix `dulwich.porcelain.status` when used in empty trees.
+ (Jelmer Vernooij, #415)
+ * Return copies of objects in MemoryObjectStore rather than
+ references, making the behaviour more consistent with that of
+ DiskObjectStore. (Félix Mattrat, Jelmer Vernooij)
+ * Fix ``dulwich.web`` on Python3. (#295, Jonas Haag)
+ * Many bugfixes, see NEWS file for details
+ CHANGES
+ * Changed license from "GNU General Public License, version 2.0 or later"
+ to "Apache License, version 2.0 or later or GNU General Public License,
+ version 2.0 or later". (#153)
+
+-------------------------------------------------------------------
Old:
----
dulwich-0.12.0.tar.gz
New:
----
dulwich-0.16.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-dulwich.spec ++++++
--- /var/tmp/diff_new_pack.ltNYt1/_old 2017-01-25 23:26:34.905409484 +0100
+++ /var/tmp/diff_new_pack.ltNYt1/_new 2017-01-25 23:26:34.905409484 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-dulwich
#
-# 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
@@ -17,22 +17,18 @@
Name: python-dulwich
-Version: 0.12.0
+Version: 0.16.3
Release: 0
Url: https://www.dulwich.io
Summary: Pure-Python Git Library
-License: GPL-2.0+
+License: GPL-2.0+ or Apache-2.0
Group: Development/Languages/Python
-Source: https://pypi.python.org/packages/source/d/dulwich/dulwich-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
+Source: https://pypi.io/packages/source/d/dulwich/dulwich-%{version}.tar.gz
BuildRequires: fdupes
BuildRequires: python-Sphinx
BuildRequires: python-devel
Requires(post): update-alternatives
Requires(preun): update-alternatives
-%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
%description
Simple Pure-Python implementation of the Git file formats and protocols. Dulwich
++++++ dulwich-0.12.0.tar.gz -> dulwich-0.16.3.tar.gz ++++++
++++ 11007 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package lighttpd for openSUSE:Factory checked in at 2017-01-25 23:26:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lighttpd (Old)
and /work/SRC/openSUSE:Factory/.lighttpd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lighttpd"
Changes:
--------
--- /work/SRC/openSUSE:Factory/lighttpd/lighttpd.changes 2017-01-16 11:15:47.637447693 +0100
+++ /work/SRC/openSUSE:Factory/.lighttpd.new/lighttpd.changes 2017-01-25 23:26:26.430687117 +0100
@@ -1,0 +2,34 @@
+Mon Jan 16 14:34:52 UTC 2017 - bwiedemann(a)suse.com
+
+- make lighttpd user own /var/log/lighttpd/
+ to be able to write logs there
+
+-------------------------------------------------------------------
+Sat Jan 14 12:25:58 UTC 2017 - stbuehler(a)web.de
+
+- fix some rpmlint messages
+ + update FSF address for lighttpd.init
+ + install example scripts without +x to avoid pulling shell
+ dependencies
+ + W:file-contains-current-date /usr/sbin/lighttpd is a false positive;
+ it only happens when the last-source-modified date is the same as
+ the build date
+ + I: binary-or-shlib-calls-gethostbyname has been forwarded upstream
+
+-------------------------------------------------------------------
+Sat Jan 14 11:35:00 UTC 2017 - jenkins(a)lighttpd.net
+
+- update to 1.4.45
+ + - next is 1.4.45
+ + [mod_cgi] skip local-redir handling if to self (fixes #2779, #2108)
+ + [mod_webdav] fix crash when plugin_ctx cleaned up (fixes #2780)
+ + [mod_fastcgi] detect child exit, restart proactively
+ + [mod_scgi] detect child exit, restart proactively
+ + [TLS] ssl.read-ahead = "disable" for low mem (fixes #2778)
+ + [doc] NEWS
+ + [tests] update test skip count for !fcgi-responder
+ + [tests] FCGI_Finish() final request before exit
+ + [tests] give time for periodic jobs to detect exit
+ + [mod_cgi] check cgi fd for num bytes ready to read
+
+-------------------------------------------------------------------
Old:
----
lighttpd_1.4.44-0.1.debian.tar.xz
lighttpd_1.4.44-0.1.dsc
lighttpd_1.4.44.orig.tar.xz
New:
----
lighttpd_1.4.45-0.1.debian.tar.xz
lighttpd_1.4.45-0.1.dsc
lighttpd_1.4.45.orig.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ lighttpd.spec ++++++
--- /var/tmp/diff_new_pack.f2kb2S/_old 2017-01-25 23:26:27.266561101 +0100
+++ /var/tmp/diff_new_pack.f2kb2S/_new 2017-01-25 23:26:27.274559895 +0100
@@ -18,7 +18,7 @@
%define pkg_home %{_localstatedir}/lib/%{name}
Name: lighttpd
-Version: 1.4.44
+Version: 1.4.45
Release: 0
#
%define pkg_name %{name}
@@ -191,7 +191,7 @@
litmus tests are passed.
%package mod_authn_gssapi
-Summary: A module to provide GSSAPI authentication in lighttpd
+Summary: GSSAPI authentication in lighttpd
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
@@ -199,7 +199,7 @@
A module to provide GSSAPI authentication in lighttpd.
%package mod_authn_ldap
-Summary: A module to provide LDAP authentication in lighttpd
+Summary: LDAP authentication in lighttpd
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
@@ -207,7 +207,7 @@
A module to provide LDAP authentication in lighttpd.
%package mod_authn_mysql
-Summary: A module to provide MySQL authentication in lighttpd
+Summary: MySQL authentication in lighttpd
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
@@ -299,6 +299,8 @@
# remove the .la files. we dont need them.
#
find %{buildroot} -type f -name "*.la" -delete -print
+# remove executable bit from doc scripts to avoid pulling dependencies
+chmod -x doc/scripts/spawn-php.sh doc/scripts/rrdtool-graph.sh
%pre
%{_sbindir}/groupadd -r %{name} >/dev/null 2>&1 ||:
@@ -412,14 +414,14 @@
%dir %attr(751,%{name},%{name}) %{pkg_home}/
%dir %attr(751,%{name},%{name}) %{pkg_home}/sockets/
%attr(751,%{name},%{name}) %{_var}/cache/%{name}/
-%dir %{_var}/log/%{name}/
+%dir %attr(750,%{name},%{name}) %{_var}/log/%{name}/
%files mod_rrdtool
%defattr(-,root,root,-)
%config(noreplace) %attr(640,root,%{name}) %{_sysconfdir}/%{name}/conf.d/rrdtool.conf
+%{_libdir}/%{name}/mod_rrdtool.so
%doc doc/outdated/rrdtool.txt
%doc doc/scripts/rrdtool-graph.sh
-%{_libdir}/%{name}/mod_rrdtool.so
%files mod_cml
%defattr(-,root,root,-)
++++++ lighttpd.init ++++++
--- /var/tmp/diff_new_pack.f2kb2S/_old 2017-01-25 23:26:27.390542411 +0100
+++ /var/tmp/diff_new_pack.f2kb2S/_new 2017-01-25 23:26:27.390542411 +0100
@@ -9,19 +9,19 @@
# and its symbolic link
# /(usr/)sbin/rclighttpd
#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Template system startup script for some example service/daemon lighttpd
#
++++++ lighttpd_1.4.44-0.1.debian.tar.xz -> lighttpd_1.4.45-0.1.debian.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/debian/changelog new/debian/changelog
--- old/debian/changelog 2016-12-24 10:04:42.000000000 +0100
+++ new/debian/changelog 2017-01-14 12:34:51.000000000 +0100
@@ -1,3 +1,21 @@
+lighttpd (1.4.45-0.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * new snapshot 1.4.45
+ + - next is 1.4.45
+ + [mod_cgi] skip local-redir handling if to self (fixes #2779, #2108)
+ + [mod_webdav] fix crash when plugin_ctx cleaned up (fixes #2780)
+ + [mod_fastcgi] detect child exit, restart proactively
+ + [mod_scgi] detect child exit, restart proactively
+ + [TLS] ssl.read-ahead = "disable" for low mem (fixes #2778)
+ + [doc] NEWS
+ + [tests] update test skip count for !fcgi-responder
+ + [tests] FCGI_Finish() final request before exit
+ + [tests] give time for periodic jobs to detect exit
+ + [mod_cgi] check cgi fd for num bytes ready to read
+
+ -- Jenkins (autobuilder) <jenkins(a)lighttpd.net> Sat, 14 Jan 2017 11:34:51 +0000
+
lighttpd (1.4.44-0.1) unstable; urgency=low
* Non-maintainer upload.
++++++ lighttpd_1.4.44-0.1.dsc -> lighttpd_1.4.45-0.1.dsc ++++++
--- /work/SRC/openSUSE:Factory/lighttpd/lighttpd_1.4.44-0.1.dsc 2017-01-16 11:15:47.721435785 +0100
+++ /work/SRC/openSUSE:Factory/.lighttpd.new/lighttpd_1.4.45-0.1.dsc 2017-01-25 23:26:26.506675661 +0100
@@ -5,7 +5,7 @@
Source: lighttpd
Binary: lighttpd, lighttpd-doc, lighttpd-mod-mysql-vhost, lighttpd-mod-trigger-b4-dl, lighttpd-mod-cml, lighttpd-mod-magnet, lighttpd-mod-webdav, lighttpd-mod-authn-gssapi, lighttpd-mod-authn-ldap, lighttpd-mod-authn-mysql, lighttpd-mod-geoip
Architecture: any all
-Version: 1.4.44-0.1
+Version: 1.4.45-0.1
Maintainer: Debian lighttpd maintainers <pkg-lighttpd-maintainers(a)lists.alioth.debian.org>
Uploaders: Krzysztof Krzyżaniak (eloy) <eloy(a)debian.org>, Olaf van der Spek <olafvdspek(a)gmail.com>, Arno Töll <arno(a)debian.org>, Michael Gilbert <mgilbert(a)debian.org>
Homepage: http://lighttpd.net/
@@ -26,23 +26,23 @@
lighttpd-mod-trigger-b4-dl deb httpd optional arch=any
lighttpd-mod-webdav deb httpd optional arch=any
Checksums-Sha1:
- 3597b9c71aabada26129e3ebc0838cb10317d72c 660304 lighttpd_1.4.44.orig.tar.xz
- 2cf54510a2ccdef90a90cf86d4f02f4a0f2b60fa 56364 lighttpd_1.4.44-0.1.debian.tar.xz
+ 03e516f8be59396bc148218fe7b993219dacaf5d 660432 lighttpd_1.4.45.orig.tar.xz
+ f9f181fa784b49c18f30ce3ab4a9514a9bccbeb2 56560 lighttpd_1.4.45-0.1.debian.tar.xz
Checksums-Sha256:
- adb66ca985651957feb209c91c55ebbf917d23630bfc3a216a2f70043c7b5422 660304 lighttpd_1.4.44.orig.tar.xz
- d359ec0efcb7666aa58ee9087153a0150f4d4bf43389245b998b32288252fdfb 56364 lighttpd_1.4.44-0.1.debian.tar.xz
+ 1c97225deea33eefba6d4158c2cef27913d47553263516bbe9d2e2760fc43a3f 660432 lighttpd_1.4.45.orig.tar.xz
+ 211ae709717e610caa7876bb5f46bd5e6f51203baa9c6461dbc5ab60d6a4686d 56560 lighttpd_1.4.45-0.1.debian.tar.xz
Files:
- eb9355543ce0248397acc3245005b110 660304 lighttpd_1.4.44.orig.tar.xz
- aa814c84306516c352db05e639a5a1e6 56364 lighttpd_1.4.44-0.1.debian.tar.xz
+ a128e1eda76899ce3fd115efae5fe631 660432 lighttpd_1.4.45.orig.tar.xz
+ 3cd4f8a75e2646bfcc17d72270ebccb5 56560 lighttpd_1.4.45-0.1.debian.tar.xz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
-iQEcBAEBCAAGBQJYXjotAAoJEE3M2orHRjXrJSIIAKx2ZO6s+b58cD5jvcz+0pH7
-D/9sm5c2TeMlooSrqY6gQEYkjoKDOOL33Ke7iCX/GRs6THUTPYZoSEjZMNZfJ/CT
-oK6XAWvYqeUEWkvnVLktFGc5POIxzlvg6xvTs15dhO4gsLttDOlneuzVJH4ooKVz
-n4+A+U2v13dsZGDcr2UfZSRTD2oTVWrsyiI4Smu5kbXeO+WbnT5u+iyAdHt9bb7U
-+wA2aNUfcTmyfyV9p1XSNWAfGCN0Hh2t+eI3idhlPXaD+plhEChRzt4UVqDCClP6
-t5ahicohtJUTB3Cou6uMzzLKk1zEaj4WbvOBJZVGeZ434FpWtIFNAC+SDKmDa2I=
-=oRnr
+iQEcBAEBCAAGBQJYegzeAAoJEE3M2orHRjXriBEH/1NkSh1rQhWFqYFRNLv2M60G
+l4vhyfeUs+GCmCyI/XatTBEEYm2PvzeTAumd7bByTu3MK6+uZiODrOkKCFdai/j0
+lfo83nzLR1lkQxLdZ1Eq7YdcpmmhxIFoUSJjNrDA3ksoF2U/rafCo6P3LXWTHBV4
+sGlIy04VcfTTNmXH04lENparRCjiNHrmKqVQTFJZyK00EmN8bUJ1GWvpUogi2Kwg
+PL6E8owlhE8K4MBorATlwpE6raVTUWQGfUkF04+7VKC/YmYlTeAlb4XIdn52VGru
+4VO2SBCzDdMsa54e/V7hklFRYzUIPiPcIOctjI1Acj9yiAXkafdB8IWhYoVKUq8=
+=S/HP
-----END PGP SIGNATURE-----
++++++ lighttpd_1.4.44.orig.tar.xz -> lighttpd_1.4.45.orig.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/CMakeLists.txt new/lighttpd-1.4.45/CMakeLists.txt
--- old/lighttpd-1.4.44/CMakeLists.txt 2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/CMakeLists.txt 2017-01-14 06:05:16.000000000 +0100
@@ -10,7 +10,7 @@
set(CPACK_PACKAGE_VERSION_MAJOR 1)
set(CPACK_PACKAGE_VERSION_MINOR 4)
-set(CPACK_PACKAGE_VERSION_PATCH 44)
+set(CPACK_PACKAGE_VERSION_PATCH 45)
set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/NEWS new/lighttpd-1.4.45/NEWS
--- old/lighttpd-1.4.44/NEWS 2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/NEWS 2017-01-14 06:05:16.000000000 +0100
@@ -3,7 +3,14 @@
NEWS
====
-- 1.4.44
+- 1.4.45
+ * [mod_cgi] skip local-redir handling if to self (fixes #2779, #2108)
+ * [mod_webdav] fix crash when plugin_ctx cleaned up (fixes #2780)
+ * [mod_fastcgi] detect child exit, restart proactively
+ * [mod_scgi] detect child exit, restart proactively
+ * [TLS] ssl.read-ahead = "disable" for low mem (fixes #2778)
+
+- 1.4.44 - 2016-12-24
* [mod_scgi] fix segfault (fixes #2762)
* [mod_authn_gssapi] fix memory leak
* [config] warn if mod_authn_ldap,mysql not listed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/SConstruct new/lighttpd-1.4.45/SConstruct
--- old/lighttpd-1.4.44/SConstruct 2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/SConstruct 2017-01-14 06:05:16.000000000 +0100
@@ -5,7 +5,7 @@
from stat import *
package = 'lighttpd'
-version = '1.4.44'
+version = '1.4.45'
def checkCHeaders(autoconf, hdrs):
p = re.compile('[^A-Z0-9]')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/configure new/lighttpd-1.4.45/configure
--- old/lighttpd-1.4.44/configure 2016-12-24 06:27:06.000000000 +0100
+++ new/lighttpd-1.4.45/configure 2017-01-14 06:05:57.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for lighttpd 1.4.44.
+# Generated by GNU Autoconf 2.69 for lighttpd 1.4.45.
#
# Report bugs to <contact(a)lighttpd.net>.
#
@@ -590,8 +590,8 @@
# Identity of this package.
PACKAGE_NAME='lighttpd'
PACKAGE_TARNAME='lighttpd'
-PACKAGE_VERSION='1.4.44'
-PACKAGE_STRING='lighttpd 1.4.44'
+PACKAGE_VERSION='1.4.45'
+PACKAGE_STRING='lighttpd 1.4.45'
PACKAGE_BUGREPORT='contact(a)lighttpd.net'
PACKAGE_URL=''
@@ -1421,7 +1421,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures lighttpd 1.4.44 to adapt to many kinds of systems.
+\`configure' configures lighttpd 1.4.45 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1491,7 +1491,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of lighttpd 1.4.44:";;
+ short | recursive ) echo "Configuration of lighttpd 1.4.45:";;
esac
cat <<\_ACEOF
@@ -1657,7 +1657,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-lighttpd configure 1.4.44
+lighttpd configure 1.4.45
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2320,7 +2320,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by lighttpd $as_me 1.4.44, which was
+It was created by lighttpd $as_me 1.4.45, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3262,7 +3262,7 @@
# Define the identity of the package.
PACKAGE='lighttpd'
- VERSION='1.4.44'
+ VERSION='1.4.45'
cat >>confdefs.h <<_ACEOF
@@ -18908,7 +18908,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by lighttpd $as_me 1.4.44, which was
+This file was extended by lighttpd $as_me 1.4.45, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -18974,7 +18974,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-lighttpd config.status 1.4.44
+lighttpd config.status 1.4.45
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/configure.ac new/lighttpd-1.4.45/configure.ac
--- old/lighttpd-1.4.44/configure.ac 2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/configure.ac 2017-01-14 06:05:16.000000000 +0100
@@ -1,7 +1,7 @@
dnl -*- Autoconf -*-
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.57)
-AC_INIT([lighttpd], [1.4.44], [contact(a)lighttpd.net]
+AC_INIT([lighttpd], [1.4.45], [contact(a)lighttpd.net]
AC_CONFIG_SRCDIR([src/server.c])
AC_CONFIG_HEADER([config.h])
AC_CONFIG_MACRO_DIR([m4])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/src/base.h new/lighttpd-1.4.45/src/base.h
--- old/lighttpd-1.4.44/src/base.h 2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/src/base.h 2017-01-14 06:05:17.000000000 +0100
@@ -295,6 +295,7 @@
buffer *ssl_verifyclient_username;
unsigned short ssl_verifyclient_export_cert;
unsigned short ssl_disable_client_renegotiation;
+ unsigned short ssl_read_ahead;
unsigned short use_ipv6, set_v6only; /* set_v6only is only a temporary option */
unsigned short defer_accept;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/src/configfile.c new/lighttpd-1.4.45/src/configfile.c
--- old/lighttpd-1.4.44/src/configfile.c 2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/src/configfile.c 2017-01-14 06:05:17.000000000 +0100
@@ -144,6 +144,7 @@
{ "server.stream-request-body", NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION }, /* 76 */
{ "server.stream-response-body", NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION }, /* 77 */
{ "server.max-request-field-size", NULL, T_CONFIG_INT, T_CONFIG_SCOPE_SERVER }, /* 78 */
+ { "ssl.read-ahead", NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 79 */
{ NULL, NULL, T_CONFIG_UNSET, T_CONFIG_SCOPE_UNSET }
};
@@ -247,6 +248,7 @@
s->ssl_verifyclient_depth = 9;
s->ssl_verifyclient_export_cert = 0;
s->ssl_disable_client_renegotiation = 1;
+ s->ssl_read_ahead = (0 == i ? 1 : srv->config_storage[0]->ssl_read_ahead);
s->listen_backlog = (0 == i ? 1024 : srv->config_storage[0]->listen_backlog);
s->stream_request_body = 0;
s->stream_response_body = 0;
@@ -315,6 +317,7 @@
#endif
cv[76].destination = &(s->stream_request_body);
cv[77].destination = &(s->stream_response_body);
+ cv[79].destination = &(s->ssl_read_ahead);
srv->config_storage[i] = s;
@@ -543,6 +546,7 @@
PATCH(ssl_verifyclient_username);
PATCH(ssl_verifyclient_export_cert);
PATCH(ssl_disable_client_renegotiation);
+ PATCH(ssl_read_ahead);
return 0;
}
@@ -671,6 +675,8 @@
PATCH(ssl_verifyclient_export_cert);
} else if (buffer_is_equal_string(du->key, CONST_STR_LEN("ssl.disable-client-renegotiation"))) {
PATCH(ssl_disable_client_renegotiation);
+ } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("ssl.read-ahead"))) {
+ PATCH(ssl_read_ahead);
}
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/src/connections-glue.c new/lighttpd-1.4.45/src/connections-glue.c
--- old/lighttpd-1.4.44/src/connections-glue.c 2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/src/connections-glue.c 2017-01-14 06:05:17.000000000 +0100
@@ -127,7 +127,7 @@
connection_set_state(srv, con, CON_STATE_ERROR);
return -1;
}
- } while (len > 0);
+ } while (len > 0 && (con->conf.ssl_read_ahead || SSL_pending(con->ssl) > 0));
if (len < 0) {
int oerrno = errno;
@@ -206,11 +206,13 @@
connection_set_state(srv, con, CON_STATE_ERROR);
return -1;
- } else { /*(len == 0)*/
+ } else if (len == 0) {
con->is_readable = 0;
/* the other end close the connection -> KEEP-ALIVE */
return -2;
+ } else {
+ return 0;
}
#else
UNUSED(srv);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/src/mod_cgi.c new/lighttpd-1.4.45/src/mod_cgi.c
--- old/lighttpd-1.4.44/src/mod_cgi.c 2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/src/mod_cgi.c 2017-01-14 06:05:17.000000000 +0100
@@ -398,7 +398,7 @@
#if defined(__WIN32)
buffer_string_prepare_copy(hctx->response, 4 * 1024);
#else
- if (ioctl(con->fd, FIONREAD, &toread) || toread <= 4*1024) {
+ if (ioctl(hctx->fd, FIONREAD, &toread) || toread <= 4*1024) {
buffer_string_prepare_copy(hctx->response, 4 * 1024);
} else {
if (toread > MAX_READ_LIMIT) toread = MAX_READ_LIMIT;
@@ -529,9 +529,13 @@
if (con->http_status >= 300 && con->http_status < 400) {
/*(con->parsed_response & HTTP_LOCATION)*/
+ size_t ulen = buffer_string_length(con->uri.path);
data_string *ds;
if (NULL != (ds = (data_string *) array_get_element(con->response.headers, "Location"))
- && ds->value->ptr[0] == '/') {
+ && ds->value->ptr[0] == '/'
+ && (0 != strncmp(ds->value->ptr, con->uri.path->ptr, ulen)
+ || (ds->value->ptr[ulen] != '\0' && ds->value->ptr[ulen] != '/' && ds->value->ptr[ulen] != '?'))
+ && NULL == array_get_element(con->response.headers, "Set-Cookie")) {
if (++con->loops_per_request > 5) {
log_error_write(srv, __FILE__, __LINE__, "sb", "too many internal loops while processing request:", con->request.orig_uri);
con->http_status = 500; /* Internal Server Error */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/src/mod_fastcgi.c new/lighttpd-1.4.45/src/mod_fastcgi.c
--- old/lighttpd-1.4.44/src/mod_fastcgi.c 2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/src/mod_fastcgi.c 2017-01-14 06:05:17.000000000 +0100
@@ -3550,6 +3550,49 @@
host = ex->hosts[n];
+ for (proc = host->first; proc; proc = proc->next) {
+ int status;
+
+ if (proc->pid == 0) continue;
+
+ switch (waitpid(proc->pid, &status, WNOHANG)) {
+ case 0:
+ /* child still running after timeout, good */
+ break;
+ case -1:
+ if (errno != EINTR) {
+ /* no PID found ? should never happen */
+ log_error_write(srv, __FILE__, __LINE__, "sddss",
+ "pid ", proc->pid, proc->state,
+ "not found:", strerror(errno));
+ }
+ break;
+ default:
+ /* the child should not terminate at all */
+ if (WIFEXITED(status)) {
+ if (proc->state != PROC_STATE_KILLED) {
+ log_error_write(srv, __FILE__, __LINE__, "sdb",
+ "child exited:",
+ WEXITSTATUS(status), proc->connection_name);
+ }
+ } else if (WIFSIGNALED(status)) {
+ if (WTERMSIG(status) != SIGTERM) {
+ log_error_write(srv, __FILE__, __LINE__, "sd",
+ "child signaled:",
+ WTERMSIG(status));
+ }
+ } else {
+ log_error_write(srv, __FILE__, __LINE__, "sd",
+ "child died somehow:",
+ status);
+ }
+ proc->pid = 0;
+ if (proc->state == PROC_STATE_RUNNING) host->active_procs--;
+ proc->state = PROC_STATE_DIED;
+ host->max_id--;
+ }
+ }
+
fcgi_restart_dead_procs(srv, p, host);
for (proc = host->unused_procs; proc; proc = proc->next) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/src/mod_scgi.c new/lighttpd-1.4.45/src/mod_scgi.c
--- old/lighttpd-1.4.44/src/mod_scgi.c 2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/src/mod_scgi.c 2017-01-14 06:05:17.000000000 +0100
@@ -2886,6 +2886,49 @@
host = ex->hosts[n];
+ for (proc = host->first; proc; proc = proc->next) {
+ int status;
+
+ if (proc->pid == 0) continue;
+
+ switch (waitpid(proc->pid, &status, WNOHANG)) {
+ case 0:
+ /* child still running after timeout, good */
+ break;
+ case -1:
+ if (errno != EINTR) {
+ /* no PID found ? should never happen */
+ log_error_write(srv, __FILE__, __LINE__, "sddss",
+ "pid ", proc->pid, proc->state,
+ "not found:", strerror(errno));
+ }
+ break;
+ default:
+ /* the child should not terminate at all */
+ if (WIFEXITED(status)) {
+ if (proc->state != PROC_STATE_KILLED) {
+ log_error_write(srv, __FILE__, __LINE__, "sdb",
+ "child exited:",
+ WEXITSTATUS(status), proc->socket);
+ }
+ } else if (WIFSIGNALED(status)) {
+ if (WTERMSIG(status) != SIGTERM) {
+ log_error_write(srv, __FILE__, __LINE__, "sd",
+ "child signaled:",
+ WTERMSIG(status));
+ }
+ } else {
+ log_error_write(srv, __FILE__, __LINE__, "sd",
+ "child died somehow:",
+ status);
+ }
+ proc->pid = 0;
+ if (proc->state == PROC_STATE_RUNNING) host->active_procs--;
+ proc->state = PROC_STATE_DIED;
+ host->max_id--;
+ }
+ }
+
scgi_restart_dead_procs(srv, p, host);
for (proc = host->first; proc; proc = proc->next) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/src/mod_webdav.c new/lighttpd-1.4.45/src/mod_webdav.c
--- old/lighttpd-1.4.44/src/mod_webdav.c 2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/src/mod_webdav.c 2017-01-14 06:05:17.000000000 +0100
@@ -2758,7 +2758,10 @@
static handler_t mod_webdav_connection_reset(server *srv, connection *con, void *p_d) {
plugin_data *p = p_d;
handler_ctx *hctx = con->plugin_ctx[p->id];
- if (hctx) free(hctx);
+ if (hctx) {
+ free(hctx);
+ con->plugin_ctx[p->id] = NULL;
+ }
UNUSED(srv);
return HANDLER_GO_ON;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/src/network.c new/lighttpd-1.4.45/src/network.c
--- old/lighttpd-1.4.44/src/network.c 2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/src/network.c 2017-01-14 06:05:17.000000000 +0100
@@ -994,7 +994,7 @@
s->ssl_pemfile);
return -1;
}
- SSL_CTX_set_default_read_ahead(s->ssl_ctx, 1);
+ SSL_CTX_set_default_read_ahead(s->ssl_ctx, s->ssl_read_ahead);
SSL_CTX_set_mode(s->ssl_ctx, SSL_CTX_get_mode(s->ssl_ctx)
| SSL_MODE_ENABLE_PARTIAL_WRITE
| SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/tests/docroot/www/cgi.pl new/lighttpd-1.4.45/tests/docroot/www/cgi.pl
--- old/lighttpd-1.4.44/tests/docroot/www/cgi.pl 2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/tests/docroot/www/cgi.pl 2017-01-14 06:05:17.000000000 +0100
@@ -1,7 +1,7 @@
#!/usr/bin/env perl
if ($ENV{"QUERY_STRING"} eq "internal-redir") {
- print "Location: /cgi.pl\r\n\r\n";
+ print "Location: /cgi-pathinfo.pl/foo\r\n\r\n";
exit 0;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/tests/fcgi-responder.c new/lighttpd-1.4.45/tests/fcgi-responder.c
--- old/lighttpd-1.4.44/tests/fcgi-responder.c 2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/tests/fcgi-responder.c 2017-01-14 06:05:17.000000000 +0100
@@ -11,7 +11,7 @@
#include <string.h>
int main (void) {
- int num_requests = 2;
+ int num_requests = 1;
while (num_requests > 0 &&
FCGI_Accept() >= 0) {
@@ -50,6 +50,8 @@
} else {
printf("test123");
}
+
+ if (0 == num_requests) FCGI_Finish();
}
return 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lighttpd-1.4.44/tests/mod-fastcgi.t new/lighttpd-1.4.45/tests/mod-fastcgi.t
--- old/lighttpd-1.4.44/tests/mod-fastcgi.t 2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/tests/mod-fastcgi.t 2017-01-14 06:05:17.000000000 +0100
@@ -7,7 +7,7 @@
}
use strict;
-use Test::More tests => 60;
+use Test::More tests => 59;
use LightyTest;
my $tf = LightyTest->new();
@@ -348,7 +348,7 @@
SKIP: {
- skip "no fcgi-responder found", 11 unless -x $tf->{BASEDIR}."/tests/fcgi-responder" || -x $tf->{BASEDIR}."/tests/fcgi-responder.exe";
+ skip "no fcgi-responder found", 10 unless -x $tf->{BASEDIR}."/tests/fcgi-responder" || -x $tf->{BASEDIR}."/tests/fcgi-responder.exe";
$tf->{CONFIGFILE} = 'fastcgi-responder.conf';
ok($tf->start_proc == 0, "Starting lighttpd with $tf->{CONFIGFILE}") or die();
@@ -409,17 +409,9 @@
$t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'test123' } ];
ok($tf->handle_http($t) == 0, 'killing fastcgi and wait for restart');
- select(undef, undef, undef, .2);
- $t->{REQUEST} = ( <<EOF
-GET /index.fcgi?die-at-end HTTP/1.0
-Host: www.example.org
-EOF
- );
- $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200, 'HTTP-Content' => 'test123' } ];
- ok($tf->handle_http($t) == 0, 'killing fastcgi and wait for restart');
-
-
- select(undef, undef, undef, .2);
+ # (might take lighttpd 1 sec to detect backend exit)
+ select(undef, undef, undef, .9);
+ select(undef, undef, undef, .1) while (!$tf->listening_on(10000));
$t->{REQUEST} = ( <<EOF
GET /index.fcgi?crlf HTTP/1.0
Host: www.example.org
1
0
Hello community,
here is the log from the commit of package python-icalendar for openSUSE:Factory checked in at 2017-01-25 23:26:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-icalendar (Old)
and /work/SRC/openSUSE:Factory/.python-icalendar.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-icalendar"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-icalendar/python-icalendar.changes 2016-04-22 16:23:44.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-icalendar.new/python-icalendar.changes 2017-01-25 23:26:21.411443813 +0100
@@ -1,0 +2,44 @@
+Wed Jan 18 13:59:19 UTC 2017 - dmueller(a)suse.com
+
+- correct source url
+
+-------------------------------------------------------------------
+Sat Jan 14 18:34:28 UTC 2017 - hpj(a)urpla.net
+
+- update to version 3.11.2 (2017-01-12)
+ - Run tests with python 3.5 and 3.6. [geier]
+ - Allow tests failing with pypy3 on travis.ci. [geier]
+
+- update to version 3.11.1 (2016-12-19)
+ - Encode error message before adding it to the stack of collected error
+ messages.
+
+- update to version 3.11 (2016-11-18)
+ - Successfully test with pypy and pypy3. [gforcada]
+ - Minor documentation update. [tpltnt]
+
+- update to version 3.10 (2016-05-26)
+ - Updated components description to better comply with RFC 5545. Refs #183.
+ [stlaz]
+ - Added PERIOD value type to date types. Also fixes incompatibilities
+ described in #184. Refs #189. [stlaz]
+ - Fix testsuite for use with dateutil>=2.5. Refs #195. [untitaker]
+ - Reintroduce cal.Component.is_broken that was removed with 3.9.2. Refs #185.
+ [geier]
+
+- update to version 3.9.2 (2016-02-05)
+ - Defined test_suite in setup.py. Now tests can be run via python setup.py
+ test. [geier]
+ - Fixed cal.Component.from_ical() representing an unknown component as one of
+ the known. [stlaz]
+ - Fixed possible IndexError exception during parsing of an ical string. [stlaz]
+ - When doing a boolean test on icalendar.cal.Component, always return True.
+ Before it was returning False due to CaselessDict, if it didn’t contain any
+ items. [stlaz]
+ - Fixed date-time being recognized as date or time during parsing. Added
+ better error handling to parsing from ical strings. [stlaz]
+ - Added __version__ attribute to init.py. [TomTry]
+ - Documentation fixes. [TomTry]
+ - Pep 8, UTF 8 headers, dict/list calls to literals. [thet]
+
+-------------------------------------------------------------------
Old:
----
icalendar-3.9.1.tar.gz
New:
----
icalendar-3.11.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-icalendar.spec ++++++
--- /var/tmp/diff_new_pack.OpiTSk/_old 2017-01-25 23:26:21.887372063 +0100
+++ /var/tmp/diff_new_pack.OpiTSk/_new 2017-01-25 23:26:21.891371460 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-icalendar
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 7/2011 - now open-slx GmbH <Sascha.Manns(a)open-slx.de>
# Copyright (c) 2009 - 7/2011 Sascha Manns <saigkill(a)opensuse.org>
#
@@ -20,14 +20,14 @@
%define modname icalendar
Name: python-%{modname}
-Version: 3.9.1
+Version: 3.11.2
Release: 0
Summary: Python parser/generator of iCalendar files package
+# please see https://github.com/collective/icalendar/issues/2 for re-licensing discussion
License: BSD-2-Clause
Group: Development/Languages/Python
-# please see https://github.com/collective/icalendar/issues/2 for re-licensing discussion
Url: http://icalendar.readthedocs.org
-Source0: https://pypi.python.org/packages/source/i/icalendar/%{modname}-%{version}.t…
+Source0: https://pypi.io/packages/source/i/icalendar/%{modname}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: fdupes
BuildRequires: python-devel
++++++ icalendar-3.9.1.tar.gz -> icalendar-3.11.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/CHANGES.rst new/icalendar-3.11.2/CHANGES.rst
--- old/icalendar-3.9.1/CHANGES.rst 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/CHANGES.rst 2017-01-12 17:33:28.000000000 +0100
@@ -1,7 +1,96 @@
-
Changelog
=========
+3.11.2 (2017-01-12)
+-------------------
+
+Bug fixes:
+
+- Run tests with python 3.5 and 3.6.
+ [geier]
+
+- Allow tests failing with pypy3 on travis.ci.
+ [geier]
+
+
+3.11.1 (2016-12-19)
+-------------------
+
+Bug fixes:
+
+- Encode error message before adding it to the stack of collected error messages.
+
+
+3.11 (2016-11-18)
+-----------------
+
+Fixes:
+
+- Successfully test with pypy and pypy3. [gforcada]
+
+- Minor documentation update. [tpltnt]
+
+
+3.10 (2016-05-26)
+-----------------
+
+New:
+
+- Updated components description to better comply with RFC 5545.
+ Refs #183.
+ [stlaz]
+
+- Added PERIOD value type to date types.
+ Also fixes incompatibilities described in #184.
+ Refs #189.
+ [stlaz]
+
+Fixes:
+
+- Fix testsuite for use with ``dateutil>=2.5``.
+ Refs #195.
+ [untitaker]
+
+- Reintroduce cal.Component.is_broken that was removed with 3.9.2.
+ Refs #185.
+ [geier]
+
+
+3.9.2 (2016-02-05)
+------------------
+
+New:
+
+- Defined ``test_suite`` in setup.py.
+ Now tests can be run via ``python setup.py test``.
+ [geier]
+
+Fixes:
+
+- Fixed cal.Component.from_ical() representing an unknown component as one of the known.
+ [stlaz]
+
+- Fixed possible IndexError exception during parsing of an ical string.
+ [stlaz]
+
+- When doing a boolean test on ``icalendar.cal.Component``, always return ``True``.
+ Before it was returning ``False`` due to CaselessDict, if it didn't contain any items.
+ [stlaz]
+
+- Fixed date-time being recognized as date or time during parsing.
+ Added better error handling to parsing from ical strings.
+ [stlaz]
+
+- Added __version__ attribute to init.py.
+ [TomTry]
+
+- Documentation fixes.
+ [TomTry]
+
+- Pep 8, UTF 8 headers, dict/list calls to literals.
+ [thet]
+
+
3.9.1 (2015-09-08)
------------------
@@ -237,7 +326,7 @@
- Use @staticmethod decorator instead of wrapper function.
[warvariuc, thet]
-- Extend quoting of parameter values to all of those characters: ",;: ’'".
+- Extend quoting of parameter values to all of those characters: ",;: â'".
This fixes an outlook incompatibility with some characters. Fixes: #79,
Fixes: #81.
[warvariuc]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/PKG-INFO new/icalendar-3.11.2/PKG-INFO
--- old/icalendar-3.9.1/PKG-INFO 2015-09-08 16:08:12.000000000 +0200
+++ new/icalendar-3.11.2/PKG-INFO 2017-01-12 17:33:29.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: icalendar
-Version: 3.9.1
+Version: 3.11.2
Summary: iCalendar parser/generator
Home-page: https://github.com/collective/icalendar
Author: Plone Foundation
@@ -105,10 +105,99 @@
--------------------------------------------------
TOTAL 1152 81 93%
-
Changelog
=========
+ 3.11.2 (2017-01-12)
+ -------------------
+
+ Bug fixes:
+
+ - Run tests with python 3.5 and 3.6.
+ [geier]
+
+ - Allow tests failing with pypy3 on travis.ci.
+ [geier]
+
+
+ 3.11.1 (2016-12-19)
+ -------------------
+
+ Bug fixes:
+
+ - Encode error message before adding it to the stack of collected error messages.
+
+
+ 3.11 (2016-11-18)
+ -----------------
+
+ Fixes:
+
+ - Successfully test with pypy and pypy3. [gforcada]
+
+ - Minor documentation update. [tpltnt]
+
+
+ 3.10 (2016-05-26)
+ -----------------
+
+ New:
+
+ - Updated components description to better comply with RFC 5545.
+ Refs #183.
+ [stlaz]
+
+ - Added PERIOD value type to date types.
+ Also fixes incompatibilities described in #184.
+ Refs #189.
+ [stlaz]
+
+ Fixes:
+
+ - Fix testsuite for use with ``dateutil>=2.5``.
+ Refs #195.
+ [untitaker]
+
+ - Reintroduce cal.Component.is_broken that was removed with 3.9.2.
+ Refs #185.
+ [geier]
+
+
+ 3.9.2 (2016-02-05)
+ ------------------
+
+ New:
+
+ - Defined ``test_suite`` in setup.py.
+ Now tests can be run via ``python setup.py test``.
+ [geier]
+
+ Fixes:
+
+ - Fixed cal.Component.from_ical() representing an unknown component as one of the known.
+ [stlaz]
+
+ - Fixed possible IndexError exception during parsing of an ical string.
+ [stlaz]
+
+ - When doing a boolean test on ``icalendar.cal.Component``, always return ``True``.
+ Before it was returning ``False`` due to CaselessDict, if it didn't contain any items.
+ [stlaz]
+
+ - Fixed date-time being recognized as date or time during parsing.
+ Added better error handling to parsing from ical strings.
+ [stlaz]
+
+ - Added __version__ attribute to init.py.
+ [TomTry]
+
+ - Documentation fixes.
+ [TomTry]
+
+ - Pep 8, UTF 8 headers, dict/list calls to literals.
+ [thet]
+
+
3.9.1 (2015-09-08)
------------------
@@ -344,7 +433,7 @@
- Use @staticmethod decorator instead of wrapper function.
[warvariuc, thet]
- - Extend quoting of parameter values to all of those characters: ",;: ’'".
+ - Extend quoting of parameter values to all of those characters: ",;: â'".
This fixes an outlook incompatibility with some characters. Fixes: #79,
Fixes: #81.
[warvariuc]
@@ -637,6 +726,8 @@
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/docs/credits.rst new/icalendar-3.11.2/docs/credits.rst
--- old/icalendar-3.9.1/docs/credits.rst 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/docs/credits.rst 2017-01-12 17:33:28.000000000 +0100
@@ -36,6 +36,7 @@
- Ronan Dunklau <ronan(a)dunklau.fr>
- Russ <russ(a)rw.id.au>
- Sidnei da Silva <sidnei(a)enfoldsystems.com>
+- Stanislav Láznička <slaznick(a)redhat.com>
- Stanislav Ochotnicky <sochotnicky(a)redhat.com>
- Stefan Schwarzer <sschwarzer(a)sschwarzer.net>
- Thomas Bruederli <thomas(a)roundcube.net>
@@ -49,6 +50,8 @@
- spanktar <spanky(a)kapanka.com>
- tgecho <tgecho(a)gmail.com>
- tisto <tisto(a)plone.org>
+- TomTry <tom.try(a)gmail.com>
+- Andreas Ruppen <andreas.ruppen(a)gmail.com>
Find out who contributed::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/docs/install.rst new/icalendar-3.11.2/docs/install.rst
--- old/icalendar-3.9.1/docs/install.rst 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/docs/install.rst 2017-01-12 17:33:28.000000000 +0100
@@ -5,7 +5,7 @@
python setup.py install
-If installation is successful, you be able to import the iCalendar
+If installation is successful, you will be able to import the iCalendar
package, like this::
>>> import icalendar
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/docs/usage.rst new/icalendar-3.11.2/docs/usage.rst
--- old/icalendar-3.9.1/docs/usage.rst 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/docs/usage.rst 2017-01-12 17:33:28.000000000 +0100
@@ -58,7 +58,7 @@
END:VCALENDAR
Inside the components there are properties with values. The values
-have special types. like integer, text, datetime etc. These values are
+have special types. Like integer, text, datetime etc. these values are
encoded in a special text format in an iCalendar file.
There are methods for converting to and from these encodings in the package.
@@ -170,8 +170,8 @@
Property values are utf-8 encoded strings.
This is impractical if you want to use the data for further
-computation. Eg. the datetime format looks like this:
-'20050404T080000'. But the package makes it simple to Parse and
+computation. The datetime format for example looks like this:
+'20050404T080000'. But the package makes it simple to parse and
generate iCalendar formatted strings.
Basically you can make the add() method do the thinking, or you can do it
@@ -256,7 +256,7 @@
-------
Here is an example generating a complete iCal calendar file with a
-single event that can be loaded into the Mozilla calendar
+single event that can be loaded into the Mozilla calendar.
Init the calendar::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/setup.cfg new/icalendar-3.11.2/setup.cfg
--- old/icalendar-3.9.1/setup.cfg 2015-09-08 16:08:12.000000000 +0200
+++ new/icalendar-3.11.2/setup.cfg 2017-01-12 17:33:29.000000000 +0100
@@ -1,3 +1,12 @@
+[check-manifest]
+ignore =
+ *.cfg
+ bootstrap.py
+ requirements_docs.txt
+
+[zest.releaser]
+python-file-with-version = src/icalendar/__init__.py
+
[egg_info]
tag_build =
tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/setup.py new/icalendar-3.11.2/setup.py
--- old/icalendar-3.9.1/setup.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/setup.py 2017-01-12 17:33:28.000000000 +0100
@@ -1,9 +1,17 @@
+# -*- coding: utf-8 -*-
import codecs
import setuptools
import sys
+import re
+import ast
+
+_version_re = re.compile(r'__version__\s+=\s+(.*)')
+
+with open('src/icalendar/__init__.py', 'rb') as f:
+ version = str(ast.literal_eval(_version_re.search(
+ f.read().decode('utf-8')).group(1)))
-version = '3.9.1'
shortdesc = 'iCalendar parser/generator'
longdesc = codecs.open('README.rst', encoding='utf-8').read()
longdesc += codecs.open('CHANGES.rst', encoding='utf-8').read()
@@ -33,6 +41,8 @@
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
"Programming Language :: Python",
+ "Programming Language :: Python :: Implementation :: CPython",
+ "Programming Language :: Python :: Implementation :: PyPy",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
@@ -54,5 +64,6 @@
install_requires=install_requires,
extras_require={
'test': tests_require
- }
+ },
+ test_suite='icalendar.tests'
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/__init__.py new/icalendar-3.11.2/src/icalendar/__init__.py
--- old/icalendar-3.9.1/src/icalendar/__init__.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/__init__.py 2017-01-12 17:33:28.000000000 +0100
@@ -1,3 +1,6 @@
+# -*- coding: utf-8 -*-
+__version__ = '3.11.2'
+
from icalendar.cal import (
Calendar,
Event,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/cal.py new/icalendar-3.11.2/src/icalendar/cal.py
--- old/icalendar-3.9.1/src/icalendar/cal.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/cal.py 2017-01-12 17:33:28.000000000 +0100
@@ -20,6 +20,8 @@
import dateutil.rrule
from pytz.tzinfo import DstTzInfo
+from icalendar.compat import unicode_type
+
######################################
# The component factory
@@ -72,7 +74,7 @@
# component, we will silently ignore
# it, rather than let the exception
# propagate upwards
- # not_compliant = [''] # List of non-compliant properties.
+ # not_compliant = [''] # List of non-compliant properties.
def __init__(self, *args, **kwargs):
"""Set keys to upper for initial dict.
@@ -80,8 +82,8 @@
super(Component, self).__init__(*args, **kwargs)
# set parameters here for properties that use non-default values
self.subcomponents = [] # Components can be nested.
- self.is_broken = False # True if we ignored an exception while
- # parsing a property
+ self.errors = [] # If we ignored exception(s) while
+ # parsing a property, contains error strings
# def is_compliant(self, name):
# """Returns True is the given property name is compliant with the
@@ -93,6 +95,23 @@
# """
# return name in not_compliant
+ def __bool__(self):
+ """Returns True, CaselessDict would return False if it had no items.
+ """
+ return True
+
+ # python 2 compatibility
+ __nonzero__ = __bool__
+
+ def is_empty(self):
+ """Returns True if Component has no items or subcomponents, else False.
+ """
+ return True if not (list(self.values()) + self.subcomponents) else False # noqa
+
+ @property
+ def is_broken(self):
+ return bool(self.errors)
+
#############################
# handling of property values
@@ -309,14 +328,14 @@
try:
name, params, vals = line.parts()
- except ValueError:
+ except ValueError as e:
# if unable to parse a line within a component
# that ignores exceptions, mark the component
# as broken and skip the line. otherwise raise.
component = stack[-1] if stack else None
if not component or not component.ignore_exceptions:
raise
- component.is_broken = True
+ component.errors.append((None, unicode_type(e)))
continue
uname = name.upper()
@@ -325,7 +344,11 @@
# try and create one of the components defined in the spec,
# otherwise get a general Components for robustness.
c_name = vals.upper()
- c_class = component_factory.get(c_name, cls)
+ c_class = component_factory.get(c_name, Component)
+ # If component factory cannot resolve ``c_name``, the generic
+ # ``Component`` class is used which does not have the name set.
+ # That's opposed to the usage of ``cls``, which represents a
+ # more concrete subclass with a name set (e.g. VCALENDAR).
component = c_class()
if not getattr(component, 'name', ''): # undefined components
component.name = c_name
@@ -338,8 +361,7 @@
if not stack: # we are at the end
comps.append(component)
else:
- if not component.is_broken:
- stack[-1].add_component(component)
+ stack[-1].add_component(component)
if vals == 'VTIMEZONE' and \
'TZID' in component and \
component['TZID'] not in pytz.all_timezones and \
@@ -348,7 +370,10 @@
# we are adding properties to the current top of the stack
else:
factory = types_factory.for_property(name)
- component = stack[-1]
+ component = stack[-1] if stack else None
+ if not component:
+ raise ValueError('Property "{prop}" does not have '
+ 'a parent component.'.format(prop=name))
datetime_names = ('DTSTART', 'DTEND', 'RECURRENCE-ID', 'DUE',
'FREEBUSY', 'RDATE', 'EXDATE')
try:
@@ -356,10 +381,11 @@
vals = factory(factory.from_ical(vals, params['TZID']))
else:
vals = factory(factory.from_ical(vals))
- except ValueError:
+ except ValueError as e:
if not component.ignore_exceptions:
raise
- component.is_broken = True
+ component.errors.append((uname, unicode_type(e)))
+ component.add(name, None, encode=0)
else:
vals.params = params
component.add(name, vals, encode=0)
@@ -412,7 +438,7 @@
#######################################
-# components defined in RFC 2445
+# components defined in RFC 5545
class Event(Component):
@@ -420,21 +446,21 @@
canonical_order = (
'SUMMARY', 'DTSTART', 'DTEND', 'DURATION', 'DTSTAMP',
- 'UID', 'RECURRENCE-ID', 'SEQUENCE',
- 'RRULE' 'EXRULE', 'RDATE', 'EXDATE',
+ 'UID', 'RECURRENCE-ID', 'SEQUENCE', 'RRULE', 'RDATE',
+ 'EXDATE',
)
- required = ('UID',)
+ required = ('UID', 'DTSTAMP',)
singletons = (
'CLASS', 'CREATED', 'DESCRIPTION', 'DTSTART', 'GEO', 'LAST-MODIFIED',
'LOCATION', 'ORGANIZER', 'PRIORITY', 'DTSTAMP', 'SEQUENCE', 'STATUS',
'SUMMARY', 'TRANSP', 'URL', 'RECURRENCE-ID', 'DTEND', 'DURATION',
- 'DTSTART',
+ 'UID',
)
- exclusive = ('DTEND', 'DURATION', )
+ exclusive = ('DTEND', 'DURATION',)
multiple = (
'ATTACH', 'ATTENDEE', 'CATEGORIES', 'COMMENT', 'CONTACT', 'EXDATE',
- 'EXRULE', 'RSTATUS', 'RELATED', 'RESOURCES', 'RDATE', 'RRULE'
+ 'RSTATUS', 'RELATED', 'RESOURCES', 'RDATE', 'RRULE'
)
ignore_exceptions = True
@@ -443,7 +469,7 @@
name = 'VTODO'
- required = ('UID',)
+ required = ('UID', 'DTSTAMP',)
singletons = (
'CLASS', 'COMPLETED', 'CREATED', 'DESCRIPTION', 'DTSTAMP', 'DTSTART',
'GEO', 'LAST-MODIFIED', 'LOCATION', 'ORGANIZER', 'PERCENT-COMPLETE',
@@ -453,7 +479,7 @@
exclusive = ('DUE', 'DURATION',)
multiple = (
'ATTACH', 'ATTENDEE', 'CATEGORIES', 'COMMENT', 'CONTACT', 'EXDATE',
- 'EXRULE', 'RSTATUS', 'RELATED', 'RESOURCES', 'RDATE', 'RRULE'
+ 'RSTATUS', 'RELATED', 'RESOURCES', 'RDATE', 'RRULE'
)
@@ -461,15 +487,14 @@
name = 'VJOURNAL'
- required = ('UID',)
+ required = ('UID', 'DTSTAMP',)
singletons = (
- 'CLASS', 'CREATED', 'DESCRIPTION', 'DTSTART', 'DTSTAMP',
- 'LAST-MODIFIED', 'ORGANIZER', 'RECURRENCE-ID', 'SEQUENCE', 'STATUS',
- 'SUMMARY', 'UID', 'URL',
+ 'CLASS', 'CREATED', 'DTSTART', 'DTSTAMP', 'LAST-MODIFIED', 'ORGANIZER',
+ 'RECURRENCE-ID', 'SEQUENCE', 'STATUS', 'SUMMARY', 'UID', 'URL',
)
multiple = (
'ATTACH', 'ATTENDEE', 'CATEGORIES', 'COMMENT', 'CONTACT', 'EXDATE',
- 'EXRULE', 'RELATED', 'RDATE', 'RRULE', 'RSTATUS',
+ 'RELATED', 'RDATE', 'RRULE', 'RSTATUS', 'DESCRIPTION',
)
@@ -477,9 +502,9 @@
name = 'VFREEBUSY'
- required = ('UID',)
+ required = ('UID', 'DTSTAMP',)
singletons = (
- 'CONTACT', 'DTSTART', 'DTEND', 'DURATION', 'DTSTAMP', 'ORGANIZER',
+ 'CONTACT', 'DTSTART', 'DTEND', 'DTSTAMP', 'ORGANIZER',
'UID', 'URL',
)
multiple = ('ATTENDEE', 'COMMENT', 'FREEBUSY', 'RSTATUS',)
@@ -487,8 +512,8 @@
class Timezone(Component):
name = 'VTIMEZONE'
- canonical_order = ('TZID', 'STANDARD', 'DAYLIGHT',)
- required = ('TZID', 'STANDARD', 'DAYLIGHT',)
+ canonical_order = ('TZID',)
+ required = ('TZID',) # it also requires one of components DAYLIGHT and STANDARD
singletons = ('TZID', 'LAST-MODIFIED', 'TZURL',)
@staticmethod
@@ -553,8 +578,8 @@
"""convert this VTIMEZONE component to a pytz.timezone object
"""
zone = str(self['TZID'])
- transitions = list()
- dst = dict()
+ transitions = []
+ dst = {}
for component in self.walk():
if type(component) == Timezone:
continue
@@ -579,7 +604,7 @@
# (utcoffset, dstoffset, name)
# dstoffset = 0, if current transition is to standard time
# = this_utcoffset - prev_standard_utcoffset, otherwise
- transition_info = list()
+ transition_info = []
for num, (transtime, osfrom, osto, name) in enumerate(transitions):
dst_offset = False
if not dst[name]:
@@ -599,10 +624,11 @@
break
transition_info.append((osto, dst_offset, name))
- cls = type(zone, (DstTzInfo,), dict(
- zone=zone,
- _utc_transition_times=transition_times,
- _transition_info=transition_info))
+ cls = type(zone, (DstTzInfo,), {
+ 'zone': zone,
+ '_utc_transition_times': transition_times,
+ '_transition_info': transition_info
+ })
return cls()
@@ -610,24 +636,28 @@
class TimezoneStandard(Component):
name = 'STANDARD'
required = ('DTSTART', 'TZOFFSETTO', 'TZOFFSETFROM')
- singletons = ('DTSTART', 'TZOFFSETTO', 'TZOFFSETFROM', 'RRULE')
- multiple = ('COMMENT', 'RDATE', 'TZNAME')
+ singletons = ('DTSTART', 'TZOFFSETTO', 'TZOFFSETFROM',)
+ multiple = ('COMMENT', 'RDATE', 'TZNAME', 'RRULE', 'EXDATE')
class TimezoneDaylight(Component):
name = 'DAYLIGHT'
- required = ('DTSTART', 'TZOFFSETTO', 'TZOFFSETFROM')
- singletons = ('DTSTART', 'TZOFFSETTO', 'TZOFFSETFROM', 'RRULE')
- multiple = ('COMMENT', 'RDATE', 'TZNAME')
+ required = TimezoneStandard.required
+ singletons = TimezoneStandard.singletons
+ multiple = TimezoneStandard.multiple
class Alarm(Component):
name = 'VALARM'
- # not quite sure about these ...
+ # some properties MAY/MUST/MUST NOT appear depending on ACTION value
required = ('ACTION', 'TRIGGER',)
- singletons = ('ATTACH', 'ACTION', 'TRIGGER', 'DURATION', 'REPEAT',)
- inclusive = (('DURATION', 'REPEAT',),)
+ singletons = (
+ 'ATTACH', 'ACTION', 'DESCRIPTION', 'SUMMARY', 'TRIGGER',
+ 'DURATION', 'REPEAT',
+ )
+ inclusive = (('DURATION', 'REPEAT',), ('SUMMARY', 'ATTENDEE',))
+ multiple = ('ATTENDEE', 'ATTACH')
class Calendar(Component):
@@ -635,9 +665,8 @@
"""
name = 'VCALENDAR'
canonical_order = ('VERSION', 'PRODID', 'CALSCALE', 'METHOD',)
- required = ('prodid', 'version', )
- singletons = ('prodid', 'version', )
- multiple = ('calscale', 'method', )
+ required = ('PRODID', 'VERSION', )
+ singletons = ('PRODID', 'VERSION', 'CALSCALE', 'METHOD')
# These are read only singleton, so one instance is enough for the module
types_factory = TypesFactory()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/caselessdict.py new/icalendar-3.11.2/src/icalendar/caselessdict.py
--- old/icalendar-3.9.1/src/icalendar/caselessdict.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/caselessdict.py 2017-01-12 17:33:28.000000000 +0100
@@ -21,8 +21,8 @@
def canonsort_items(dict1, canonical_order=None):
"""Returns a list of items from dict1, sorted by canonical_order.
"""
- return [(k, dict1[k]) for \
- k in canonsort_keys(dict1.keys(), canonical_order)]
+ return [(k, dict1[k]) for k
+ in canonsort_keys(dict1.keys(), canonical_order)]
class CaselessDict(OrderedDict):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/compat.py new/icalendar-3.11.2/src/icalendar/compat.py
--- old/icalendar-3.9.1/src/icalendar/compat.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/compat.py 2017-01-12 17:33:28.000000000 +0100
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
import sys
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/parser.py new/icalendar-3.11.2/src/icalendar/parser.py
--- old/icalendar-3.9.1/src/icalendar/parser.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/parser.py 2017-01-12 17:33:28.000000000 +0100
@@ -78,8 +78,9 @@
except (UnicodeEncodeError, UnicodeDecodeError):
pass
else:
- return fold_sep.join(line[i:i+limit-1] for i in
- range(0, len(line), limit-1))
+ return fold_sep.join(
+ line[i:i + limit - 1] for i in range(0, len(line), limit - 1)
+ )
ret_chars = []
byte_count = 0
@@ -341,7 +342,7 @@
return (name, params, values)
except ValueError as exc:
raise ValueError(
- u"Content line could not be parsed into parts: %r: %s"
+ u"Content line could not be parsed into parts: '%s': %s"
% (self, exc)
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/parser_tools.py new/icalendar-3.11.2/src/icalendar/parser_tools.py
--- old/icalendar-3.9.1/src/icalendar/parser_tools.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/parser_tools.py 2017-01-12 17:33:28.000000000 +0100
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from icalendar import compat
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/prop.py new/icalendar-3.11.2/src/icalendar/prop.py
--- old/icalendar-3.9.1/src/icalendar/prop.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/prop.py 2017-01-12 17:33:28.000000000 +0100
@@ -18,17 +18,17 @@
###########################################################################
-iCalendar properties has values. The values are strongly typed. This module
-defines these types, calling val.to_ical() on them, Will render them as defined
+iCalendar properties have values. The values are strongly typed. This module
+defines these types, calling val.to_ical() on them will render them as defined
in rfc2445.
If you pass any of these classes a Python primitive, you will have an object
that can render itself as iCalendar formatted date.
-Property Value Data Types starts with a 'v'. they all have an to_ical() and
+Property Value Data Types start with a 'v'. they all have an to_ical() and
from_ical() method. The to_ical() method generates a text string in the
iCalendar format. The from_ical() method can parse this format and return a
-primitive Python datatype. So it should allways be true that:
+primitive Python datatype. So it should always be true that:
x == vDataType.from_ical(VDataType(x).to_ical())
@@ -273,14 +273,17 @@
So this is practical.
"""
def __init__(self, dt):
- if not isinstance(dt, (datetime, date, timedelta, time)):
- raise ValueError('You must use datetime, date, timedelta or time')
+ if not isinstance(dt, (datetime, date, timedelta, time, tuple)):
+ raise ValueError('You must use datetime, date, timedelta, '
+ 'time or tuple (for periods)')
if isinstance(dt, datetime):
- self.params = Parameters(dict(value='DATE-TIME'))
+ self.params = Parameters({'value': 'DATE-TIME'})
elif isinstance(dt, date):
- self.params = Parameters(dict(value='DATE'))
+ self.params = Parameters({'value': 'DATE'})
elif isinstance(dt, time):
- self.params = Parameters(dict(value='TIME'))
+ self.params = Parameters({'value': 'TIME'})
+ elif isinstance(dt, tuple):
+ self.params = Parameters({'value': 'PERIOD'})
if (isinstance(dt, datetime) or isinstance(dt, time))\
and getattr(dt, 'tzinfo', False):
@@ -303,8 +306,10 @@
return vDuration(dt).to_ical()
elif isinstance(dt, time):
return vTime(dt).to_ical()
+ elif isinstance(dt, tuple) and len(dt) == 2:
+ return vPeriod(dt).to_ical()
else:
- raise ValueError('Unknown date type')
+ raise ValueError('Unknown date type: {}'.format(type(dt)))
@classmethod
def from_ical(cls, ical, timezone=None):
@@ -313,13 +318,19 @@
u = ical.upper()
if u.startswith(('P', '-P', '+P')):
return vDuration.from_ical(ical)
- try:
+ if '/' in u:
+ return vPeriod.from_ical(ical)
+
+ if len(ical) in (15, 16):
return vDatetime.from_ical(ical, timezone=timezone)
- except ValueError:
- try:
- return vDate.from_ical(ical)
- except ValueError:
- return vTime.from_ical(ical)
+ elif len(ical) == 8:
+ return vDate.from_ical(ical)
+ elif len(ical) in (6, 7):
+ return vTime.from_ical(ical)
+ else:
+ raise ValueError(
+ "Expected datetime, date, or time, got: '%s'" % ical
+ )
class vDate(object):
@@ -329,7 +340,7 @@
if not isinstance(dt, date):
raise ValueError('Value MUST be a date instance')
self.dt = dt
- self.params = Parameters(dict(value='DATE'))
+ self.params = Parameters({'value': 'DATE'})
def to_ical(self):
s = "%04d%02d%02d" % (self.dt.year, self.dt.month, self.dt.day)
@@ -555,7 +566,7 @@
sign = match['signal']
weekday = match['weekday']
relative = match['relative']
- if not weekday in vWeekday.week_days or sign not in '+-':
+ if weekday not in vWeekday.week_days or sign not in '+-':
raise ValueError('Expected weekday abbrevation, got: %s' % self)
self.relative = relative and int(relative) or None
self.params = Parameters()
@@ -589,7 +600,7 @@
def __new__(cls, value, encoding=DEFAULT_ENCODING):
value = to_unicode(value, encoding=encoding)
self = super(vFrequency, cls).__new__(cls, value)
- if not self in vFrequency.frequencies:
+ if self not in vFrequency.frequencies:
raise ValueError('Expected frequency, got: %s' % self)
self.params = Parameters()
return self
@@ -713,7 +724,7 @@
self.dt = args[0]
else:
self.dt = time(*args)
- self.params = Parameters(dict(value='TIME'))
+ self.params = Parameters({'value': 'TIME'})
def to_ical(self):
return self.dt.strftime("%H%M%S")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/tests/__init__.py new/icalendar-3.11.2/src/icalendar/tests/__init__.py
--- old/icalendar-3.9.1/src/icalendar/tests/__init__.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/tests/__init__.py 2017-01-12 17:33:28.000000000 +0100
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
# unittest/unittest2 importer
import unittest
if not hasattr(unittest.TestCase, 'assertIsNotNone'):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/tests/apple_xlocation_test.py new/icalendar-3.11.2/src/icalendar/tests/apple_xlocation_test.py
--- old/icalendar-3.9.1/src/icalendar/tests/apple_xlocation_test.py 1970-01-01 01:00:00.000000000 +0100
+++ new/icalendar-3.11.2/src/icalendar/tests/apple_xlocation_test.py 2017-01-12 17:33:28.000000000 +0100
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+from icalendar.tests import unittest
+
+import datetime
+import icalendar
+import os
+import pytz
+
+class TestEncoding(unittest.TestCase):
+
+ def test_apple_xlocation(self):
+ """
+ Test if error messages are encode properly.
+ """
+ try:
+ directory = os.path.dirname(__file__)
+ data = open(os.path.join(directory, 'x_location.ics'), 'rb').read()
+ cal = icalendar.Calendar.from_ical(data)
+ for event in cal.walk('vevent'):
+ self.assertEqual(len(event.errors), 1, 'Got too many errors')
+ error = event.errors[0][1]
+ self.assertTrue(error.startswith(u'Content line could not be parsed into parts'))
+
+ except UnicodeEncodeError as e:
+ self.fail("There is something wrong with encoding in the collected error messages")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/tests/test_fixed_issues.py new/icalendar-3.11.2/src/icalendar/tests/test_fixed_issues.py
--- old/icalendar-3.9.1/src/icalendar/tests/test_fixed_issues.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/tests/test_fixed_issues.py 2017-01-12 17:33:28.000000000 +0100
@@ -200,7 +200,11 @@
END:VEVENT"""
event = icalendar.Calendar.from_ical(ical_str)
self.assertTrue(isinstance(event, icalendar.Event))
- self.assertTrue(event.is_broken)
+ self.assertTrue(event.is_broken) # REMOVE FOR NEXT MAJOR RELEASE
+ self.assertEqual(
+ event.errors,
+ [(None, "Content line could not be parsed into parts: 'X': Invalid content line")] # noqa
+ )
def test_issue_104__no_ignore_exceptions(self):
"""
@@ -334,3 +338,97 @@
recur.to_ical(),
b'FREQ=YEARLY;BYDAY=1SU;BYMONTH=11'
)
+
+ def test_issue_168(self):
+ """Issue #168 - Parsing invalid icalendars fails without any warning
+ https://github.com/collective/icalendar/issues/168
+ """
+
+ event_str = """
+BEGIN:VCALENDAR
+BEGIN:VEVENT
+DTEND:20150905T100000Z
+DTSTART:20150905T090000Z
+X-APPLE-RADIUS=49.91307046514149
+UID:123
+END:VEVENT
+END:VCALENDAR"""
+
+ calendar = icalendar.Calendar.from_ical(event_str)
+ self.assertEqual(
+ calendar.to_ical(),
+ b'BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20150905T090000Z\r\n'
+ b'DTEND:20150905T100000Z\r\nUID:123\r\n'
+ b'END:VEVENT\r\nEND:VCALENDAR\r\n'
+ )
+
+ def test_index_error_issue(self):
+ """Found an issue where from_ical() would raise IndexError for
+ properties without parent components.
+ https://github.com/collective/icalendar/pull/179
+ """
+
+ with self.assertRaises(ValueError):
+ icalendar.Calendar.from_ical('VERSION:2.0')
+
+ def test_issue_178(self):
+ """Issue #178 - A component with an unknown/invalid name is represented
+ as one of the known components, the information about the original
+ component name is lost.
+ https://github.com/collective/icalendar/issues/178
+ https://github.com/collective/icalendar/pull/180
+ """
+
+ # Parsing of a nonstandard component
+ ical_str = '\r\n'.join(['BEGIN:MYCOMP', 'END:MYCOMP'])
+ cal = icalendar.Calendar.from_ical(ical_str)
+ self.assertEqual(cal.to_ical(),
+ b'BEGIN:MYCOMP\r\nEND:MYCOMP\r\n')
+
+ # Nonstandard component inside other components, also has properties
+ ical_str = '\r\n'.join(['BEGIN:VCALENDAR',
+ 'BEGIN:UNKNOWN',
+ 'UID:1234',
+ 'END:UNKNOWN',
+ 'END:VCALENDAR'])
+
+ cal = icalendar.Calendar.from_ical(ical_str)
+ self.assertEqual(cal.errors, [])
+ self.assertEqual(cal.to_ical(),
+ b'BEGIN:VCALENDAR\r\nBEGIN:UNKNOWN\r\nUID:1234\r\n'
+ b'END:UNKNOWN\r\nEND:VCALENDAR\r\n')
+
+ # Nonstandard component is able to contain other components
+ ical_str = '\r\n'.join(['BEGIN:MYCOMPTOO',
+ 'DTSTAMP:20150121T080000',
+ 'BEGIN:VEVENT',
+ 'UID:12345',
+ 'DTSTART:20150122',
+ 'END:VEVENT',
+ 'END:MYCOMPTOO'])
+ cal = icalendar.Calendar.from_ical(ical_str)
+ self.assertEqual(cal.errors, [])
+ self.assertEqual(cal.to_ical(),
+ b'BEGIN:MYCOMPTOO\r\nDTSTAMP:20150121T080000\r\n'
+ b'BEGIN:VEVENT\r\nDTSTART:20150122\r\nUID:12345\r\n'
+ b'END:VEVENT\r\nEND:MYCOMPTOO\r\n')
+
+ def test_issue_184(self):
+ """Issue #184 - Previous changes in code broke already broken
+ representation of PERIOD values - in a new way"""
+
+ ical_str = ['BEGIN:VEVENT',
+ 'DTSTAMP:20150219T133000',
+ 'DTSTART:20150219T133000',
+ 'UID:1234567',
+ 'RDATE;VALUE=PERIOD:20150219T133000/PT10H',
+ 'END:VEVENT']
+
+ event = icalendar.Event.from_ical('\r\n'.join(ical_str))
+ self.assertEqual(event.errors, [])
+ self.assertEqual(event.to_ical(),
+ b'BEGIN:VEVENT\r\nDTSTART:20150219T133000\r\n'
+ b'DTSTAMP:20150219T133000\r\nUID:1234567\r\n'
+ b'RDATE;VALUE=PERIOD:20150219T133000/PT10H\r\n'
+ b'END:VEVENT\r\n'
+ )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/tests/test_icalendar.py new/icalendar-3.11.2/src/icalendar/tests/test_icalendar.py
--- old/icalendar-3.9.1/src/icalendar/tests/test_icalendar.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/tests/test_icalendar.py 2017-01-12 17:33:28.000000000 +0100
@@ -1,4 +1,4 @@
-# coding: utf-8
+# -*- coding: utf-8 -*-
from icalendar.tests import unittest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/tests/test_multiple.py new/icalendar-3.11.2/src/icalendar/tests/test_multiple.py
--- old/icalendar-3.9.1/src/icalendar/tests/test_multiple.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/tests/test_multiple.py 2017-01-12 17:33:28.000000000 +0100
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from icalendar import Calendar
from icalendar.prop import vText
from icalendar.tests import unittest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/tests/test_property_params.py new/icalendar-3.11.2/src/icalendar/tests/test_property_params.py
--- old/icalendar-3.9.1/src/icalendar/tests/test_property_params.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/tests/test_property_params.py 2017-01-12 17:33:28.000000000 +0100
@@ -1,4 +1,4 @@
-# coding: utf-8
+# -*- coding: utf-8 -*-
from icalendar import Calendar
from icalendar import Event
from icalendar import Parameters
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/tests/test_time.py new/icalendar-3.11.2/src/icalendar/tests/test_time.py
--- old/icalendar-3.9.1/src/icalendar/tests/test_time.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/tests/test_time.py 2017-01-12 17:33:28.000000000 +0100
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from icalendar.tests import unittest
import datetime
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/tests/test_timezoned.py new/icalendar-3.11.2/src/icalendar/tests/test_timezoned.py
--- old/icalendar-3.9.1/src/icalendar/tests/test_timezoned.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/tests/test_timezoned.py 2017-01-12 17:33:28.000000000 +0100
@@ -135,8 +135,8 @@
# references: #73,7430b66862346fe3a6a100ab25e35a8711446717
date = dateutil.parser.parse('2012-08-30T22:41:00Z')
date2 = dateutil.parser.parse('2012-08-30T22:41:00 +02:00')
- self.assertTrue(date.tzinfo.__module__ == 'dateutil.tz')
- self.assertTrue(date2.tzinfo.__module__ == 'dateutil.tz')
+ self.assertTrue(date.tzinfo.__module__.startswith('dateutil.tz'))
+ self.assertTrue(date2.tzinfo.__module__.startswith('dateutil.tz'))
# make sure, it's parsed properly and doesn't throw an error
self.assertTrue(icalendar.vDDDTypes(date).to_ical()
@@ -161,16 +161,20 @@
# for reasons (tm) the locally installed version of the time zone
# database isn't always complete, therefore we only compare some
# transition times
- ny_transition_times = list()
- ny_transition_info = list()
+ ny_transition_times = []
+ ny_transition_info = []
for num, date in enumerate(pytz_new_york._utc_transition_times):
- if datetime.datetime(1967, 4, 30, 7, 0) <= date <= datetime.datetime(2037, 11, 1, 6, 0):
+ if datetime.datetime(1967, 4, 30, 7, 0)\
+ <= date <= datetime.datetime(2037, 11, 1, 6, 0):
ny_transition_times.append(date)
ny_transition_info.append(pytz_new_york._transition_info[num])
self.assertEqual(tz._utc_transition_times[:142], ny_transition_times)
self.assertEqual(tz._transition_info[0:142], ny_transition_info)
self.assertIn(
- (datetime.timedelta(-1, 72000), datetime.timedelta(0, 3600), 'EDT'),
+ (
+ datetime.timedelta(-1, 72000),
+ datetime.timedelta(0, 3600), 'EDT'
+ ),
tz._tzinfos.keys()
)
self.assertIn(
@@ -259,21 +263,58 @@
)
self.assertEqual(
tz._transition_info,
- [(datetime.timedelta(0, 43200), datetime.timedelta(0), 'custom_Pacific/Fiji_19151026T000000')] +
- 3 * [(datetime.timedelta(0, 46800), datetime.timedelta(0, 3600), 'custom_Pacific/Fiji_19981101T020000'),
- (datetime.timedelta(0, 43200), datetime.timedelta(0), 'custom_Pacific/Fiji_19990228T030000'), ] +
- 3 * [(datetime.timedelta(0, 46800), datetime.timedelta(0, 3600), 'custom_Pacific/Fiji_20101024T020000'),
- (datetime.timedelta(0, 43200), datetime.timedelta(0), 'custom_Pacific/Fiji_19990228T030000'), ] +
- 25 * [(datetime.timedelta(0, 46800), datetime.timedelta(0, 3600), 'custom_Pacific/Fiji_20101024T020000'),
- (datetime.timedelta(0, 43200), datetime.timedelta(0), 'custom_Pacific/Fiji_20140119T020000'), ] +
- [(datetime.timedelta(0, 46800), datetime.timedelta(0, 3600), 'custom_Pacific/Fiji_20101024T020000')]
+ [(
+ datetime.timedelta(0, 43200),
+ datetime.timedelta(0),
+ 'custom_Pacific/Fiji_19151026T000000'
+ )] +
+ 3 * [(
+ datetime.timedelta(0, 46800),
+ datetime.timedelta(0, 3600),
+ 'custom_Pacific/Fiji_19981101T020000'
+ ), (
+ datetime.timedelta(0, 43200),
+ datetime.timedelta(0),
+ 'custom_Pacific/Fiji_19990228T030000')
+ ] +
+ 3 * [(
+ datetime.timedelta(0, 46800),
+ datetime.timedelta(0, 3600),
+ 'custom_Pacific/Fiji_20101024T020000'
+ ), (
+ datetime.timedelta(0, 43200),
+ datetime.timedelta(0),
+ 'custom_Pacific/Fiji_19990228T030000'
+ )] +
+ 25 * [(
+ datetime.timedelta(0, 46800),
+ datetime.timedelta(0, 3600),
+ 'custom_Pacific/Fiji_20101024T020000'
+ ), (
+ datetime.timedelta(0, 43200),
+ datetime.timedelta(0),
+ 'custom_Pacific/Fiji_20140119T020000'
+ )] +
+ [(
+ datetime.timedelta(0, 46800),
+ datetime.timedelta(0, 3600),
+ 'custom_Pacific/Fiji_20101024T020000'
+ )]
)
self.assertIn(
- (datetime.timedelta(0, 46800), datetime.timedelta(0, 3600), 'custom_Pacific/Fiji_19981101T020000'),
+ (
+ datetime.timedelta(0, 46800),
+ datetime.timedelta(0, 3600),
+ 'custom_Pacific/Fiji_19981101T020000'
+ ),
tz._tzinfos.keys()
)
self.assertIn(
- (datetime.timedelta(0, 43200), datetime.timedelta(0), 'custom_Pacific/Fiji_19990228T030000'),
+ (
+ datetime.timedelta(0, 43200),
+ datetime.timedelta(0),
+ 'custom_Pacific/Fiji_19990228T030000'
+ ),
tz._tzinfos.keys()
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/tests/test_unit_cal.py new/icalendar-3.11.2/src/icalendar/tests/test_unit_cal.py
--- old/icalendar-3.9.1/src/icalendar/tests/test_unit_cal.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/tests/test_unit_cal.py 2017-01-12 17:33:28.000000000 +0100
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from datetime import datetime
from datetime import timedelta
from icalendar.tests import unittest
@@ -17,9 +18,14 @@
c = Component()
c.name = 'VCALENDAR'
+ self.assertTrue(c)
+ self.assertTrue(c.is_empty())
+
# Every key defines a property.A property can consist of either a
# single item. This can be set with a single value...
c['prodid'] = '-//max m//icalendar.mxm.dk/'
+ self.assertFalse(c.is_empty())
+
self.assertEqual(
c,
Calendar({'PRODID': '-//max m//icalendar.mxm.dk/'})
@@ -33,7 +39,7 @@
'PRODID': '-//max m//icalendar.mxm.dk/'})
)
- ### ADD MULTIPLE VALUES TO A PROPERTY
+ # ## ADD MULTIPLE VALUES TO A PROPERTY
# if you use the add method you don't have to considder if a value is
# a list or not.
@@ -389,8 +395,9 @@
directory = tempfile.mkdtemp()
open(os.path.join(directory, 'test.ics'), 'wb').write(cal.to_ical())
- # Parsing a complete calendar from a string will silently ignore bogus
- # events. The bogosity in the following is the third EXDATE: it has an
+ # Parsing a complete calendar from a string will silently ignore wrong
+ # events but adding the error information to the component's 'errors'
+ # attribute. The error in the following is the third EXDATE: it has an
# empty DATE.
s = '\r\n'.join(('BEGIN:VCALENDAR',
'PRODID:-//Google Inc//Google Calendar 70.9054//EN',
@@ -405,7 +412,7 @@
'EXDATE;VALUE=DATE:20080311',
'END:VEVENT',
'BEGIN:VEVENT',
- 'DESCRIPTION:Bogus event',
+ 'DESCRIPTION:Wrong event',
'DTSTART;VALUE=DATE:20080303',
'DTEND;VALUE=DATE:20080304',
'RRULE:FREQ=DAILY;UNTIL=20080323T235959Z',
@@ -416,4 +423,9 @@
self.assertEqual(
[e['DESCRIPTION'].to_ical()
for e in icalendar.cal.Calendar.from_ical(s).walk('VEVENT')],
- [b'Perfectly OK event'])
+ [b'Perfectly OK event', b'Wrong event'])
+ self.assertEqual(
+ [e.errors
+ for e in icalendar.cal.Calendar.from_ical(s).walk('VEVENT')],
+ [[], [('EXDATE', "Expected datetime, date, or time, got: ''")]]
+ )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/tests/test_unit_caselessdict.py new/icalendar-3.11.2/src/icalendar/tests/test_unit_caselessdict.py
--- old/icalendar-3.9.1/src/icalendar/tests/test_unit_caselessdict.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/tests/test_unit_caselessdict.py 2017-01-12 17:33:28.000000000 +0100
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from icalendar.tests import unittest
import icalendar
@@ -40,8 +41,9 @@
def test_caselessdict_canonsort_items(self):
canonsort_items = icalendar.caselessdict.canonsort_items
- d = dict(i=7, c='at', a=3.5, l=(2, 3), e=[4, 5], n=13, d={'x': 'y'},
- r=1.0)
+ d = dict(
+ i=7, c='at', a=3.5, l=(2, 3), e=[4, 5], n=13, d={'x': 'y'}, r=1.0
+ )
out = canonsort_items(d)
self.assertEqual(
@@ -59,7 +61,7 @@
def test_caselessdict_copy(self):
CaselessDict = icalendar.caselessdict.CaselessDict
-
+
original_dict = CaselessDict(key1='val1', key2='val2')
copied_dict = original_dict.copy()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/tests/test_unit_prop.py new/icalendar-3.11.2/src/icalendar/tests/test_unit_prop.py
--- old/icalendar-3.9.1/src/icalendar/tests/test_unit_prop.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/tests/test_unit_prop.py 2017-01-12 17:33:28.000000000 +0100
@@ -258,7 +258,7 @@
# Let's see how close we can get to one from the rfc:
# FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9;BYMINUTE=30
- r = dict(freq='yearly', interval=2)
+ r = dict({'freq': 'yearly', 'interval': 2})
r.update({
'bymonth': 1,
'byday': 'su',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/tests/test_unit_tools.py new/icalendar-3.11.2/src/icalendar/tests/test_unit_tools.py
--- old/icalendar-3.9.1/src/icalendar/tests/test_unit_tools.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/tests/test_unit_tools.py 2017-01-12 17:33:28.000000000 +0100
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from icalendar.tests import unittest
from icalendar.tools import UIDGenerator
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/tests/x_location.ics new/icalendar-3.11.2/src/icalendar/tests/x_location.ics
--- old/icalendar-3.9.1/src/icalendar/tests/x_location.ics 1970-01-01 01:00:00.000000000 +0100
+++ new/icalendar-3.11.2/src/icalendar/tests/x_location.ics 2017-01-12 17:33:28.000000000 +0100
@@ -0,0 +1,48 @@
+BEGIN:VCALENDAR
+PRODID:-//Google Inc//Google Calendar 70.9054//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+METHOD:PUBLISH
+X-WR-CALNAME:ITC
+X-WR-TIMEZONE:Europe/Zurich
+X-WR-CALDESC:ITC Bookings
+BEGIN:VTIMEZONE
+TZID:Europe/Zurich
+X-LIC-LOCATION:Europe/Zurich
+BEGIN:DAYLIGHT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+TZNAME:CEST
+DTSTART:19700329T020000
+RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
+END:DAYLIGHT
+BEGIN:STANDARD
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+TZNAME:CET
+DTSTART:19701025T030000
+RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTART;TZID=Europe/Zurich:20161028T140000
+DTEND;TZID=Europe/Zurich:20161028T143000
+RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
+DTSTAMP:20161031T192828Z
+UID:BFE33ADD-5553-48B5-B5A5-F9DA5CA4C393
+CREATED:20161029T121229Z
+DESCRIPTION:Some Description
+LAST-MODIFIED:20161029T121229Z
+LOCATION:Roadstar 16\n12764 Happyville\nDenmark
+SEQUENCE:0
+STATUS:CONFIRMED
+SUMMARY:Daily Sync
+TRANSP:OPAQUE
+X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-ADDRESS="Röadstar 16\n12764 Happyvi
+ lle\nDenmark";X-APPLE-MAPKIT-HANDLE=CAESARoSCWYTYFhHQBEGfw4hQCIBDQoHRGVubW
+ FyaxJES0hhcHB5dmlsbGUqSGFwcHl2aWxsZTIHSGFwcHl2aWxsZToEMTI3NjRCDQpSb2Fkc3Rh
+ cloCMTZiUm9hZHN0YXIgMTYBEU1vcmRvcgENCk1vcmRvcioSUm9hZHN0YXIgMTYyUm9hZHN0YX
+ IgMTYxMjc2NCBIYXBweXZpbGxlMgdEZW5tYXJrOThA=;X-APPLE-RADIUS=49.913058665846
+ 98;X-APPLE-REFERENCEFRAME=1;X-TITLE=:geo:52.382762,7.528319
+END:VEVENT
+END:VCALENDAR
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/timezone_cache.py new/icalendar-3.11.2/src/icalendar/timezone_cache.py
--- old/icalendar-3.9.1/src/icalendar/timezone_cache.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/timezone_cache.py 2017-01-12 17:33:28.000000000 +0100
@@ -1,3 +1,3 @@
# -*- coding: utf-8 -*-
# we save all timezone with TZIDs unknow to the TZDB in here
-_timezone_cache = dict()
+_timezone_cache = {}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar/tools.py new/icalendar-3.11.2/src/icalendar/tools.py
--- old/icalendar-3.9.1/src/icalendar/tools.py 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar/tools.py 2017-01-12 17:33:28.000000000 +0100
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from datetime import datetime
from icalendar.parser_tools import to_unicode
from icalendar.prop import vDatetime
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar.egg-info/PKG-INFO new/icalendar-3.11.2/src/icalendar.egg-info/PKG-INFO
--- old/icalendar-3.9.1/src/icalendar.egg-info/PKG-INFO 2015-09-08 16:08:02.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar.egg-info/PKG-INFO 2017-01-12 17:33:29.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: icalendar
-Version: 3.9.1
+Version: 3.11.2
Summary: iCalendar parser/generator
Home-page: https://github.com/collective/icalendar
Author: Plone Foundation
@@ -105,10 +105,99 @@
--------------------------------------------------
TOTAL 1152 81 93%
-
Changelog
=========
+ 3.11.2 (2017-01-12)
+ -------------------
+
+ Bug fixes:
+
+ - Run tests with python 3.5 and 3.6.
+ [geier]
+
+ - Allow tests failing with pypy3 on travis.ci.
+ [geier]
+
+
+ 3.11.1 (2016-12-19)
+ -------------------
+
+ Bug fixes:
+
+ - Encode error message before adding it to the stack of collected error messages.
+
+
+ 3.11 (2016-11-18)
+ -----------------
+
+ Fixes:
+
+ - Successfully test with pypy and pypy3. [gforcada]
+
+ - Minor documentation update. [tpltnt]
+
+
+ 3.10 (2016-05-26)
+ -----------------
+
+ New:
+
+ - Updated components description to better comply with RFC 5545.
+ Refs #183.
+ [stlaz]
+
+ - Added PERIOD value type to date types.
+ Also fixes incompatibilities described in #184.
+ Refs #189.
+ [stlaz]
+
+ Fixes:
+
+ - Fix testsuite for use with ``dateutil>=2.5``.
+ Refs #195.
+ [untitaker]
+
+ - Reintroduce cal.Component.is_broken that was removed with 3.9.2.
+ Refs #185.
+ [geier]
+
+
+ 3.9.2 (2016-02-05)
+ ------------------
+
+ New:
+
+ - Defined ``test_suite`` in setup.py.
+ Now tests can be run via ``python setup.py test``.
+ [geier]
+
+ Fixes:
+
+ - Fixed cal.Component.from_ical() representing an unknown component as one of the known.
+ [stlaz]
+
+ - Fixed possible IndexError exception during parsing of an ical string.
+ [stlaz]
+
+ - When doing a boolean test on ``icalendar.cal.Component``, always return ``True``.
+ Before it was returning ``False`` due to CaselessDict, if it didn't contain any items.
+ [stlaz]
+
+ - Fixed date-time being recognized as date or time during parsing.
+ Added better error handling to parsing from ical strings.
+ [stlaz]
+
+ - Added __version__ attribute to init.py.
+ [TomTry]
+
+ - Documentation fixes.
+ [TomTry]
+
+ - Pep 8, UTF 8 headers, dict/list calls to literals.
+ [thet]
+
+
3.9.1 (2015-09-08)
------------------
@@ -344,7 +433,7 @@
- Use @staticmethod decorator instead of wrapper function.
[warvariuc, thet]
- - Extend quoting of parameter values to all of those characters: ",;: ’'".
+ - Extend quoting of parameter values to all of those characters: ",;: â'".
This fixes an outlook incompatibility with some characters. Fixes: #79,
Fixes: #81.
[warvariuc]
@@ -637,6 +726,8 @@
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/src/icalendar.egg-info/SOURCES.txt new/icalendar-3.11.2/src/icalendar.egg-info/SOURCES.txt
--- old/icalendar-3.9.1/src/icalendar.egg-info/SOURCES.txt 2015-09-08 16:08:02.000000000 +0200
+++ new/icalendar-3.11.2/src/icalendar.egg-info/SOURCES.txt 2017-01-12 17:33:29.000000000 +0100
@@ -4,6 +4,7 @@
MANIFEST.in
README.rst
TODO.rst
+setup.cfg
setup.py
tox.ini
docs/Makefile
@@ -32,6 +33,7 @@
src/icalendar.egg-info/top_level.txt
src/icalendar/tests/__init__.py
src/icalendar/tests/america_new_york.ics
+src/icalendar/tests/apple_xlocation_test.py
src/icalendar/tests/encoding.ics
src/icalendar/tests/issue_112_missing_tzinfo_on_exdate.ics
src/icalendar/tests/issue_53_parsing_failure.ics
@@ -52,4 +54,5 @@
src/icalendar/tests/test_unit_prop.py
src/icalendar/tests/test_unit_tools.py
src/icalendar/tests/time.ics
-src/icalendar/tests/timezoned.ics
\ No newline at end of file
+src/icalendar/tests/timezoned.ics
+src/icalendar/tests/x_location.ics
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/icalendar-3.9.1/tox.ini new/icalendar-3.11.2/tox.ini
--- old/icalendar-3.9.1/tox.ini 2015-09-08 16:07:59.000000000 +0200
+++ new/icalendar-3.11.2/tox.ini 2017-01-12 17:33:28.000000000 +0100
@@ -1,6 +1,6 @@
# to run for a specific environment, use ``tox -e ENVNAME``
[tox]
-envlist = py26,py27,py33,py34
+envlist = py26,py27,py33,py34,py35,py36
[testenv]
deps =
1
0
Hello community,
here is the log from the commit of package python-veusz for openSUSE:Factory checked in at 2017-01-25 23:26:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-veusz (Old)
and /work/SRC/openSUSE:Factory/.python-veusz.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-veusz"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-veusz/python-veusz.changes 2016-08-10 19:55:39.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-veusz.new/python-veusz.changes 2017-01-25 23:26:15.228375973 +0100
@@ -1,0 +2,25 @@
+Tue Jan 17 09:01:05 UTC 2017 - badshah400(a)gmail.com
+
+- Update to version 1.25.1:
+ + Remove left in print statement and fix comment.
+- Changes from version 1.25:
+ * Features:
+ + Add n-dimensional dataset support
+ + Add GetColormap command to return RGBA values
+ + Add Colormap sequence plugin for choosing colors of widgets
+ + Fill above/below setting shown in key for xy widget
+ + Add Covariance widget for plotting covariance ellipses
+ + Add lineup, linedown, lineleft and lineright markers
+ + Add lineup, linedown and lineextend arrows
+ * Bug fixes:
+ + Fix pick indices if non-finite values in data
+ + Fix drag and drop of files into Veusz on Windows
+ + Raise exception if functions in console request input, avoiding
+ hang
+ + Initialise unsafe_mode, in case Veusz used in PyQt embedding
+ + Fix crash if setting default setting in default setting window
+ + Fix crash in Clone() command on python3
+- Drop all Xvfb related definitions; we are not installing the
+ GUI and not running %check for python2 builds any more.
+
+-------------------------------------------------------------------
Old:
----
veusz-1.24.tar.gz
New:
----
veusz-1.25.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-veusz.spec ++++++
--- /var/tmp/diff_new_pack.hClqfU/_old 2017-01-25 23:26:15.884277090 +0100
+++ /var/tmp/diff_new_pack.hClqfU/_new 2017-01-25 23:26:15.892275884 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-veusz
#
-# 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
@@ -17,10 +17,9 @@
%define appname veusz
-%define X_display ":98"
%{?_sip_api:Requires: sip-api(%{_sip_api_major}) >= %{_sip_api}}
Name: python-veusz
-Version: 1.24
+Version: 1.25.1
Release: 0
Summary: Scientific plotting library for Python
License: GPL-2.0+ and Python-2.0
++++++ veusz-1.24.tar.gz -> veusz-1.25.1.tar.gz ++++++
++++ 14799 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-boto3 for openSUSE:Factory checked in at 2017-01-25 23:26:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-boto3 (Old)
and /work/SRC/openSUSE:Factory/.python-boto3.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-boto3"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-boto3/python-boto3.changes 2016-06-07 23:49:48.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-boto3.new/python-boto3.changes 2017-01-25 23:26:09.633219505 +0100
@@ -1,0 +2,44 @@
+Wed Jan 18 10:37:19 UTC 2017 - astieger(a)suse.com
+
+- fetch upstream sources to fix Factory submission
+
+-------------------------------------------------------------------
+Thu Dec 15 18:16:36 UTC 2016 - rjschwei(a)suse.com
+
+- Update to version 1.4.2 (bsc#1015776)
+ + feature:ec2: Update client to latest version
+
+-------------------------------------------------------------------
+Wed Oct 26 22:24:18 UTC 2016 - rjschwei(a)suse.com
+
+- Fix the version requirement for botocore to ensure proper functioning of
+ the API
+
+-------------------------------------------------------------------
+Wed Oct 26 17:57:56 UTC 2016 - rjschwei(a)suse.com
+
+- Add missing dependency on python-s3transfer
+
+-------------------------------------------------------------------
+Tue Oct 25 13:27:27 UTC 2016 - rjschwei(a)suse.com
+
+- Update to version 1.4.1 (bsc#1007084)
+ + feature:Session: Expose available_profiles property for Session
+ (``#704 <https://github.com/boto/boto3/issues/704>`__)
+ + bugfix:s3: Fix issue when transfers would not exit quickly from signals
+ + bugfix:sqs.Queue: Fix issue in DeadLetterSourceQueues collection
+- From 1.4.0
+ + feature:DynamoDB: Add request auto de-duplication based on specified
+ primary keys for batch_writer. (#605)
+ + feature:s3: Add managed file-like object uploads to S3 client, Bucket,
+ and Object.
+ + bugfix:Session: Fixed Session.__repr__ region argument name.
+ + feature:s3: Add managed copies to S3 client, Bucket, and Object.
+ + feature:s3: Add managed downloads to file-like objects in the S3 client,
+ Bucket, and Object.
+ + bugfix:s3: Port s3.transfer module to use s3transfer package. Please
+ refer to Upgrading Notes when upgrading. In porting the logic over,
+ various performance issues and bugs were fixed.
+ + feature:s3: Add io_chunksize parameter to TransferConfig
+
+-------------------------------------------------------------------
Old:
----
boto3-1.3.1.tar.gz
New:
----
boto3-1.4.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-boto3.spec ++++++
--- /var/tmp/diff_new_pack.4OHxeh/_old 2017-01-25 23:26:10.121145945 +0100
+++ /var/tmp/diff_new_pack.4OHxeh/_new 2017-01-25 23:26:10.125145342 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-boto3
#
-# 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
@@ -17,7 +17,7 @@
Name: python-boto3
-Version: 1.3.1
+Version: 1.4.2
Release: 0
Url: https://github.com/boto/boto3
Summary: Amazon Web Services Library
@@ -28,11 +28,13 @@
BuildRequires: python-devel
BuildRequires: python-futures
BuildRequires: python-setuptools
-Requires: python-botocore < 1.5
-Requires: python-botocore >= 1.4.1
+Requires: python-botocore < 1.5.0
+Requires: python-botocore >= 1.4.67
Requires: python-futures
Requires: python-jmespath < 1.0.0
Requires: python-jmespath >= 0.7.1
+Requires: python-s3transfer < 0.2.0
+Requires: python-s3transfer >= 0.1.0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} && 0%{?suse_version} <= 1110
%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
++++++ boto3-1.3.1.tar.gz -> boto3-1.4.2.tar.gz ++++++
++++ 9942 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-fixtures for openSUSE:Factory checked in at 2017-01-25 23:26:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-fixtures (Old)
and /work/SRC/openSUSE:Factory/.python-fixtures.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-fixtures"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-fixtures/python-fixtures.changes 2016-06-23 13:36:05.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-fixtures.new/python-fixtures.changes 2017-01-25 23:26:04.306022644 +0100
@@ -1,0 +2,5 @@
+Sat Jan 14 18:29:11 UTC 2017 - hpj(a)urpla.net
+
+- fix dependencies: add python-extras
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-fixtures.spec ++++++
--- /var/tmp/diff_new_pack.8YuTJd/_old 2017-01-25 23:26:04.753955112 +0100
+++ /var/tmp/diff_new_pack.8YuTJd/_new 2017-01-25 23:26:04.757954510 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-fixtures
#
-# 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
@@ -24,12 +24,13 @@
Group: Development/Languages/Python
Url: https://launchpad.net/python-fixtures
Source: https://pypi.io/packages/source/f/fixtures/fixtures-%{version}.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: python-devel
+BuildRequires: python-extras
BuildRequires: python-mock
BuildRequires: python-pbr >= 0.11
BuildRequires: python-six
BuildRequires: python-testtools >= 0.9.22
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} && 0%{?suse_version} <= 1110
BuildRequires: python-discover
BuildRequires: python-unittest2
@@ -37,6 +38,7 @@
%else
BuildArch: noarch
%endif
+Requires: python-extras
Requires: python-six
Requires: python-testtools >= 0.9.22
1
0
Hello community,
here is the log from the commit of package python3-click for openSUSE:Factory checked in at 2017-01-25 23:25:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-click (Old)
and /work/SRC/openSUSE:Factory/.python3-click.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-click"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-click/python3-click.changes 2016-09-25 14:42:15.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python3-click.new/python3-click.changes 2017-01-25 23:25:56.395215302 +0100
@@ -1,0 +2,14 @@
+Wed Jan 18 03:31:32 UTC 2017 - arun(a)gmx.de
+
+- specfile:
+ * update copyright year
+
+- update to version 6.7:
+ * Make `click.progressbar` work with `codecs.open` files. See #637.
+ * Fix bug in bash completion with nested subcommands. See #639.
+ * Fix test runner not saving caller env correctly. See #644.
+ * Fix handling of SIGPIPE. See #626
+ * Deal with broken Windows environments such as Google App
+ Engine's. See #711.
+
+-------------------------------------------------------------------
@@ -11 +24,0 @@
-
Old:
----
click-6.6.tar.gz
New:
----
click-6.7.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-click.spec ++++++
--- /var/tmp/diff_new_pack.Phu3Yr/_old 2017-01-25 23:25:56.859145358 +0100
+++ /var/tmp/diff_new_pack.Phu3Yr/_new 2017-01-25 23:25:56.863144755 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python3-click
#
-# 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
@@ -17,7 +17,7 @@
Name: python3-click
-Version: 6.6
+Version: 6.7
Release: 0
Summary: A simple wrapper around optparse for powerful command line utilities
License: BSD-3-Clause
@@ -25,8 +25,8 @@
Url: http://github.com/mitsuhiko/click
Source: https://files.pythonhosted.org/packages/source/c/click/click-%{version}.tar…
BuildRequires: python3-devel
-BuildRequires: python3-setuptools
BuildRequires: python3-pytest
+BuildRequires: python3-setuptools
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
++++++ click-6.6.tar.gz -> click-6.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/CHANGES new/click-6.7/CHANGES
--- old/click-6.6/CHANGES 2016-04-04 18:49:35.000000000 +0200
+++ new/click-6.7/CHANGES 2017-01-06 23:40:17.000000000 +0100
@@ -3,6 +3,17 @@
This contains all major version changes between Click releases.
+Version 6.7
+-----------
+
+(bugfix release; released on January 6th 2017)
+
+- Make `click.progressbar` work with `codecs.open` files. See #637.
+- Fix bug in bash completion with nested subcommands. See #639.
+- Fix test runner not saving caller env correctly. See #644.
+- Fix handling of SIGPIPE. See #626
+- Deal with broken Windows environments such as Google App Engine's. See #711.
+
Version 6.6
-----------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/PKG-INFO new/click-6.7/PKG-INFO
--- old/click-6.6/PKG-INFO 2016-04-04 18:51:33.000000000 +0200
+++ new/click-6.7/PKG-INFO 2017-01-06 23:41:11.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: click
-Version: 6.6
+Version: 6.7
Summary: A simple wrapper around optparse for powerful command line utilities.
Home-page: http://github.com/mitsuhiko/click
Author: Armin Ronacher
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/click/__init__.py new/click-6.7/click/__init__.py
--- old/click-6.6/click/__init__.py 2016-04-04 18:50:46.000000000 +0200
+++ new/click-6.7/click/__init__.py 2017-01-06 23:40:55.000000000 +0100
@@ -95,4 +95,4 @@
disable_unicode_literals_warning = False
-__version__ = '6.6'
+__version__ = '6.7'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/click/_bashcomplete.py new/click-6.7/click/_bashcomplete.py
--- old/click-6.6/click/_bashcomplete.py 2016-04-04 18:27:24.000000000 +0200
+++ new/click-6.7/click/_bashcomplete.py 2016-12-01 13:33:48.000000000 +0100
@@ -30,8 +30,8 @@
def resolve_ctx(cli, prog_name, args):
ctx = cli.make_context(prog_name, args, resilient_parsing=True)
- while ctx.args + ctx.protected_args and isinstance(ctx.command, MultiCommand):
- a = ctx.args + ctx.protected_args
+ while ctx.protected_args + ctx.args and isinstance(ctx.command, MultiCommand):
+ a = ctx.protected_args + ctx.args
cmd = ctx.command.get_command(ctx, a[0])
if cmd is None:
return None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/click/_compat.py new/click-6.7/click/_compat.py
--- old/click-6.6/click/_compat.py 2016-04-04 18:47:57.000000000 +0200
+++ new/click-6.7/click/_compat.py 2017-01-06 23:39:09.000000000 +0100
@@ -160,8 +160,16 @@
#
# This code also lives in _winconsole for the fallback to the console
# emulation stream.
- if WIN:
+ #
+ # There are also Windows environments where the `msvcrt` module is not
+ # available (which is why we use try-catch instead of the WIN variable
+ # here), such as the Google App Engine development server on Windows. In
+ # those cases there is just nothing we can do.
+ try:
import msvcrt
+ except ImportError:
+ set_binary_mode = lambda x: x
+ else:
def set_binary_mode(f):
try:
fileno = f.fileno()
@@ -170,8 +178,6 @@
else:
msvcrt.setmode(fileno, os.O_BINARY)
return f
- else:
- set_binary_mode = lambda x: x
def isidentifier(x):
return _identifier_re.search(x) is not None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/click/_termui_impl.py new/click-6.7/click/_termui_impl.py
--- old/click-6.6/click/_termui_impl.py 2016-04-04 18:47:57.000000000 +0200
+++ new/click-6.7/click/_termui_impl.py 2017-01-06 23:32:37.000000000 +0100
@@ -31,7 +31,7 @@
"""Returns the length hint of an object."""
try:
return len(obj)
- except TypeError:
+ except (AttributeError, TypeError):
try:
get_hint = type(obj).__length_hint__
except AttributeError:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/click/_unicodefun.py new/click-6.7/click/_unicodefun.py
--- old/click-6.6/click/_unicodefun.py 2016-04-04 18:47:57.000000000 +0200
+++ new/click-6.7/click/_unicodefun.py 2017-01-06 23:32:37.000000000 +0100
@@ -114,6 +114,5 @@
raise RuntimeError('Click will abort further execution because Python 3 '
'was configured to use ASCII as encoding for the '
- 'environment. Either run this under Python 2 or '
- 'consult http://click.pocoo.org/python3/ for '
- 'mitigation steps.' + extra)
+ 'environment. Consult http://click.pocoo.org/python3/'
+ 'for mitigation steps.' + extra)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/click/core.py new/click-6.7/click/core.py
--- old/click-6.6/click/core.py 2016-04-04 18:47:57.000000000 +0200
+++ new/click-6.7/click/core.py 2017-01-06 23:32:37.000000000 +0100
@@ -1,3 +1,4 @@
+import errno
import os
import sys
from contextlib import contextmanager
@@ -705,6 +706,11 @@
raise
e.show()
sys.exit(e.exit_code)
+ except IOError as e:
+ if e.errno == errno.EPIPE:
+ sys.exit(1)
+ else:
+ raise
except Abort:
if not standalone_mode:
raise
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/click/testing.py new/click-6.7/click/testing.py
--- old/click-6.6/click/testing.py 2015-11-29 17:31:33.000000000 +0100
+++ new/click-6.7/click/testing.py 2017-01-06 23:32:37.000000000 +0100
@@ -213,7 +213,7 @@
old_env = {}
try:
for key, value in iteritems(env):
- old_env[key] = os.environ.get(value)
+ old_env[key] = os.environ.get(key)
if value is None:
try:
del os.environ[key]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/click.egg-info/PKG-INFO new/click-6.7/click.egg-info/PKG-INFO
--- old/click-6.6/click.egg-info/PKG-INFO 2016-04-04 18:51:33.000000000 +0200
+++ new/click-6.7/click.egg-info/PKG-INFO 2017-01-06 23:41:11.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: click
-Version: 6.6
+Version: 6.7
Summary: A simple wrapper around optparse for powerful command line utilities.
Home-page: http://github.com/mitsuhiko/click
Author: Armin Ronacher
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/click.egg-info/SOURCES.txt new/click-6.7/click.egg-info/SOURCES.txt
--- old/click-6.6/click.egg-info/SOURCES.txt 2016-04-04 18:51:33.000000000 +0200
+++ new/click-6.7/click.egg-info/SOURCES.txt 2017-01-06 23:41:11.000000000 +0100
@@ -87,24 +87,12 @@
examples/naval/README
examples/naval/naval.py
examples/naval/setup.py
-examples/plugins/BrokenPlugin/printer_bold.egg-info/PKG-INFO
-examples/plugins/BrokenPlugin/printer_bold.egg-info/SOURCES.txt
-examples/plugins/BrokenPlugin/printer_bold.egg-info/dependency_links.txt
-examples/plugins/BrokenPlugin/printer_bold.egg-info/entry_points.txt
-examples/plugins/BrokenPlugin/printer_bold.egg-info/top_level.txt
-examples/plugins/printer.egg-info/PKG-INFO
-examples/plugins/printer.egg-info/SOURCES.txt
-examples/plugins/printer.egg-info/dependency_links.txt
-examples/plugins/printer.egg-info/entry_points.txt
-examples/plugins/printer.egg-info/top_level.txt
examples/repo/README
examples/repo/repo.py
examples/repo/setup.py
examples/termui/README
examples/termui/setup.py
examples/termui/termui.py
-examples/termui/build/lib/termui.py
-examples/termui/dist/click_example_termui-1.0-py3.4.egg
examples/validation/README
examples/validation/setup.py
examples/validation/validation.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/examples/plugins/BrokenPlugin/printer_bold.egg-info/PKG-INFO new/click-6.7/examples/plugins/BrokenPlugin/printer_bold.egg-info/PKG-INFO
--- old/click-6.6/examples/plugins/BrokenPlugin/printer_bold.egg-info/PKG-INFO 2015-07-08 14:05:54.000000000 +0200
+++ new/click-6.7/examples/plugins/BrokenPlugin/printer_bold.egg-info/PKG-INFO 1970-01-01 01:00:00.000000000 +0100
@@ -1,10 +0,0 @@
-Metadata-Version: 1.0
-Name: printer-bold
-Version: 0.1dev0
-Summary: UNKNOWN
-Home-page: UNKNOWN
-Author: UNKNOWN
-Author-email: UNKNOWN
-License: UNKNOWN
-Description: UNKNOWN
-Platform: UNKNOWN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/examples/plugins/BrokenPlugin/printer_bold.egg-info/SOURCES.txt new/click-6.7/examples/plugins/BrokenPlugin/printer_bold.egg-info/SOURCES.txt
--- old/click-6.6/examples/plugins/BrokenPlugin/printer_bold.egg-info/SOURCES.txt 2015-07-08 14:05:54.000000000 +0200
+++ new/click-6.7/examples/plugins/BrokenPlugin/printer_bold.egg-info/SOURCES.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1,8 +0,0 @@
-README.rst
-printer_bold/__init__.py
-printer_bold/core.py
-printer_bold.egg-info/PKG-INFO
-printer_bold.egg-info/SOURCES.txt
-printer_bold.egg-info/dependency_links.txt
-printer_bold.egg-info/entry_points.txt
-printer_bold.egg-info/top_level.txt
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/examples/plugins/BrokenPlugin/printer_bold.egg-info/dependency_links.txt new/click-6.7/examples/plugins/BrokenPlugin/printer_bold.egg-info/dependency_links.txt
--- old/click-6.6/examples/plugins/BrokenPlugin/printer_bold.egg-info/dependency_links.txt 2015-07-08 14:05:54.000000000 +0200
+++ new/click-6.7/examples/plugins/BrokenPlugin/printer_bold.egg-info/dependency_links.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/examples/plugins/BrokenPlugin/printer_bold.egg-info/entry_points.txt new/click-6.7/examples/plugins/BrokenPlugin/printer_bold.egg-info/entry_points.txt
--- old/click-6.6/examples/plugins/BrokenPlugin/printer_bold.egg-info/entry_points.txt 2015-07-08 14:05:54.000000000 +0200
+++ new/click-6.7/examples/plugins/BrokenPlugin/printer_bold.egg-info/entry_points.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-
- [printer.plugins]
- bold=printer_bold.core:bolddddddddddd
-
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/examples/plugins/BrokenPlugin/printer_bold.egg-info/top_level.txt new/click-6.7/examples/plugins/BrokenPlugin/printer_bold.egg-info/top_level.txt
--- old/click-6.6/examples/plugins/BrokenPlugin/printer_bold.egg-info/top_level.txt 2015-07-08 14:05:54.000000000 +0200
+++ new/click-6.7/examples/plugins/BrokenPlugin/printer_bold.egg-info/top_level.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-printer_bold
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/examples/plugins/printer.egg-info/PKG-INFO new/click-6.7/examples/plugins/printer.egg-info/PKG-INFO
--- old/click-6.6/examples/plugins/printer.egg-info/PKG-INFO 2015-07-08 14:05:34.000000000 +0200
+++ new/click-6.7/examples/plugins/printer.egg-info/PKG-INFO 1970-01-01 01:00:00.000000000 +0100
@@ -1,10 +0,0 @@
-Metadata-Version: 1.0
-Name: printer
-Version: 0.1dev0
-Summary: UNKNOWN
-Home-page: UNKNOWN
-Author: UNKNOWN
-Author-email: UNKNOWN
-License: UNKNOWN
-Description: UNKNOWN
-Platform: UNKNOWN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/examples/plugins/printer.egg-info/SOURCES.txt new/click-6.7/examples/plugins/printer.egg-info/SOURCES.txt
--- old/click-6.6/examples/plugins/printer.egg-info/SOURCES.txt 2015-07-08 14:05:34.000000000 +0200
+++ new/click-6.7/examples/plugins/printer.egg-info/SOURCES.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1,8 +0,0 @@
-README.rst
-printer/__init__.py
-printer/cli.py
-printer.egg-info/PKG-INFO
-printer.egg-info/SOURCES.txt
-printer.egg-info/dependency_links.txt
-printer.egg-info/entry_points.txt
-printer.egg-info/top_level.txt
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/examples/plugins/printer.egg-info/dependency_links.txt new/click-6.7/examples/plugins/printer.egg-info/dependency_links.txt
--- old/click-6.6/examples/plugins/printer.egg-info/dependency_links.txt 2015-07-08 14:05:34.000000000 +0200
+++ new/click-6.7/examples/plugins/printer.egg-info/dependency_links.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/examples/plugins/printer.egg-info/entry_points.txt new/click-6.7/examples/plugins/printer.egg-info/entry_points.txt
--- old/click-6.6/examples/plugins/printer.egg-info/entry_points.txt 2015-07-08 14:05:34.000000000 +0200
+++ new/click-6.7/examples/plugins/printer.egg-info/entry_points.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-
- [console_scripts]
- printer=printer.cli:cli
-
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/examples/plugins/printer.egg-info/top_level.txt new/click-6.7/examples/plugins/printer.egg-info/top_level.txt
--- old/click-6.6/examples/plugins/printer.egg-info/top_level.txt 2015-07-08 14:05:34.000000000 +0200
+++ new/click-6.7/examples/plugins/printer.egg-info/top_level.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-printer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/examples/termui/build/lib/termui.py new/click-6.7/examples/termui/build/lib/termui.py
--- old/click-6.6/examples/termui/build/lib/termui.py 2014-06-23 22:46:51.000000000 +0200
+++ new/click-6.7/examples/termui/build/lib/termui.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,145 +0,0 @@
-# coding: utf-8
-import click
-import time
-import random
-
-try:
- range_type = xrange
-except NameError:
- range_type = range
-
-
-(a)click.group()
-def cli():
- """This script showcases different terminal UI helpers in Click."""
- pass
-
-
-(a)cli.command()
-def colordemo():
- """Demonstrates ANSI color support."""
- for color in 'red', 'green', 'blue':
- click.echo(click.style('I am colored %s' % color, fg=color))
- click.echo(click.style('I am background colored %s' % color, bg=color))
-
-
-(a)cli.command()
-def pager():
- """Demonstrates using the pager."""
- lines = []
- for x in range_type(200):
- lines.append('%s. Hello World!' % click.style(str(x), fg='green'))
- click.echo_via_pager('\n'.join(lines))
-
-
-(a)cli.command()
-(a)click.option('--count', default=8000, type=click.IntRange(1, 100000),
- help='The number of items to process.')
-def progress(count):
- """Demonstrates the progress bar."""
- items = range_type(count)
-
- def process_slowly(item):
- time.sleep(0.002 * random.random())
-
- def filter(items):
- for item in items:
- if random.random() > 0.3:
- yield item
-
- with click.progressbar(items, label='Processing accounts',
- fill_char=click.style('#', fg='green')) as bar:
- for item in bar:
- process_slowly(item)
-
- def show_item(item):
- if item is not None:
- return 'Item #%d' % item
-
- with click.progressbar(filter(items), label='Committing transaction',
- fill_char=click.style('#', fg='yellow'),
- item_show_func=show_item) as bar:
- for item in bar:
- process_slowly(item)
-
- with click.progressbar(length=count, label='Counting',
- bar_template='%(label)s %(bar)s | %(info)s',
- fill_char=click.style(u'█', fg='cyan'),
- empty_char=' ') as bar:
- for item in bar:
- process_slowly(item)
-
- with click.progressbar(length=count, width=0, show_percent=False,
- show_eta=False,
- fill_char=click.style('#', fg='magenta')) as bar:
- for item in bar:
- process_slowly(item)
-
-
-(a)cli.command()
-(a)click.argument('url')
-def open(url):
- """Opens a file or URL In the default application."""
- click.launch(url)
-
-
-(a)cli.command()
-(a)click.argument('url')
-def locate(url):
- """Opens a file or URL In the default application."""
- click.launch(url, locate=True)
-
-
-(a)cli.command()
-def edit():
- """Opens an editor with some text in it."""
- MARKER = '# Everything below is ignored\n'
- message = click.edit('\n\n' + MARKER)
- if message is not None:
- msg = message.split(MARKER, 1)[0].rstrip('\n')
- if not msg:
- click.echo('Empty message!')
- else:
- click.echo('Message:\n' + msg)
- else:
- click.echo('You did not enter anything!')
-
-
-(a)cli.command()
-def clear():
- """Clears the entire screen."""
- click.clear()
-
-
-(a)cli.command()
-def pause():
- """Waits for the user to press a button."""
- click.pause()
-
-
-(a)cli.command()
-def menu():
- """Shows a simple menu."""
- menu = 'main'
- while 1:
- if menu == 'main':
- click.echo('Main menu:')
- click.echo(' d: debug menu')
- click.echo(' q: quit')
- char = click.getchar()
- if char == 'd':
- menu = 'debug'
- elif char == 'q':
- menu = 'quit'
- else:
- click.echo('Invalid input')
- elif menu == 'debug':
- click.echo('Debug menu')
- click.echo(' b: back')
- char = click.getchar()
- if char == 'b':
- menu = 'main'
- else:
- click.echo('Invalid input')
- elif menu == 'quit':
- return
Binary files old/click-6.6/examples/termui/dist/click_example_termui-1.0-py3.4.egg and new/click-6.7/examples/termui/dist/click_example_termui-1.0-py3.4.egg differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/tests/test_bashcomplete.py new/click-6.7/tests/test_bashcomplete.py
--- old/click-6.6/tests/test_bashcomplete.py 2016-04-04 18:27:24.000000000 +0200
+++ new/click-6.7/tests/test_bashcomplete.py 2016-12-01 13:33:48.000000000 +0100
@@ -3,7 +3,18 @@
import click
from click._bashcomplete import get_choices
-def test_basic():
+
+def test_single_command():
+ @click.command()
+ @click.option('--local-opt')
+ def cli(local_opt):
+ pass
+
+ assert list(get_choices(cli, 'lol', [], '-')) == ['--local-opt']
+ assert list(get_choices(cli, 'lol', [], '')) == []
+
+
+def test_small_chain():
@click.group()
@click.option('--global-opt')
def cli(global_opt):
@@ -18,3 +29,34 @@
assert list(get_choices(cli, 'lol', [], '-')) == ['--global-opt']
assert list(get_choices(cli, 'lol', ['sub'], '')) == []
assert list(get_choices(cli, 'lol', ['sub'], '-')) == ['--local-opt']
+
+
+def test_long_chain():
+ @click.group('cli')
+ @click.option('--cli-opt')
+ def cli(cli_opt):
+ pass
+
+ @cli.group('asub')
+ @click.option('--asub-opt')
+ def asub(asub_opt):
+ pass
+
+ @asub.group('bsub')
+ @click.option('--bsub-opt')
+ def bsub(bsub_opt):
+ pass
+
+ @bsub.command('csub')
+ @click.option('--csub-opt')
+ def csub(csub_opt):
+ pass
+
+ assert list(get_choices(cli, 'lol', [], '-')) == ['--cli-opt']
+ assert list(get_choices(cli, 'lol', [], '')) == ['asub']
+ assert list(get_choices(cli, 'lol', ['asub'], '-')) == ['--asub-opt']
+ assert list(get_choices(cli, 'lol', ['asub'], '')) == ['bsub']
+ assert list(get_choices(cli, 'lol', ['asub', 'bsub'], '-')) == ['--bsub-opt']
+ assert list(get_choices(cli, 'lol', ['asub', 'bsub'], '')) == ['csub']
+ assert list(get_choices(cli, 'lol', ['asub', 'bsub', 'csub'], '-')) == ['--csub-opt']
+ assert list(get_choices(cli, 'lol', ['asub', 'bsub', 'csub'], '')) == []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/tests/test_imports.py new/click-6.7/tests/test_imports.py
--- old/click-6.6/tests/test_imports.py 2015-11-29 17:31:33.000000000 +0100
+++ new/click-6.7/tests/test_imports.py 2016-12-01 13:33:48.000000000 +0100
@@ -32,7 +32,7 @@
ALLOWED_IMPORTS = set([
'weakref', 'os', 'struct', 'collections', 'sys', 'contextlib',
'functools', 'stat', 're', 'codecs', 'inspect', 'itertools', 'io',
- 'threading', 'colorama'
+ 'threading', 'colorama', 'errno'
])
if WIN:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-6.6/tests/test_testing.py new/click-6.7/tests/test_testing.py
--- old/click-6.6/tests/test_testing.py 2015-11-29 17:31:33.000000000 +0100
+++ new/click-6.7/tests/test_testing.py 2017-01-06 23:32:37.000000000 +0100
@@ -1,3 +1,4 @@
+import os
import sys
import pytest
@@ -183,3 +184,21 @@
result = runner.invoke(cli_no_error)
assert result.exit_code == 0
assert result.output == 'hello world\n'
+
+
+def test_env():
+ @click.command()
+ def cli_env():
+ click.echo('ENV=%s' % os.environ['TEST_CLICK_ENV'])
+
+ runner = CliRunner()
+
+ env_orig = dict(os.environ)
+ env = dict(env_orig)
+ assert 'TEST_CLICK_ENV' not in env
+ env['TEST_CLICK_ENV'] = 'some_value'
+ result = runner.invoke(cli_env, env=env)
+ assert result.exit_code == 0
+ assert result.output == 'ENV=some_value\n'
+
+ assert os.environ == env_orig
1
0
Hello community,
here is the log from the commit of package python3-decorator for openSUSE:Factory checked in at 2017-01-25 23:25:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-decorator (Old)
and /work/SRC/openSUSE:Factory/.python3-decorator.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-decorator"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-decorator/python3-decorator.changes 2016-07-14 09:47:07.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python3-decorator.new/python3-decorator.changes 2017-01-25 23:25:50.880046792 +0100
@@ -1,0 +2,11 @@
+Wed Jan 18 03:33:02 UTC 2017 - arun(a)gmx.de
+
+- specfile:
+ * update copyright year
+ * deleted 'rm' statement that cleaned up some backup files that made
+ it into an older tar-ball
+
+- update to version 4.0.11:
+ * Small improvements to the documentation and tested with Python 3.6
+
+-------------------------------------------------------------------
Old:
----
decorator-4.0.10.tar.gz
New:
----
decorator-4.0.11.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-decorator.spec ++++++
--- /var/tmp/diff_new_pack.U6bLsQ/_old 2017-01-25 23:25:51.271987702 +0100
+++ /var/tmp/diff_new_pack.U6bLsQ/_new 2017-01-25 23:25:51.275987098 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python3-decorator
#
-# 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
@@ -17,7 +17,7 @@
Name: python3-decorator
-Version: 4.0.10
+Version: 4.0.11
Release: 0
Url: http://pypi.python.org/pypi/decorator
Summary: Better living through Python with decorators
@@ -44,8 +44,6 @@
%prep
%setup -q -n decorator-%{version}
sed -i 's/\r//' docs/README.rst # Fix EOL encoding
-# remove a backup file that made it into the tar-ball of 4.0.7
-rm src/decorator.egg-info/SOURCES.txt~
%build
python3 setup.py build
++++++ decorator-4.0.10.tar.gz -> decorator-4.0.11.tar.gz ++++++
++++ 3974 lines of diff (skipped)
1
0