openSUSE Commits
Threads by month
- ----- 2024 -----
- 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
October 2018
- 1 participants
- 1996 discussions
Hello community,
here is the log from the commit of package wxMaxima for openSUSE:Factory checked in at 2018-10-26 11:09:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/wxMaxima (Old)
and /work/SRC/openSUSE:Factory/.wxMaxima.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "wxMaxima"
Fri Oct 26 11:09:55 2018 rev:29 rq:644522 version:18.10.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/wxMaxima/wxMaxima.changes 2018-10-04 19:02:14.279156490 +0200
+++ /work/SRC/openSUSE:Factory/.wxMaxima.new/wxMaxima.changes 2018-10-26 11:10:04.757734660 +0200
@@ -1,0 +2,9 @@
+Mon Oct 22 11:41:02 UTC 2018 - badshah400(a)gmail.com
+
+- Update to version 18.10.2:
+ * Better cleanup on restarting Maxima.
+ * Updated translations.
+- Remove obsolete appdata directory from file-list: appdata is now
+ installed to %{_datadir}/metainfo.
+
+-------------------------------------------------------------------
Old:
----
Version-18.10.1.tar.gz
New:
----
Version-18.10.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ wxMaxima.spec ++++++
--- /var/tmp/diff_new_pack.2TfrHz/_old 2018-10-26 11:10:05.353733856 +0200
+++ /var/tmp/diff_new_pack.2TfrHz/_new 2018-10-26 11:10:05.357733850 +0200
@@ -18,7 +18,7 @@
%define tarname wxmaxima
Name: wxMaxima
-Version: 18.10.1
+Version: 18.10.2
Release: 0
Summary: Graphical User Interface for the maxima Computer Algebra System
License: GPL-2.0-or-later
@@ -110,9 +110,6 @@
%dir %{_datadir}/icons/hicolor/512x512/apps
%{_datadir}/icons/hicolor/*/apps/wxmaxima.*
%{_datadir}/applications/wxMaxima.desktop
-%if 0%{?suse_version} == 1315
-%dir %{_datadir}/appdata
-%endif
%{_datadir}/bash-completion/completions/wxmaxima
%dir %{_datadir}/metainfo
%{_datadir}/metainfo/wxMaxima.appdata.xml
++++++ Version-18.10.1.tar.gz -> Version-18.10.2.tar.gz ++++++
/work/SRC/openSUSE:Factory/wxMaxima/Version-18.10.1.tar.gz /work/SRC/openSUSE:Factory/.wxMaxima.new/Version-18.10.2.tar.gz differ: char 13, line 1
1
0
Hello community,
here is the log from the commit of package disorderfs for openSUSE:Factory checked in at 2018-10-26 11:09:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/disorderfs (Old)
and /work/SRC/openSUSE:Factory/.disorderfs.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "disorderfs"
Fri Oct 26 11:09:48 2018 rev:4 rq:644519 version:0.5.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/disorderfs/disorderfs.changes 2018-09-17 14:27:07.391747265 +0200
+++ /work/SRC/openSUSE:Factory/.disorderfs.new/disorderfs.changes 2018-10-26 11:09:55.497747174 +0200
@@ -1,0 +2,8 @@
+Thu Oct 25 07:57:26 UTC 2018 - bwiedemann(a)suse.com
+
+- Update to 0.5.5
+ * Allow tar and touch -m to update mtime of files
+ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=911281
+ * Drop upstream xattr.patch
+
+-------------------------------------------------------------------
@@ -5,0 +14 @@
+ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=898287
Old:
----
disorderfs-0.5.3.tar.bz2
disorderfs-0.5.3.tar.bz2.asc
xattr.patch
New:
----
disorderfs-0.5.5.tar.bz2
disorderfs-0.5.5.tar.bz2.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ disorderfs.spec ++++++
--- /var/tmp/diff_new_pack.b7MkX4/_old 2018-10-26 11:09:55.977746524 +0200
+++ /var/tmp/diff_new_pack.b7MkX4/_new 2018-10-26 11:09:55.977746524 +0200
@@ -17,7 +17,7 @@
Name: disorderfs
-Version: 0.5.3
+Version: 0.5.5
Release: 0
Summary: FUSE filesystem that introduces non-determinism
License: GPL-3.0+
@@ -26,7 +26,6 @@
Source0: https://reproducible-builds.org/_lfs/releases/%{name}/%{name}-%{version}.ta…
Source1: https://reproducible-builds.org/_lfs/releases/%{name}/%{name}-%{version}.ta…
Source2: %{name}.keyring
-Patch0: xattr.patch
BuildRequires: asciidoc
BuildRequires: gcc-c++
BuildRequires: pkgconfig
@@ -42,7 +41,6 @@
%prep
%setup -q
-%patch0 -p1
%build
make %{?_smp_mflags}
++++++ disorderfs-0.5.3.tar.bz2 -> disorderfs-0.5.5.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/disorderfs-0.5.3/README new/disorderfs-0.5.5/README
--- old/disorderfs-0.5.3/README 2018-05-12 18:51:47.000000000 +0200
+++ new/disorderfs-0.5.5/README 2018-10-24 22:24:45.000000000 +0200
@@ -10,9 +10,7 @@
After releasing, please also release a signed tarball:
$ VERSION=FIXME
-
$ git archive --format=tar --prefix=disorderfs-${VERSION}/ ${VERSION} | bzip2 -9 > disorderfs-${VERSION}.tar.bz2
-
$ gpg --detach-sig --armor --output=disorderfs-${VERSION}.tar.bz2.asc < disorderfs-${VERSION}.tar.bz2
- $ scp disorderfs-${VERSION}* alioth.debian.org:/home/groups/reproducible/htdocs/releases/disorderfs
+And commit them to our LFS repository at https://salsa.debian.org/reproducible-builds/reproducible-lfs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/disorderfs-0.5.3/disorderfs.cpp new/disorderfs-0.5.5/disorderfs.cpp
--- old/disorderfs-0.5.3/disorderfs.cpp 2018-05-12 18:51:47.000000000 +0200
+++ new/disorderfs-0.5.5/disorderfs.cpp 2018-10-24 22:24:45.000000000 +0200
@@ -37,13 +37,13 @@
#include <vector>
#include <random>
#include <algorithm>
-#include <attr/xattr.h>
+#include <sys/xattr.h>
#include <sys/types.h>
#include <sys/syscall.h>
#include <sys/file.h>
#include <stddef.h>
-#define DISORDERFS_VERSION "0.5.3"
+#define DISORDERFS_VERSION "0.5.5"
namespace {
std::vector<std::string> bare_arguments;
@@ -293,6 +293,12 @@
* Initialize disorderfs_fuse_operations
*/
+ /*
+ * Indicate that we should accept UTIME_OMIT (and UTIME_NOW) in the
+ * utimens operations for "touch -m" and "touch -a"
+ */
+ disorderfs_fuse_operations.flag_utime_omit_ok = 1;
+
disorderfs_fuse_operations.getattr = [] (const char* path, struct stat* st) -> int {
Guard g;
if (lstat((root + path).c_str(), st) == -1) {
@@ -425,12 +431,14 @@
if (!d) {
return -errno;
}
- struct dirent dirent_storage;
struct dirent* dirent_p;
- int res;
- while ((res = readdir_r(d, &dirent_storage, &dirent_p)) == 0 && dirent_p) {
+ errno = 0;
+ while ((dirent_p = readdir(d)) != NULL) {
dirents->emplace_back(std::make_pair(dirent_p->d_name, dirent_p->d_ino));
}
+ if (errno != 0) {
+ return -errno;
+ }
if (config.sort_dirents) {
std::sort(dirents->begin(), dirents->end());
}
@@ -438,8 +446,8 @@
std::reverse(dirents->begin(), dirents->end());
}
closedir(d);
- if (res != 0) {
- return -res;
+ if (errno != 0) {
+ return -errno;
}
set_fuse_data<Dirents*>(info, dirents.release());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/disorderfs-0.5.3/tests/touch new/disorderfs-0.5.5/tests/touch
--- old/disorderfs-0.5.3/tests/touch 1970-01-01 01:00:00.000000000 +0100
+++ new/disorderfs-0.5.5/tests/touch 2018-10-24 22:24:45.000000000 +0200
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Test for https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=911281
+
+. ./common
+
+Mount
+
+EXPECTED="12345678"
+FILENAME="target/a"
+
+touch ${FILENAME}
+touch -d @${EXPECTED} ${FILENAME}
+RESULT="$(stat --format=%X-%Y ${FILENAME})"
+if [ "${RESULT}" != "${EXPECTED}-${EXPECTED}" ]
+then
+ Fail "test1: Got=${RESULT} Expected=${EXPECTED}"
+fi
+
+# This is what tar xf does for extracted files via futimens(2)
+touch ${FILENAME}
+touch -m -d @${EXPECTED} ${FILENAME}
+RESULT="$(stat --format=%Y ${FILENAME})"
+if [ "${RESULT}" != "${EXPECTED}" ]
+then
+ Fail "test2: Got=${RESULT} Expected=${EXPECTED}"
+fi
+
+touch ${FILENAME}
+touch -a -d @${EXPECTED} ${FILENAME}
+RESULT="$(stat --format=%X ${FILENAME})"
+if [ "${RESULT}" != "${EXPECTED}" ]
+then
+ Fail "test3: Got=${RESULT} Expected=${EXPECTED}"
+fi
+
+Unmount
1
0
Hello community,
here is the log from the commit of package lxtask for openSUSE:Factory checked in at 2018-10-26 11:09:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lxtask (Old)
and /work/SRC/openSUSE:Factory/.lxtask.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lxtask"
Fri Oct 26 11:09:44 2018 rev:25 rq:644510 version:0.1.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/lxtask/lxtask.changes 2017-01-12 15:56:18.431502533 +0100
+++ /work/SRC/openSUSE:Factory/.lxtask.new/lxtask.changes 2018-10-26 11:09:48.677756417 +0200
@@ -1,0 +2,6 @@
+Wed Oct 24 16:30:45 UTC 2018 - sean(a)suspend.net
+
+- new upstream release 0.1.8
+ * Fixed UID shown instead of EUID
+
+-------------------------------------------------------------------
Old:
----
lxtask-0.1.7.tar.xz
New:
----
lxtask-0.1.8.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ lxtask.spec ++++++
--- /var/tmp/diff_new_pack.B7qyNd/_old 2018-10-26 11:09:49.033755934 +0200
+++ /var/tmp/diff_new_pack.B7qyNd/_new 2018-10-26 11:09:49.033755934 +0200
@@ -1,7 +1,7 @@
#
# spec file for package lxtask
#
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 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
@@ -12,15 +12,15 @@
# 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/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: lxtask
-Version: 0.1.7
+Version: 0.1.8
Release: 0
Summary: Lightweight Task Manager
-License: GPL-2.0
+License: GPL-2.0-only
Group: System/GUI/LXDE
Url: http://www.lxde.org/
Source0: %{name}-%{version}.tar.xz
++++++ lxtask-0.1.7.tar.xz -> lxtask-0.1.8.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lxtask-0.1.7/Makefile.in new/lxtask-0.1.8/Makefile.in
--- old/lxtask-0.1.7/Makefile.in 2016-02-21 01:06:41.000000000 +0100
+++ new/lxtask-0.1.8/Makefile.in 2017-01-25 02:57:03.000000000 +0100
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -77,16 +87,13 @@
PRE_UNINSTALL = :
POST_UNINSTALL = :
subdir = .
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/configure $(am__configure_deps) \
- $(srcdir)/config.h.in $(top_srcdir)/data/lxtask.1.in AUTHORS \
- COPYING ChangeLog INSTALL NEWS README TODO compile depcomp \
- install-sh missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/intltool.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+ $(am__configure_deps) $(am__DIST_COMMON)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
@@ -182,6 +189,9 @@
CTAGS = ctags
CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+ $(top_srcdir)/data/lxtask.1.in AUTHORS COPYING ChangeLog \
+ INSTALL NEWS README TODO compile depcomp install-sh missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
@@ -338,6 +348,7 @@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@@ -377,7 +388,6 @@
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -664,15 +674,15 @@
$(am__post_remove_distdir)
dist-tarZ: distdir
- @echo WARNING: "Support for shar distribution archives is" \
- "deprecated." >&2
+ @echo WARNING: "Support for distribution archives compressed with" \
+ "legacy program 'compress' is deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__post_remove_distdir)
dist-shar: distdir
- @echo WARNING: "Support for distribution archives compressed with" \
- "legacy program 'compress' is deprecated." >&2
+ @echo WARNING: "Support for shar distribution archives is" \
+ "deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__post_remove_distdir)
@@ -708,17 +718,17 @@
esac
chmod -R a-w $(distdir)
chmod u+w $(distdir)
- mkdir $(distdir)/_build $(distdir)/_inst
+ mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& am__cwd=`pwd` \
- && $(am__cd) $(distdir)/_build \
- && ../configure \
+ && $(am__cd) $(distdir)/_build/sub \
+ && ../../configure \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
- --srcdir=.. --prefix="$$dc_install_base" \
+ --srcdir=../.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
@@ -902,6 +912,8 @@
uninstall-am uninstall-desktopDATA uninstall-man \
uninstall-man1
+.PRECIOUS: Makefile
+
@INTLTOOL_DESKTOP_RULE@
distclean-local:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lxtask-0.1.7/aclocal.m4 new/lxtask-0.1.8/aclocal.m4
--- old/lxtask-0.1.7/aclocal.m4 2016-02-21 01:06:40.000000000 +0100
+++ new/lxtask-0.1.8/aclocal.m4 2017-01-25 02:57:02.000000000 +0100
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.15 -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -457,19 +457,19 @@
# nls.m4 serial 5 (gettext-0.18)
-dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014 Free Software Foundation,
-dnl Inc.
+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016 Free Software
+dnl Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl
-dnl This file can can be used in projects which are not available under
+dnl This file can be used in projects which are not available under
dnl the GNU General Public License or the GNU Library General Public
dnl License but which still want to provide support for the GNU gettext
dnl functionality.
dnl Please note that the actual code of the GNU gettext library is covered
dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
+dnl gettext package is covered by the GNU General Public License.
dnl They are *not* in the public domain.
dnl Authors:
@@ -704,7 +704,7 @@
AS_VAR_IF([$1], [""], [$5], [$4])dnl
])# PKG_CHECK_VAR
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
+# Copyright (C) 2002-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -716,10 +716,10 @@
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.14'
+[am__api_version='1.15'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.14.1], [],
+m4_if([$1], [1.15], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -735,14 +735,14 @@
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14.1])dnl
+[AM_AUTOMAKE_VERSION([1.15])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -794,7 +794,7 @@
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -825,7 +825,7 @@
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1016,7 +1016,7 @@
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1092,7 +1092,7 @@
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1182,8 +1182,8 @@
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
@@ -1257,6 +1257,9 @@
AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
fi
fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
])
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
@@ -1286,7 +1289,7 @@
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1297,7 +1300,7 @@
# Define $install_sh.
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -1307,7 +1310,7 @@
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+# Copyright (C) 2003-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1329,7 +1332,7 @@
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
# From Jim Meyering
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1364,7 +1367,7 @@
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1414,7 +1417,7 @@
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1453,7 +1456,7 @@
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1482,7 +1485,7 @@
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1529,7 +1532,7 @@
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1548,7 +1551,7 @@
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1629,7 +1632,7 @@
rm -f conftest.file
])
-# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+# Copyright (C) 2009-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1689,7 +1692,7 @@
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1717,7 +1720,7 @@
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006-2013 Free Software Foundation, Inc.
+# Copyright (C) 2006-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1736,7 +1739,7 @@
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+# Copyright (C) 2004-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lxtask-0.1.7/configure new/lxtask-0.1.8/configure
--- old/lxtask-0.1.7/configure 2016-02-21 01:06:40.000000000 +0100
+++ new/lxtask-0.1.8/configure 2017-01-25 02:57:02.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for lxtask 0.1.7.
+# Generated by GNU Autoconf 2.69 for lxtask 0.1.8.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -577,8 +577,8 @@
# Identity of this package.
PACKAGE_NAME='lxtask'
PACKAGE_TARNAME='lxtask'
-PACKAGE_VERSION='0.1.7'
-PACKAGE_STRING='lxtask 0.1.7'
+PACKAGE_VERSION='0.1.8'
+PACKAGE_STRING='lxtask 0.1.8'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -630,11 +630,11 @@
INTLLIBS
INSTOBJEXT
GMOFILES
+DATADIRNAME
CATOBJEXT
CATALOGS
MSGFMT_OPTS
GETTEXT_PACKAGE
-DATADIRNAME
ALL_LINGUAS
INTLTOOL_PERL
GMSGFMT
@@ -744,6 +744,7 @@
docdir
oldincludedir
includedir
+runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -825,6 +826,7 @@
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1077,6 +1079,15 @@
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst | --runs \
+ | --run | --ru | --r)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+ | --run=* | --ru=* | --r=*)
+ runstatedir=$ac_optarg ;;
+
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1214,7 +1225,7 @@
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
+ libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -1327,7 +1338,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 lxtask 0.1.7 to adapt to many kinds of systems.
+\`configure' configures lxtask 0.1.8 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1367,6 +1378,7 @@
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -1393,7 +1405,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of lxtask 0.1.7:";;
+ short | recursive ) echo "Configuration of lxtask 0.1.8:";;
esac
cat <<\_ACEOF
@@ -1497,7 +1509,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-lxtask configure 0.1.7
+lxtask configure 0.1.8
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1862,7 +1874,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by lxtask $as_me 0.1.7, which was
+It was created by lxtask $as_me 0.1.8, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2210,7 +2222,7 @@
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-am__api_version='1.14'
+am__api_version='1.15'
ac_aux_dir=
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
@@ -2431,7 +2443,7 @@
$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -2725,7 +2737,7 @@
# Define the identity of the package.
PACKAGE='lxtask'
- VERSION='0.1.7'
+ VERSION='0.1.8'
cat >>confdefs.h <<_ACEOF
@@ -2759,8 +2771,8 @@
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
mkdir_p='$(MKDIR_P)'
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AMTAR='$${TAR-tar}'
@@ -5303,44 +5315,6 @@
# Substitute ALL_LINGUAS so we can use it in po/Makefile
-# Set DATADIRNAME correctly if it is not set yet
-# (copied from glib-gettext.m4)
-if test -z "$DATADIRNAME"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-extern int _nl_msg_cat_cntr;
- return _nl_msg_cat_cntr
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- DATADIRNAME=share
-else
- case $host in
- *-*-solaris*)
- ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
-if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
- DATADIRNAME=share
-else
- DATADIRNAME=lib
-fi
-
- ;;
- *)
- DATADIRNAME=lib
- ;;
- esac
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-
-
@@ -6637,7 +6611,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by lxtask $as_me 0.1.7, which was
+This file was extended by lxtask $as_me 0.1.8, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -6703,7 +6677,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-lxtask config.status 0.1.7
+lxtask config.status 0.1.8
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/lxtask-0.1.7/configure.ac new/lxtask-0.1.8/configure.ac
--- old/lxtask-0.1.7/configure.ac 2016-02-21 01:06:17.000000000 +0100
+++ new/lxtask-0.1.8/configure.ac 2017-01-25 02:56:33.000000000 +0100
@@ -1,5 +1,5 @@
AC_PREREQ([2.57])
-AC_INIT(lxtask,[0.1.7], [],lxtask)
+AC_INIT(lxtask,[0.1.8], [],lxtask)
AM_INIT_AUTOMAKE([foreign no-dist-gzip dist-xz])
AM_MAINTAINER_MODE([enable])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lxtask-0.1.7/intltool.m4 new/lxtask-0.1.8/intltool.m4
--- old/lxtask-0.1.7/intltool.m4 2016-02-21 01:06:27.000000000 +0100
+++ new/lxtask-0.1.8/intltool.m4 2017-01-25 02:56:45.000000000 +0100
@@ -155,31 +155,6 @@
# Substitute ALL_LINGUAS so we can use it in po/Makefile
AC_SUBST(ALL_LINGUAS)
-# Set DATADIRNAME correctly if it is not set yet
-# (copied from glib-gettext.m4)
-if test -z "$DATADIRNAME"; then
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([[]],
- [[extern int _nl_msg_cat_cntr;
- return _nl_msg_cat_cntr]])],
- [DATADIRNAME=share],
- [case $host in
- *-*-solaris*)
- dnl On Solaris, if bind_textdomain_codeset is in libc,
- dnl GNU format message catalog is always supported,
- dnl since both are added to the libc all together.
- dnl Hence, we'd like to go with DATADIRNAME=share
- dnl in this case.
- AC_CHECK_FUNC(bind_textdomain_codeset,
- [DATADIRNAME=share], [DATADIRNAME=lib])
- ;;
- *)
- [DATADIRNAME=lib]
- ;;
- esac])
-fi
-AC_SUBST(DATADIRNAME)
-
IT_PO_SUBDIR([po])
])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lxtask-0.1.7/po/Makefile.in.in new/lxtask-0.1.8/po/Makefile.in.in
--- old/lxtask-0.1.7/po/Makefile.in.in 2016-02-21 01:06:27.000000000 +0100
+++ new/lxtask-0.1.8/po/Makefile.in.in 2017-01-25 02:56:45.000000000 +0100
@@ -33,8 +33,7 @@
datadir = @datadir@
datarootdir = @datarootdir@
libdir = @libdir@
-DATADIRNAME = @DATADIRNAME@
-itlocaledir = $(prefix)/$(DATADIRNAME)/locale
+localedir = @localedir@
subdir = po
install_sh = @install_sh@
# Automake >= 1.8 provides @mkdir_p@.
@@ -80,7 +79,7 @@
.po.pox:
$(MAKE) $(GETTEXT_PACKAGE).pot
- $(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox
+ $(MSGMERGE) $* $(GETTEXT_PACKAGE).pot -o $*.pox
.po.mo:
$(INTLTOOL_V_MSGFMT)$(MSGFMT) -o $@ $<
@@ -108,7 +107,7 @@
install-data-yes: all
linguas="$(USE_LINGUAS)"; \
for lang in $$linguas; do \
- dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
+ dir=$(DESTDIR)$(localedir)/$$lang/LC_MESSAGES; \
$(mkdir_p) $$dir; \
if test -r $$lang.gmo; then \
$(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
@@ -142,8 +141,8 @@
uninstall:
linguas="$(USE_LINGUAS)"; \
for lang in $$linguas; do \
- rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
- rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
+ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
+ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
done
check: all $(GETTEXT_PACKAGE).pot
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lxtask-0.1.7/src/Makefile.in new/lxtask-0.1.8/src/Makefile.in
--- old/lxtask-0.1.7/src/Makefile.in 2016-02-21 01:06:41.000000000 +0100
+++ new/lxtask-0.1.8/src/Makefile.in 2017-01-25 02:57:03.000000000 +0100
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -78,13 +88,12 @@
POST_UNINSTALL = :
bin_PROGRAMS = lxtask$(EXEEXT)
subdir = src
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/intltool.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
@@ -157,6 +166,7 @@
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ALL_LINGUAS = @ALL_LINGUAS@
@@ -272,6 +282,7 @@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@@ -317,7 +328,6 @@
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign src/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -697,6 +707,8 @@
ps ps-am tags tags-am uninstall uninstall-am \
uninstall-binPROGRAMS
+.PRECIOUS: Makefile
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lxtask-0.1.7/src/xfce-taskmanager-linux.c new/lxtask-0.1.8/src/xfce-taskmanager-linux.c
--- old/lxtask-0.1.7/src/xfce-taskmanager-linux.c 2014-10-19 20:57:15.000000000 +0200
+++ new/lxtask-0.1.8/src/xfce-taskmanager-linux.c 2017-01-25 02:56:33.000000000 +0100
@@ -169,7 +169,10 @@
task->time_percentage = 0;
task->ppid = ppid;
- fstat(fd,&st);
+ sprintf(line,"/proc/%d/task",(int)pid);
+ /* SF bug #843: /proc/%d/stat owned by UID instead of EUID */
+ if (stat(line,&st) < 0)
+ fstat(fd,&st);
task->uid=st.st_uid;
passwdp = getpwuid(task->uid);
if( passwdp != NULL && passwdp->pw_name != NULL)
1
0
Hello community,
here is the log from the commit of package python-Flask-BabelEx for openSUSE:Factory checked in at 2018-10-26 11:09:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Flask-BabelEx (Old)
and /work/SRC/openSUSE:Factory/.python-Flask-BabelEx.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Flask-BabelEx"
Fri Oct 26 11:09:37 2018 rev:2 rq:644502 version:0.9.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Flask-BabelEx/python-Flask-BabelEx.changes 2018-10-25 09:12:54.694269357 +0200
+++ /work/SRC/openSUSE:Factory/.python-Flask-BabelEx.new/python-Flask-BabelEx.changes 2018-10-26 11:09:37.869771111 +0200
@@ -1,0 +2,5 @@
+Wed Oct 24 15:20:27 UTC 2018 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Use noun phrase in summary. Fix grammar in description.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-Flask-BabelEx.spec ++++++
--- /var/tmp/diff_new_pack.3LrBby/_old 2018-10-26 11:09:38.201770659 +0200
+++ /var/tmp/diff_new_pack.3LrBby/_new 2018-10-26 11:09:38.201770659 +0200
@@ -20,7 +20,7 @@
Version: 0.9.3
Release: 0
License: BSD-3-Clause
-Summary: Adds i18n/l10n support to Flask applications
+Summary: i18n/l10n support for Flask applications
Url: http://github.com/mrjoes/flask-babelex
Group: Development/Languages/Python
Source: https://files.pythonhosted.org/packages/source/F/Flask-BabelEx/Flask-BabelE…
@@ -43,8 +43,8 @@
%python_subpackages
%description
-Adds i18n/l10n support to Flask applications with the help of the Babel library.
-This is a fork of official Flask-Babel extension with some more features.
+This package adds i18n/l10n support to Flask applications with the help of the Babel library.
+This is a fork of the official Flask-Babel extension with some more features.
%prep
%setup -q -n Flask-BabelEx-%{version}
1
0
Hello community,
here is the log from the commit of package python-Flask-Paranoid for openSUSE:Factory checked in at 2018-10-26 11:09:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Flask-Paranoid (Old)
and /work/SRC/openSUSE:Factory/.python-Flask-Paranoid.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Flask-Paranoid"
Fri Oct 26 11:09:28 2018 rev:2 rq:644501 version:0.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Flask-Paranoid/python-Flask-Paranoid.changes 2018-10-25 09:12:19.150290637 +0200
+++ /work/SRC/openSUSE:Factory/.python-Flask-Paranoid.new/python-Flask-Paranoid.changes 2018-10-26 11:09:37.397771754 +0200
@@ -1,0 +2,6 @@
+Wed Oct 24 14:05:47 UTC 2018 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Ensure neutrality of description. Add paragraph from
+ https://flask-paranoid.readthedocs.io/en/latest/ .
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-Flask-Paranoid.spec ++++++
--- /var/tmp/diff_new_pack.9BFWK4/_old 2018-10-26 11:09:37.749771275 +0200
+++ /var/tmp/diff_new_pack.9BFWK4/_new 2018-10-26 11:09:37.753771269 +0200
@@ -20,7 +20,7 @@
Version: 0.2.0
Release: 0
License: MIT
-Summary: Simple user session protection
+Summary: Flask user session protection
Url: http://github.com/miguelgrinberg/flask-paranoid/
Group: Development/Languages/Python
# Pypi sources don't include tests
@@ -39,8 +39,12 @@
%python_subpackages
%description
-Simple user session protection that generates a "paranoid" token according to
-the IP address and user agent when a client connects to the flask application.
+Flask-Paranoid is an extension for the Flask framework that protects the
+application against certain attacks in which the user session cookie is stolen
+and then used by the attacker.
+
+The extension generates a "paranoid" token according to the IP address and user
+agent when a client connects to the flask application.
%prep
%setup -q -n flask-paranoid-0.2
1
0
Hello community,
here is the log from the commit of package mkvtoolnix for openSUSE:Factory checked in at 2018-10-26 11:09:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mkvtoolnix (Old)
and /work/SRC/openSUSE:Factory/.mkvtoolnix.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mkvtoolnix"
Fri Oct 26 11:09:21 2018 rev:106 rq:644495 version:27.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/mkvtoolnix/mkvtoolnix.changes 2018-08-27 12:57:23.808688185 +0200
+++ /work/SRC/openSUSE:Factory/.mkvtoolnix.new/mkvtoolnix.changes 2018-10-26 11:09:33.001777747 +0200
@@ -1,0 +2,64 @@
+Thu Oct 18 08:08:54 UTC 2018 - Ferdinand Thiessen <rpm(a)fthiessen.de>
+
+- Update to version 27.0.0:
+ * mkvmerge: New feature: chapters: the timestamps of chapters
+ read from containers or from chapter files can be adjusted
+ (multiplication and addition) with the new
+ `--chapter-sync` option or using the special track ID `-2`
+ for the existing `--sync` option.
+ Bugfix: AC-3: dialog normalization gain removal was corrupting
+ E-AC-3 frames irreversibly by writing checksums in places where
+ they didn't belong. Additionally only the first E-AC-3 frame in
+ a Matroska was processed but not additional dependent frames in
+ the same block.
+ * MKVToolNix GUI: New feature: multiplexer: adjusted & added
+ controls for mkvmerge's new feature of being able to adjust
+ chapter timestamps.
+ New feature: multiplexer: the GUI can now ask for confirmation
+ when the user is about to create a file that won't contain
+ audio tracks. It does this by default if at least one source
+ file contains an audio track.
+ Bugfix: fixed a leak of Windows font resources leading to a
+ general slowdown and subsequent crash.
+- Update to version 26.0.0:
+ * mkvmerge: New feature: chapter generation: if the name template
+ given by `--generate-chapters-name-template` is empty, no names
+ will be generated for the chapter atoms.
+ New feature: chapters: chapter names generated from MPLS files
+ will now use the name template if one is set via
+ `--generate-chapters-name-template`.
+ New feature: mkvmerge will no longer abort with an error message
+ if no audio, video and subtitle tracks should be multiplexed.
+ This allows copying of chapters from non-chapter source files.
+ Bugfix: Matroska reader: fixed wrong timestamps when appending
+ Matroska files where the second Matroska file's first timestamp
+ is bigger than 0.
+ Bugfix: MP4 reader: fixed division by zero errors during file
+ identification if the timescale is 0 in the `MVHD` atom.
+ Bugfix: Windows Television DVR files are now recognized as an
+ unsupported file type. This prevents mis-detection as MPEG-2
+ with an accompanying flood of error messages.
+ * MKVToolNix GUI: New feature: the font size in the tool
+ selector on the left will scale with the font size the
+ user selects in the preferences.
+ New feature: the GUI will no longer automatically resize the
+ columns in tree and list views to match the content size.
+ Instead it remembers and restores the widths set by the user.
+ New feature: multiplexer: the chapter name template will now be
+ set automatically to the name template in the preferences'
+ "chapter editor" section. Additionally the option
+ `--generate-chapters-name-template …` will be passed to
+ mkvmerge in situations when mkvmerge will generate chapters.
+ New feature: chapter editor: if the chapter name template is empty,
+ chapters will be generated without names.
+ New feature: chapter editor: added an option to remove all chapter
+ names to the "additional modifications" dialog.
+ Bugfix: info tool: under certain circumstances "cues" were shown at
+ the wrong level (inside the previous master element instead of on
+ lvel 1).
+ Bugfix: job queue: fixed invalid memory handling and consequent
+ crashes when using the "edit in corresponding tool & remove from
+ job queue" option if one of the files in that job contained
+ attached files.
+
+-------------------------------------------------------------------
Old:
----
mkvtoolnix-25.0.0.tar.xz
mkvtoolnix-25.0.0.tar.xz.sig
New:
----
mkvtoolnix-27.0.0.tar.xz
mkvtoolnix-27.0.0.tar.xz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mkvtoolnix.spec ++++++
--- /var/tmp/diff_new_pack.7nkZ3c/_old 2018-10-26 11:09:34.817775271 +0200
+++ /var/tmp/diff_new_pack.7nkZ3c/_new 2018-10-26 11:09:34.817775271 +0200
@@ -17,7 +17,7 @@
Name: mkvtoolnix
-Version: 25.0.0
+Version: 27.0.0
Release: 0
Summary: Tools to Create, Alter, and Inspect Matroska Files
License: GPL-2.0+
@@ -135,10 +135,11 @@
%files gui -f mkvtoolnix-gui.lang
%defattr(-,root,root)
%{_bindir}/mkvtoolnix-gui
+%{_datadir}/metainfo/org.bunkus.mkvtoolnix-gui.appdata.xml
+%{_datadir}/mime/packages/org.bunkus.mkvtoolnix-gui.xml
%{_datadir}/%{name}/sounds
%{_datadir}/applications/org.bunkus.mkvtoolnix-gui.desktop
%{_datadir}/icons/hicolor/*/apps/mkv*.png
-%{_datadir}/mime/packages/mkvtoolnix.xml
%{_mandir}/man1/mkvtoolnix-gui.1%{ext_man}
%changelog
++++++ mkvtoolnix-25.0.0.tar.xz -> mkvtoolnix-27.0.0.tar.xz ++++++
++++ 227372 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-vcrpy for openSUSE:Factory checked in at 2018-10-26 11:08:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-vcrpy (Old)
and /work/SRC/openSUSE:Factory/.python-vcrpy.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-vcrpy"
Fri Oct 26 11:08:39 2018 rev:2 rq:644399 version:2.0.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-vcrpy/python-vcrpy.changes 2017-08-30 16:23:59.354855452 +0200
+++ /work/SRC/openSUSE:Factory/.python-vcrpy.new/python-vcrpy.changes 2018-10-26 11:08:47.765839974 +0200
@@ -1,0 +2,11 @@
+Wed Oct 24 15:24:59 UTC 2018 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Use noun phrase in summary and adjust descriptions.
+
+-------------------------------------------------------------------
+Wed Oct 24 13:31:40 UTC 2018 - Tomáš Chvátal <tchvatal(a)suse.com>
+
+- Version update to 2.0.1:
+ * Support python 3.7 (fix httplib2 and urllib2, thanks @felixonmars)
+
+-------------------------------------------------------------------
Old:
----
vcrpy-1.11.1.tar.gz
New:
----
vcrpy-2.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-vcrpy.spec ++++++
--- /var/tmp/diff_new_pack.Uisx2r/_old 2018-10-26 11:08:51.381834963 +0200
+++ /var/tmp/diff_new_pack.Uisx2r/_new 2018-10-26 11:08:51.385834957 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-vcrpy
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2015 LISA GmbH, Bingen, Germany.
#
# All modifications and additions to the file contributed by third parties
@@ -13,37 +13,34 @@
# 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/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-%bcond_without test
Name: python-vcrpy
-Version: 1.11.1
+Version: 2.0.1
Release: 0
-Summary: Automatically mock your HTTP interactions to simplify and speed up testing
+Summary: Python module to mock and replay HTTP interactions
License: MIT
Group: Development/Languages/Python
-Url: https://github.com/kevin1024/vcrpy
+URL: https://github.com/kevin1024/vcrpy
Source: https://files.pythonhosted.org/packages/source/v/vcrpy/vcrpy-%{version}.tar…
-BuildRequires: %{python_module devel}
-BuildRequires: %{python_module setuptools}
-BuildRequires: fdupes
-BuildRequires: python-rpm-macros
-%if %{with test}
BuildRequires: %{python_module PyYAML}
BuildRequires: %{python_module pytest-httpbin}
BuildRequires: %{python_module pytest}
+BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module six >= 1.5}
BuildRequires: %{python_module wrapt}
+BuildRequires: fdupes
+BuildRequires: python-rpm-macros
BuildRequires: python2-contextlib2
BuildRequires: python2-mock
BuildRequires: python3-yarl
-%endif
Requires: python-PyYAML
Requires: python-six >= 1.5
Requires: python-wrapt
+BuildArch: noarch
%ifpython2
Requires: python2-contextlib2
Requires: python2-mock
@@ -51,14 +48,11 @@
%ifpython3
Requires: python3-yarl
%endif
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-BuildArch: noarch
-
%python_subpackages
%description
-Record your test suite's HTTP interactions and replay them during future test
-runs for fast, deterministic, accurate tests.
+This module records a test suite's HTTP interactions and replays them during future
+test runs for deterministic tests.
This is a Python version of Ruby's VCR library.
@@ -72,16 +66,14 @@
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}/vcr
-%if %{with test}
%check
# Skip TestVCRConnection.testing_connect. Attempts
# a real connection.
%python_exec -m pytest -k "not testing_connect" tests
-%endif
%files %{python_files}
-%defattr(-,root,root,-)
-%doc LICENSE.txt README.rst
+%license LICENSE.txt
+%doc README.rst
%{python_sitelib}/*
%changelog
++++++ vcrpy-1.11.1.tar.gz -> vcrpy-2.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/PKG-INFO new/vcrpy-2.0.1/PKG-INFO
--- old/vcrpy-1.11.1/PKG-INFO 2017-05-28 04:48:36.000000000 +0200
+++ new/vcrpy-2.0.1/PKG-INFO 2018-09-23 20:38:58.000000000 +0200
@@ -1,12 +1,12 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
Name: vcrpy
-Version: 1.11.1
+Version: 2.0.1
Summary: Automatically mock your HTTP interactions to simplify and speed up testing
Home-page: https://github.com/kevin1024/vcrpy
Author: Kevin McCarthy
Author-email: me(a)kevinmccarthy.org
License: MIT
-Description: |PyPI| |Build Status| |Waffle Ready| |Gitter|
+Description: |PyPI| |Python versions| |Build Status| |Waffle Ready| |Gitter|
VCR.py
======
@@ -49,20 +49,6 @@
all HTTP interactions, which will update them to correspond to the new
API.
- Support
- -------
-
- VCR.py works great with the following HTTP clients:
-
- - requests
- - aiohttp
- - urllib3
- - tornado
- - urllib2
- - boto
- - boto3
-
-
License
=======
@@ -70,10 +56,12 @@
more details
.. |PyPI| image:: https://img.shields.io/pypi/v/vcrpy.svg
- :target: https://pypi.python.org/pypi/vcrpy-unittest
- .. |Build Status| image:: https://secure.travis-ci.org/kevin1024/vcrpy.png?branch=master
+ :target: https://pypi.python.org/pypi/vcrpy
+ .. |Python versions| image:: https://img.shields.io/pypi/pyversions/vcrpy.svg
+ :target: https://pypi.python.org/pypi/vcrpy
+ .. |Build Status| image:: https://secure.travis-ci.org/kevin1024/vcrpy.svg?branch=master
:target: http://travis-ci.org/kevin1024/vcrpy
- .. |Waffle Ready| image:: https://badge.waffle.io/kevin1024/vcrpy.png?label=ready&title=waffle
+ .. |Waffle Ready| image:: https://badge.waffle.io/kevin1024/vcrpy.svg?label=ready&title=waffle
:target: https://waffle.io/kevin1024/vcrpy
.. |Gitter| image:: https://badges.gitter.im/Join%20Chat.svg
:alt: Join the chat at https://gitter.im/kevin1024/vcrpy
@@ -84,7 +72,16 @@
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: License :: OSI Approved :: MIT License
+Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/README.rst new/vcrpy-2.0.1/README.rst
--- old/vcrpy-1.11.1/README.rst 2016-08-14 22:39:58.000000000 +0200
+++ new/vcrpy-2.0.1/README.rst 2018-09-19 15:58:31.000000000 +0200
@@ -1,4 +1,4 @@
-|PyPI| |Build Status| |Waffle Ready| |Gitter|
+|PyPI| |Python versions| |Build Status| |Waffle Ready| |Gitter|
VCR.py
======
@@ -41,20 +41,6 @@
all HTTP interactions, which will update them to correspond to the new
API.
-Support
--------
-
-VCR.py works great with the following HTTP clients:
-
-- requests
-- aiohttp
-- urllib3
-- tornado
-- urllib2
-- boto
-- boto3
-
-
License
=======
@@ -62,10 +48,12 @@
more details
.. |PyPI| image:: https://img.shields.io/pypi/v/vcrpy.svg
- :target: https://pypi.python.org/pypi/vcrpy-unittest
-.. |Build Status| image:: https://secure.travis-ci.org/kevin1024/vcrpy.png?branch=master
+ :target: https://pypi.python.org/pypi/vcrpy
+.. |Python versions| image:: https://img.shields.io/pypi/pyversions/vcrpy.svg
+ :target: https://pypi.python.org/pypi/vcrpy
+.. |Build Status| image:: https://secure.travis-ci.org/kevin1024/vcrpy.svg?branch=master
:target: http://travis-ci.org/kevin1024/vcrpy
-.. |Waffle Ready| image:: https://badge.waffle.io/kevin1024/vcrpy.png?label=ready&title=waffle
+.. |Waffle Ready| image:: https://badge.waffle.io/kevin1024/vcrpy.svg?label=ready&title=waffle
:target: https://waffle.io/kevin1024/vcrpy
.. |Gitter| image:: https://badges.gitter.im/Join%20Chat.svg
:alt: Join the chat at https://gitter.im/kevin1024/vcrpy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/setup.cfg new/vcrpy-2.0.1/setup.cfg
--- old/vcrpy-1.11.1/setup.cfg 2017-05-28 04:48:36.000000000 +0200
+++ new/vcrpy-2.0.1/setup.cfg 2018-09-23 20:38:58.000000000 +0200
@@ -2,7 +2,6 @@
universal = 1
[egg_info]
-tag_svn_revision = 0
tag_build =
tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/setup.py new/vcrpy-2.0.1/setup.py
--- old/vcrpy-1.11.1/setup.py 2017-05-28 04:47:05.000000000 +0200
+++ new/vcrpy-2.0.1/setup.py 2018-09-23 20:23:07.000000000 +0200
@@ -1,11 +1,9 @@
#!/usr/bin/env python
import sys
-import logging
from setuptools import setup, find_packages
from setuptools.command.test import test as TestCommand
-import pkg_resources
long_description = open('README.rst', 'r').read()
@@ -24,31 +22,14 @@
sys.exit(errno)
-install_requires = ['PyYAML', 'wrapt', 'six>=1.5']
-
-
-extras_require = {
- ':python_version in "2.4, 2.5, 2.6"':
- ['contextlib2', 'backport_collections', 'mock'],
- ':python_version in "2.7, 3.1, 3.2"': ['contextlib2', 'mock'],
- ':python_version in "3.4, 3.5, 3.6"': ['yarl'],
-}
-
-
-try:
- if 'bdist_wheel' not in sys.argv:
- for key, value in extras_require.items():
- if key.startswith(':') and pkg_resources.evaluate_marker(key[1:]):
- install_requires.extend(value)
-except Exception:
- logging.getLogger(__name__).exception(
- 'Something went wrong calculating platform specific dependencies, so '
- "you're getting them all!"
- )
- for key, value in extras_require.items():
- if key.startswith(':'):
- install_requires.extend(value)
-
+install_requires = [
+ 'PyYAML',
+ 'wrapt',
+ 'six>=1.5',
+ 'contextlib2; python_version=="2.7"',
+ 'mock; python_version=="2.7"',
+ 'yarl; python_version>="3.4"',
+]
excluded_packages = ["tests*"]
if sys.version_info[0] == 2:
@@ -56,7 +37,7 @@
setup(
name='vcrpy',
- version='1.11.1',
+ version='2.0.1',
description=(
"Automatically mock your HTTP interactions to simplify and "
"speed up testing"
@@ -66,8 +47,8 @@
author_email='me(a)kevinmccarthy.org',
url='https://github.com/kevin1024/vcrpy',
packages=find_packages(exclude=excluded_packages),
+ python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*',
install_requires=install_requires,
- extras_require=extras_require,
license='MIT',
tests_require=['pytest', 'mock', 'pytest-httpbin'],
classifiers=[
@@ -75,7 +56,15 @@
'Environment :: Console',
'Intended Audience :: Developers',
'Programming Language :: Python',
+ 'Programming Language :: Python :: 2',
+ 'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
+ 'Programming Language :: Python :: 3.4',
+ 'Programming Language :: Python :: 3.5',
+ 'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
+ 'Programming Language :: Python :: Implementation :: CPython',
+ 'Programming Language :: Python :: Implementation :: PyPy',
'Topic :: Software Development :: Testing',
'Topic :: Internet :: WWW/HTTP',
'License :: OSI Approved :: MIT License',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/tests/integration/aiohttp_utils.py new/vcrpy-2.0.1/tests/integration/aiohttp_utils.py
--- old/vcrpy-1.11.1/tests/integration/aiohttp_utils.py 2017-05-27 21:45:01.000000000 +0200
+++ new/vcrpy-2.0.1/tests/integration/aiohttp_utils.py 2018-09-19 15:58:31.000000000 +0200
@@ -1,13 +1,33 @@
+# flake8: noqa
import asyncio
+
import aiohttp
+from aiohttp.test_utils import TestClient
+
+
+async def aiohttp_request(loop, method, url, output='text', encoding='utf-8', content_type=None, **kwargs):
+ session = aiohttp.ClientSession(loop=loop)
+ response_ctx = session.request(method, url, **kwargs)
+
+ response = await response_ctx.__aenter__()
+ if output == 'text':
+ content = await response.text()
+ elif output == 'json':
+ content_type = content_type or 'application/json'
+ content = await response.json(encoding=encoding, content_type=content_type)
+ elif output == 'raw':
+ content = await response.read()
+
+ response_ctx._resp.close()
+ await session.close()
+
+ return response, content
+
+def aiohttp_app():
+ async def hello(request):
+ return aiohttp.web.Response(text='hello')
-(a)asyncio.coroutine
-def aiohttp_request(loop, method, url, as_text, **kwargs):
- with aiohttp.ClientSession(loop=loop) as session:
- response = yield from session.request(method, url, **kwargs) # NOQA: E999
- if as_text:
- content = yield from response.text() # NOQA: E999
- else:
- content = yield from response.json() # NOQA: E999
- return response, content
+ app = aiohttp.web.Application()
+ app.router.add_get('/', hello)
+ return app
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/tests/integration/async_def.py new/vcrpy-2.0.1/tests/integration/async_def.py
--- old/vcrpy-1.11.1/tests/integration/async_def.py 2017-05-27 21:45:01.000000000 +0200
+++ new/vcrpy-2.0.1/tests/integration/async_def.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
-import aiohttp
-import pytest
-import vcr
-
-
-(a)vcr.use_cassette()
-(a)pytest.mark.asyncio
-async def test_http(): # noqa: E999
- async with aiohttp.ClientSession() as session:
- url = 'https://httpbin.org/get'
- params = {'ham': 'spam'}
- resp = await session.get(url, params=params) # noqa: E999
- assert (await resp.json())['args'] == {'ham': 'spam'} # noqa: E999
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/tests/integration/test_aiohttp.py new/vcrpy-2.0.1/tests/integration/test_aiohttp.py
--- old/vcrpy-1.11.1/tests/integration/test_aiohttp.py 2017-05-27 21:45:01.000000000 +0200
+++ new/vcrpy-2.0.1/tests/integration/test_aiohttp.py 2018-09-19 15:58:31.000000000 +0200
@@ -1,18 +1,11 @@
+import contextlib
+
import pytest
+asyncio = pytest.importorskip("asyncio")
aiohttp = pytest.importorskip("aiohttp")
-import asyncio # noqa: E402
-import contextlib # noqa: E402
-
-import pytest # noqa: E402
import vcr # noqa: E402
-
-from .aiohttp_utils import aiohttp_request # noqa: E402
-
-try:
- from .async_def import test_http # noqa: F401
-except SyntaxError:
- pass
+from .aiohttp_utils import aiohttp_app, aiohttp_request # noqa: E402
def run_in_loop(fn):
@@ -22,19 +15,19 @@
return loop.run_until_complete(task)
-def request(method, url, as_text=True, **kwargs):
+def request(method, url, output='text', **kwargs):
def run(loop):
- return aiohttp_request(loop, method, url, as_text, **kwargs)
+ return aiohttp_request(loop, method, url, output=output, **kwargs)
return run_in_loop(run)
-def get(url, as_text=True, **kwargs):
- return request('GET', url, as_text, **kwargs)
+def get(url, output='text', **kwargs):
+ return request('GET', url, output=output, **kwargs)
-def post(url, as_text=True, **kwargs):
- return request('POST', url, as_text, **kwargs)
+def post(url, output='text', **kwargs):
+ return request('POST', url, output='text', **kwargs)
@pytest.fixture(params=["https", "http"])
@@ -78,15 +71,28 @@
def test_json(tmpdir, scheme):
url = scheme + '://httpbin.org/get'
+ headers = {'Content-Type': 'application/json'}
+
with vcr.use_cassette(str(tmpdir.join('json.yaml'))):
- _, response_json = get(url, as_text=False)
+ _, response_json = get(url, output='json', headers=headers)
with vcr.use_cassette(str(tmpdir.join('json.yaml'))) as cassette:
- _, cassette_response_json = get(url, as_text=False)
+ _, cassette_response_json = get(url, output='json', headers=headers)
assert cassette_response_json == response_json
assert cassette.play_count == 1
+def test_binary(tmpdir, scheme):
+ url = scheme + '://httpbin.org/image/png'
+ with vcr.use_cassette(str(tmpdir.join('binary.yaml'))):
+ _, response_binary = get(url, output='raw')
+
+ with vcr.use_cassette(str(tmpdir.join('binary.yaml'))) as cassette:
+ _, cassette_response_binary = get(url, output='raw')
+ assert cassette_response_binary == response_binary
+ assert cassette.play_count == 1
+
+
def test_post(tmpdir, scheme):
data = {'key1': 'value1', 'key2': 'value2'}
url = scheme + '://httpbin.org/post'
@@ -101,29 +107,73 @@
def test_params(tmpdir, scheme):
url = scheme + '://httpbin.org/get'
+ headers = {'Content-Type': 'application/json'}
params = {'a': 1, 'b': False, 'c': 'c'}
+
with vcr.use_cassette(str(tmpdir.join('get.yaml'))) as cassette:
- _, response_json = get(url, as_text=False, params=params)
+ _, response_json = get(url, output='json', params=params, headers=headers)
with vcr.use_cassette(str(tmpdir.join('get.yaml'))) as cassette:
- _, cassette_response_json = get(url, as_text=False, params=params)
+ _, cassette_response_json = get(url, output='json', params=params, headers=headers)
assert cassette_response_json == response_json
assert cassette.play_count == 1
def test_params_same_url_distinct_params(tmpdir, scheme):
url = scheme + '://httpbin.org/get'
+ headers = {'Content-Type': 'application/json'}
params = {'a': 1, 'b': False, 'c': 'c'}
+
with vcr.use_cassette(str(tmpdir.join('get.yaml'))) as cassette:
- _, response_json = get(url, as_text=False, params=params)
+ _, response_json = get(url, output='json', params=params, headers=headers)
with vcr.use_cassette(str(tmpdir.join('get.yaml'))) as cassette:
- _, cassette_response_json = get(url, as_text=False, params=params)
+ _, cassette_response_json = get(url, output='json', params=params, headers=headers)
assert cassette_response_json == response_json
assert cassette.play_count == 1
other_params = {'other': 'params'}
with vcr.use_cassette(str(tmpdir.join('get.yaml'))) as cassette:
- response, cassette_response_text = get(url, as_text=True, params=other_params)
+ response, cassette_response_text = get(url, output='text', params=other_params)
assert 'No match for the request' in cassette_response_text
assert response.status == 599
+
+
+def test_params_on_url(tmpdir, scheme):
+ url = scheme + '://httpbin.org/get?a=1&b=foo'
+ headers = {'Content-Type': 'application/json'}
+
+ with vcr.use_cassette(str(tmpdir.join('get.yaml'))) as cassette:
+ _, response_json = get(url, output='json', headers=headers)
+ request = cassette.requests[0]
+ assert request.url == url
+
+ with vcr.use_cassette(str(tmpdir.join('get.yaml'))) as cassette:
+ _, cassette_response_json = get(url, output='json', headers=headers)
+ request = cassette.requests[0]
+ assert request.url == url
+ assert cassette_response_json == response_json
+ assert cassette.play_count == 1
+
+
+def test_aiohttp_test_client(aiohttp_client, tmpdir):
+ loop = asyncio.get_event_loop()
+ app = aiohttp_app()
+ url = '/'
+ client = loop.run_until_complete(aiohttp_client(app))
+
+ with vcr.use_cassette(str(tmpdir.join('get.yaml'))):
+ response = loop.run_until_complete(client.get(url))
+
+ assert response.status == 200
+ response_text = loop.run_until_complete(response.text())
+ assert response_text == 'hello'
+
+ with vcr.use_cassette(str(tmpdir.join('get.yaml'))) as cassette:
+ response = loop.run_until_complete(client.get(url))
+
+ request = cassette.requests[0]
+ assert request.url == str(client.make_url(url))
+ response_text = loop.run_until_complete(response.text())
+ assert response_text == 'hello'
+ assert cassette.play_count == 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/tests/integration/test_httplib2.py new/vcrpy-2.0.1/tests/integration/test_httplib2.py
--- old/vcrpy-1.11.1/tests/integration/test_httplib2.py 2016-05-02 02:20:30.000000000 +0200
+++ new/vcrpy-2.0.1/tests/integration/test_httplib2.py 2018-09-19 15:58:31.000000000 +0200
@@ -1,12 +1,12 @@
# -*- coding: utf-8 -*-
'''Integration tests with httplib2'''
-# External imports
+import sys
+
from six.moves.urllib_parse import urlencode
import pytest
import pytest_httpbin.certs
-# Internal imports
import vcr
from assertions import assert_cassette_has_one_response
@@ -19,7 +19,12 @@
Returns an httplib2 HTTP instance
with the certificate replaced by the httpbin one.
"""
- return httplib2.Http(ca_certs=pytest_httpbin.certs.where())
+ kwargs = {
+ 'ca_certs': pytest_httpbin.certs.where()
+ }
+ if sys.version_info[:2] == (3, 7):
+ kwargs['disable_ssl_certificate_validation'] = True
+ return httplib2.Http(**kwargs)
def test_response_code(tmpdir, httpbin_both):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/tests/integration/test_ignore.py new/vcrpy-2.0.1/tests/integration/test_ignore.py
--- old/vcrpy-1.11.1/tests/integration/test_ignore.py 2016-05-02 02:20:30.000000000 +0200
+++ new/vcrpy-2.0.1/tests/integration/test_ignore.py 2018-09-18 16:52:17.000000000 +0200
@@ -26,9 +26,9 @@
with overridden_dns({'httpbin.org': '127.0.0.1'}):
cass_file = str(tmpdir.join('filter_qs.yaml'))
with vcr.use_cassette(cass_file, ignore_localhost=True) as cass:
- urlopen('http://localhost:{0}/'.format(httpbin.port))
+ urlopen('http://localhost:{}/'.format(httpbin.port))
assert len(cass) == 0
- urlopen('http://httpbin.org:{0}/'.format(httpbin.port))
+ urlopen('http://httpbin.org:{}/'.format(httpbin.port))
assert len(cass) == 1
@@ -39,9 +39,9 @@
cass_file,
ignore_hosts=['httpbin.org']
) as cass:
- urlopen('http://httpbin.org:{0}/'.format(httpbin.port))
+ urlopen('http://httpbin.org:{}/'.format(httpbin.port))
assert len(cass) == 0
- urlopen('http://localhost:{0}/'.format(httpbin.port))
+ urlopen('http://localhost:{}/'.format(httpbin.port))
assert len(cass) == 1
@@ -53,8 +53,8 @@
ignore_hosts=['httpbin.org'],
ignore_localhost=True
) as cass:
- urlopen('http://httpbin.org:{0}'.format(httpbin.port))
- urlopen('http://localhost:{0}'.format(httpbin.port))
+ urlopen('http://httpbin.org:{}'.format(httpbin.port))
+ urlopen('http://localhost:{}'.format(httpbin.port))
assert len(cass) == 0
@@ -62,12 +62,12 @@
with overridden_dns({'httpbin.org': '127.0.0.1'}):
cass_file = str(tmpdir.join('filter_qs.yaml'))
with vcr.use_cassette(cass_file, ignore_localhost=True) as cass:
- urlopen('http://localhost:{0}'.format(httpbin.port))
+ urlopen('http://localhost:{}'.format(httpbin.port))
assert len(cass) == 0
- urlopen('http://httpbin.org:{0}'.format(httpbin.port))
+ urlopen('http://httpbin.org:{}'.format(httpbin.port))
assert len(cass) == 1
with vcr.use_cassette(cass_file, ignore_localhost=True) as cass:
assert len(cass) == 1
- urlopen('http://localhost:{0}'.format(httpbin.port))
- urlopen('http://httpbin.org:{0}'.format(httpbin.port))
+ urlopen('http://localhost:{}'.format(httpbin.port))
+ urlopen('http://httpbin.org:{}'.format(httpbin.port))
assert len(cass) == 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/tests/integration/test_proxy.py new/vcrpy-2.0.1/tests/integration/test_proxy.py
--- old/vcrpy-1.11.1/tests/integration/test_proxy.py 1970-01-01 01:00:00.000000000 +0100
+++ new/vcrpy-2.0.1/tests/integration/test_proxy.py 2018-09-19 15:58:31.000000000 +0200
@@ -0,0 +1,60 @@
+# -*- coding: utf-8 -*-
+'''Test using a proxy.'''
+
+# External imports
+import multiprocessing
+import pytest
+
+from six.moves import socketserver, SimpleHTTPServer
+from six.moves.urllib.request import urlopen
+
+# Internal imports
+import vcr
+
+# Conditional imports
+requests = pytest.importorskip("requests")
+
+
+class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
+ '''
+ Simple proxy server.
+
+ (Inspired by: http://effbot.org/librarybook/simplehttpserver.htm).
+ '''
+ def do_GET(self):
+ upstream_response = urlopen(self.path)
+ try:
+ status = upstream_response.status
+ headers = upstream_response.headers.items()
+ except AttributeError:
+ # In Python 2 the response is an addinfourl instance.
+ status = upstream_response.code
+ headers = upstream_response.info().items()
+ self.send_response(status, upstream_response.msg)
+ for header in headers:
+ self.send_header(*header)
+ self.end_headers()
+ self.copyfile(upstream_response, self.wfile)
+
+
+(a)pytest.yield_fixture(scope='session')
+def proxy_server():
+ httpd = socketserver.ThreadingTCPServer(('', 0), Proxy)
+ proxy_process = multiprocessing.Process(
+ target=httpd.serve_forever,
+ )
+ proxy_process.start()
+ yield 'http://{0}:{1}'.format(*httpd.server_address)
+ proxy_process.terminate()
+
+
+def test_use_proxy(tmpdir, httpbin, proxy_server):
+ '''Ensure that it works with a proxy.'''
+ with vcr.use_cassette(str(tmpdir.join('proxy.yaml'))):
+ response = requests.get(httpbin.url, proxies={'http': proxy_server})
+
+ with vcr.use_cassette(str(tmpdir.join('proxy.yaml'))) as cassette:
+ cassette_response = requests.get(httpbin.url, proxies={'http': proxy_server})
+
+ assert cassette_response.headers == response.headers
+ assert cassette.play_count == 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/tests/integration/test_register_persister.py new/vcrpy-2.0.1/tests/integration/test_register_persister.py
--- old/vcrpy-1.11.1/tests/integration/test_register_persister.py 2017-05-27 21:45:01.000000000 +0200
+++ new/vcrpy-2.0.1/tests/integration/test_register_persister.py 2018-09-18 16:52:17.000000000 +0200
@@ -10,10 +10,25 @@
from vcr.persisters.filesystem import FilesystemPersister
+class CustomFilesystemPersister(object):
+ '''Behaves just like default FilesystemPersister but adds .test extension
+ to the cassette file'''
+ @staticmethod
+ def load_cassette(cassette_path, serializer):
+ cassette_path += '.test'
+ return FilesystemPersister.load_cassette(cassette_path, serializer)
+
+ @staticmethod
+ def save_cassette(cassette_path, cassette_dict, serializer):
+ cassette_path += '.test'
+ FilesystemPersister.save_cassette(cassette_path, cassette_dict,
+ serializer)
+
+
def test_save_cassette_with_custom_persister(tmpdir, httpbin):
'''Ensure you can save a cassette using custom persister'''
my_vcr = vcr.VCR()
- my_vcr.register_persister(FilesystemPersister)
+ my_vcr.register_persister(CustomFilesystemPersister)
# Check to make sure directory doesnt exist
assert not os.path.exists(str(tmpdir.join('nonexistent')))
@@ -23,7 +38,7 @@
urlopen(httpbin.url).read()
# Callback should have made the file and the directory
- assert os.path.exists(str(tmpdir.join('nonexistent', 'cassette.yml')))
+ assert os.path.exists(str(tmpdir.join('nonexistent', 'cassette.yml.test')))
def test_load_cassette_with_custom_persister(tmpdir, httpbin):
@@ -31,9 +46,9 @@
Ensure you can load a cassette using custom persister
'''
my_vcr = vcr.VCR()
- my_vcr.register_persister(FilesystemPersister)
+ my_vcr.register_persister(CustomFilesystemPersister)
- test_fixture = str(tmpdir.join('synopsis.json'))
+ test_fixture = str(tmpdir.join('synopsis.json.test'))
with my_vcr.use_cassette(test_fixture, serializer='json'):
response = urlopen(httpbin.url).read()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/tests/integration/test_requests.py new/vcrpy-2.0.1/tests/integration/test_requests.py
--- old/vcrpy-1.11.1/tests/integration/test_requests.py 2017-05-28 01:39:41.000000000 +0200
+++ new/vcrpy-2.0.1/tests/integration/test_requests.py 2018-09-18 16:52:17.000000000 +0200
@@ -1,6 +1,8 @@
# -*- coding: utf-8 -*-
'''Test requests' interaction with vcr'''
+import platform
import pytest
+import sys
import vcr
from assertions import assert_cassette_empty, assert_is_json
@@ -114,7 +116,10 @@
assert req1 == req2
-(a)pytest.mark.xfail('sys.version_info >= (3, 6)', strict=True, raises=ConnectionError)
+(a)pytest.mark.xskip('sys.version_info >= (3, 6)', strict=True, raises=ConnectionError)
+(a)pytest.mark.xskip((3, 5) < sys.version_info < (3, 6) and
+ platform.python_implementation() == 'CPython',
+ reason='Fails on CPython 3.5')
def test_post_chunked_binary_secure(tmpdir, httpbin_secure):
'''Ensure that we can send chunked binary without breaking while trying to concatenate bytes with str.'''
data1 = iter([b'data', b'to', b'send'])
@@ -249,10 +254,8 @@
def test_post_file(tmpdir, httpbin_both):
'''Ensure that we handle posting a file.'''
url = httpbin_both + '/post'
- with vcr.use_cassette(str(tmpdir.join('post_file.yaml'))) as cass:
- # Don't use 2.7+ only style ',' separated with here because we support python 2.6
- with open('tox.ini') as f:
- original_response = requests.post(url, f).content
+ with vcr.use_cassette(str(tmpdir.join('post_file.yaml'))) as cass, open('tox.ini') as f:
+ original_response = requests.post(url, f).content
# This also tests that we do the right thing with matching the body when they are files.
with vcr.use_cassette(str(tmpdir.join('post_file.yaml')),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/tests/integration/test_stubs.py new/vcrpy-2.0.1/tests/integration/test_stubs.py
--- old/vcrpy-1.11.1/tests/integration/test_stubs.py 2016-07-16 20:58:00.000000000 +0200
+++ new/vcrpy-2.0.1/tests/integration/test_stubs.py 2018-09-18 16:52:17.000000000 +0200
@@ -1,5 +1,6 @@
import vcr
import zlib
+import json
import six.moves.http_client as httplib
from assertions import assert_is_json
@@ -83,3 +84,50 @@
assert 'content-encoding' not in inside.headers
assert_is_json(inside.read())
+
+
+def _make_before_record_response(fields, replacement='[REDACTED]'):
+ def before_record_response(response):
+ string_body = response['body']['string'].decode('utf8')
+ body = json.loads(string_body)
+
+ for field in fields:
+ if field in body:
+ body[field] = replacement
+
+ response['body']['string'] = json.dumps(body).encode()
+ return response
+ return before_record_response
+
+
+def test_original_response_is_not_modified_by_before_filter(tmpdir, httpbin):
+ testfile = str(tmpdir.join('sensitive_data_scrubbed_response.yml'))
+ host, port = httpbin.host, httpbin.port
+ field_to_scrub = 'url'
+ replacement = '[YOU_CANT_HAVE_THE_MANGO]'
+
+ conn = httplib.HTTPConnection(host, port)
+ conn.request('GET', '/get')
+ outside = conn.getresponse()
+
+ callback = _make_before_record_response([field_to_scrub], replacement)
+ with vcr.use_cassette(testfile, before_record_response=callback):
+ conn = httplib.HTTPConnection(host, port)
+ conn.request('GET', '/get')
+ inside = conn.getresponse()
+
+ # The scrubbed field should be the same, because no cassette existed.
+ # Furthermore, the responses should be identical.
+ inside_body = json.loads(inside.read().decode('utf-8'))
+ outside_body = json.loads(outside.read().decode('utf-8'))
+ assert not inside_body[field_to_scrub] == replacement
+ assert inside_body[field_to_scrub] == outside_body[field_to_scrub]
+
+ # Ensure that when a cassette exists, the scrubbed response is returned.
+ with vcr.use_cassette(testfile, before_record_response=callback):
+ conn = httplib.HTTPConnection(host, port)
+ conn.request('GET', '/get')
+ inside = conn.getresponse()
+
+ inside_body = json.loads(inside.read().decode('utf-8'))
+ assert inside_body[field_to_scrub] == replacement
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/tests/integration/test_urllib2.py new/vcrpy-2.0.1/tests/integration/test_urllib2.py
--- old/vcrpy-1.11.1/tests/integration/test_urllib2.py 2016-05-02 02:20:30.000000000 +0200
+++ new/vcrpy-2.0.1/tests/integration/test_urllib2.py 2018-09-19 15:58:31.000000000 +0200
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
'''Integration tests with urllib2'''
+import ssl
from six.moves.urllib.request import urlopen
from six.moves.urllib_parse import urlencode
import pytest_httpbin.certs
@@ -12,7 +13,9 @@
def urlopen_with_cafile(*args, **kwargs):
- kwargs['cafile'] = pytest_httpbin.certs.where()
+ context = ssl.create_default_context(cafile=pytest_httpbin.certs.where())
+ context.check_hostname = False
+ kwargs['context'] = context
try:
return urlopen(*args, **kwargs)
except TypeError:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/tests/integration/test_urllib3.py new/vcrpy-2.0.1/tests/integration/test_urllib3.py
--- old/vcrpy-1.11.1/tests/integration/test_urllib3.py 2016-05-02 02:20:30.000000000 +0200
+++ new/vcrpy-2.0.1/tests/integration/test_urllib3.py 2018-09-18 16:52:17.000000000 +0200
@@ -5,6 +5,7 @@
import pytest
import pytest_httpbin
import vcr
+from vcr.patch import force_reset
from assertions import assert_cassette_empty, assert_is_json
urllib3 = pytest.importorskip("urllib3")
@@ -55,7 +56,7 @@
def test_auth(tmpdir, httpbin_both, verify_pool_mgr):
'''Ensure that we can handle basic auth'''
auth = ('user', 'passwd')
- headers = urllib3.util.make_headers(basic_auth='{0}:{1}'.format(*auth))
+ headers = urllib3.util.make_headers(basic_auth='{}:{}'.format(*auth))
url = httpbin_both.url + '/basic-auth/user/passwd'
with vcr.use_cassette(str(tmpdir.join('auth.yaml'))):
one = verify_pool_mgr.request('GET', url, headers=headers)
@@ -69,7 +70,7 @@
def test_auth_failed(tmpdir, httpbin_both, verify_pool_mgr):
'''Ensure that we can save failed auth statuses'''
auth = ('user', 'wrongwrongwrong')
- headers = urllib3.util.make_headers(basic_auth='{0}:{1}'.format(*auth))
+ headers = urllib3.util.make_headers(basic_auth='{}:{}'.format(*auth))
url = httpbin_both.url + '/basic-auth/user/passwd'
with vcr.use_cassette(str(tmpdir.join('auth-failed.yaml'))) as cass:
# Ensure that this is empty to begin with
@@ -138,3 +139,21 @@
def test_https_with_cert_validation_disabled(tmpdir, httpbin_secure, pool_mgr):
with vcr.use_cassette(str(tmpdir.join('cert_validation_disabled.yaml'))):
pool_mgr.request('GET', httpbin_secure.url)
+
+
+def test_urllib3_force_reset():
+ cpool = urllib3.connectionpool
+ http_original = cpool.HTTPConnection
+ https_original = cpool.HTTPSConnection
+ verified_https_original = cpool.VerifiedHTTPSConnection
+ with vcr.use_cassette(path='test'):
+ first_cassette_HTTPConnection = cpool.HTTPConnection
+ first_cassette_HTTPSConnection = cpool.HTTPSConnection
+ first_cassette_VerifiedHTTPSConnection = cpool.VerifiedHTTPSConnection
+ with force_reset():
+ assert cpool.HTTPConnection is http_original
+ assert cpool.HTTPSConnection is https_original
+ assert cpool.VerifiedHTTPSConnection is verified_https_original
+ assert cpool.HTTPConnection is first_cassette_HTTPConnection
+ assert cpool.HTTPSConnection is first_cassette_HTTPSConnection
+ assert cpool.VerifiedHTTPSConnection is first_cassette_VerifiedHTTPSConnection
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/tests/integration/test_wild.py new/vcrpy-2.0.1/tests/integration/test_wild.py
--- old/vcrpy-1.11.1/tests/integration/test_wild.py 2016-07-03 23:47:20.000000000 +0200
+++ new/vcrpy-2.0.1/tests/integration/test_wild.py 2018-09-18 16:52:17.000000000 +0200
@@ -1,5 +1,6 @@
+import multiprocessing
import pytest
-from six.moves import xmlrpc_client
+from six.moves import xmlrpc_client, xmlrpc_server
requests = pytest.importorskip("requests")
@@ -80,13 +81,27 @@
assert 'html' in r.text
-def test_xmlrpclib(tmpdir):
+(a)pytest.yield_fixture(scope='session')
+def rpc_server():
+ httpd = xmlrpc_server.SimpleXMLRPCServer(('', 0))
+ httpd.register_function(pow)
+ proxy_process = multiprocessing.Process(
+ target=httpd.serve_forever,
+ )
+ try:
+ proxy_process.start()
+ yield 'http://{}:{}'.format(*httpd.server_address)
+ finally:
+ proxy_process.terminate()
+
+
+def test_xmlrpclib(tmpdir, rpc_server):
with vcr.use_cassette(str(tmpdir.join('xmlrpcvideo.yaml'))):
- roundup_server = xmlrpc_client.ServerProxy('http://bugs.python.org/xmlrpc', allow_none=True)
- original_schema = roundup_server.schema()
+ roundup_server = xmlrpc_client.ServerProxy(rpc_server, allow_none=True)
+ original_schema = roundup_server.pow(2, 4)
with vcr.use_cassette(str(tmpdir.join('xmlrpcvideo.yaml'))):
- roundup_server = xmlrpc_client.ServerProxy('http://bugs.python.org/xmlrpc', allow_none=True)
- second_schema = roundup_server.schema()
+ roundup_server = xmlrpc_client.ServerProxy(rpc_server, allow_none=True)
+ second_schema = roundup_server.pow(2, 4)
assert original_schema == second_schema
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/tests/unit/test_matchers.py new/vcrpy-2.0.1/tests/unit/test_matchers.py
--- old/vcrpy-1.11.1/tests/unit/test_matchers.py 2016-05-01 23:33:41.000000000 +0200
+++ new/vcrpy-2.0.1/tests/unit/test_matchers.py 2018-09-18 16:52:17.000000000 +0200
@@ -22,7 +22,7 @@
matcher = getattr(matchers, matcher_name)
for k1, k2 in itertools.permutations(REQUESTS, 2):
matched = matcher(REQUESTS[k1], REQUESTS[k2])
- if matcher_name in set((k1, k2)):
+ if matcher_name in {k1, k2}:
assert not matched
else:
assert matched
@@ -31,7 +31,7 @@
def test_uri_matcher():
for k1, k2 in itertools.permutations(REQUESTS, 2):
matched = matchers.uri(REQUESTS[k1], REQUESTS[k2])
- if set((k1, k2)) != set(('base', 'method')):
+ if {k1, k2} != {'base', 'method'}:
assert not matched
else:
assert matched
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/tests/unit/test_vcr.py new/vcrpy-2.0.1/tests/unit/test_vcr.py
--- old/vcrpy-1.11.1/tests/unit/test_vcr.py 2017-05-27 21:45:01.000000000 +0200
+++ new/vcrpy-2.0.1/tests/unit/test_vcr.py 2018-09-18 16:52:17.000000000 +0200
@@ -319,11 +319,11 @@
@vcr.use_cassette
def function_defaults(cassette):
- assert set(cassette._match_on) == set([vcr.matchers['uri']])
+ assert set(cassette._match_on) == {vcr.matchers['uri']}
@vcr.use_cassette(additional_matchers=('body',))
def function_additional(cassette):
- assert set(cassette._match_on) == set([vcr.matchers['uri'], vcr.matchers['body']])
+ assert set(cassette._match_on) == {vcr.matchers['uri'], vcr.matchers['body']}
function_defaults()
function_additional()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/tox.ini new/vcrpy-2.0.1/tox.ini
--- old/vcrpy-1.11.1/tox.ini 2017-05-28 03:51:15.000000000 +0200
+++ new/vcrpy-2.0.1/tox.ini 2018-09-23 20:20:47.000000000 +0200
@@ -1,5 +1,5 @@
[tox]
-envlist = {py26,py27,py35,py36,pypy,pypy3}-{flakes,requests216,requests213,requests27,requests26,requests25,requests24,requests23,requests22,requests1,httplib2,urllib319,urllib3110,urllib3121,tornado3,tornado4,boto,boto3,aiohttp}
+envlist = {py27,py34,py35,py36,py37,pypy}-{flakes,requests27,httplib2,urllib3121,tornado4,boto3,aiohttp}
[testenv:flakes]
skipsdist = True
@@ -13,35 +13,21 @@
commands =
./runtests.sh {posargs}
deps =
- # httpbin fails with latest Flask, so we pin it
- Flask==0.10.1
+ Flask<1
mock
pytest
pytest-httpbin
PyYAML
- requests1: requests==1.2.3
- requests216: requests==2.16.3
- requests213: requests==2.13.0
requests27: requests==2.7.0
- requests26: requests==2.6.0
- requests25: requests==2.5.0
- requests24: requests==2.4.0
- requests23: requests==2.3.0
- requests22: requests==2.2.1
httplib2: httplib2
- urllib319: urllib3==1.9.1
- urllib3110: urllib3==1.10.2
urllib3121: urllib3==1.21.1
- {py26,py27,py35,py36,pypy}-tornado3: tornado>=3,<4
- {py26,py27,py35,py36,pypy}-tornado4: tornado>=4,<5
- {py26,py27,py35,py36,pypy}-tornado3: pytest-tornado
- {py26,py27,py35,py36,pypy}-tornado4: pytest-tornado
- {py26,py27,py35,py36}-tornado3: pycurl
- {py26,py27,py35,py36}-tornado4: pycurl
- boto: boto
+ {py27,py35,py36,pypy}-tornado4: tornado>=4,<5
+ {py27,py35,py36,pypy}-tornado4: pytest-tornado
+ {py27,py35,py36}-tornado4: pycurl
boto3: boto3
aiohttp: aiohttp
aiohttp: pytest-asyncio
+ aiohttp: pytest-aiohttp
[flake8]
max_line_length = 110
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/vcr/_handle_coroutine.py new/vcrpy-2.0.1/vcr/_handle_coroutine.py
--- old/vcrpy-1.11.1/vcr/_handle_coroutine.py 2017-05-27 21:45:01.000000000 +0200
+++ new/vcrpy-2.0.1/vcr/_handle_coroutine.py 2018-09-19 15:58:31.000000000 +0200
@@ -1,7 +1,3 @@
-import asyncio
-
-
-(a)asyncio.coroutine
-def handle_coroutine(vcr, fn):
+async def handle_coroutine(vcr, fn): # noqa: E999
with vcr as cassette:
- return (yield from fn(cassette)) # noqa: E999
+ return (await fn(cassette)) # noqa: E999
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/vcr/cassette.py new/vcrpy-2.0.1/vcr/cassette.py
--- old/vcrpy-1.11.1/vcr/cassette.py 2017-05-27 23:28:37.000000000 +0200
+++ new/vcrpy-2.0.1/vcr/cassette.py 2018-09-23 20:20:47.000000000 +0200
@@ -1,10 +1,12 @@
+import collections
+import copy
import sys
import inspect
import logging
import wrapt
-from .compat import contextlib, collections
+from .compat import contextlib
from .errors import UnhandledHTTPRequestError
from .matchers import requests_match, uri, method
from .patch import CassettePatcherBuilder
@@ -14,11 +16,13 @@
try:
from asyncio import iscoroutinefunction
- from ._handle_coroutine import handle_coroutine
except ImportError:
def iscoroutinefunction(*args, **kwargs):
return False
+if sys.version_info[:2] >= (3, 5):
+ from ._handle_coroutine import handle_coroutine
+else:
def handle_coroutine(*args, **kwags):
raise NotImplementedError('Not implemented on Python 2')
@@ -134,7 +138,10 @@
except Exception:
to_yield = coroutine.throw(*sys.exc_info())
else:
- to_yield = coroutine.send(to_send)
+ try:
+ to_yield = coroutine.send(to_send)
+ except StopIteration:
+ break
def _handle_function(self, fn):
with self as cassette:
@@ -174,13 +181,13 @@
def use(cls, **kwargs):
return CassetteContextDecorator.from_args(cls, **kwargs)
- def __init__(self, path, serializer=yamlserializer, persister=FilesystemPersister, record_mode='once',
+ def __init__(self, path, serializer=None, persister=None, record_mode='once',
match_on=(uri, method), before_record_request=None,
before_record_response=None, custom_patches=(),
inject=False):
- self._persister = persister
+ self._persister = persister or FilesystemPersister
self._path = path
- self._serializer = serializer
+ self._serializer = serializer or yamlserializer
self._match_on = match_on
self._before_record_request = before_record_request or (lambda x: x)
self._before_record_response = before_record_response or (lambda x: x)
@@ -221,6 +228,9 @@
request = self._before_record_request(request)
if not request:
return
+ # Deepcopy is here because mutation of `response` will corrupt the
+ # real response.
+ response = copy.deepcopy(response)
response = self._before_record_response(response)
if response is None:
return
@@ -303,7 +313,7 @@
pass
def __str__(self):
- return "<Cassette containing {0} recorded response(s)>".format(
+ return "<Cassette containing {} recorded response(s)>".format(
len(self)
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/vcr/compat.py new/vcrpy-2.0.1/vcr/compat.py
--- old/vcrpy-1.11.1/vcr/compat.py 2016-05-01 23:33:41.000000000 +0200
+++ new/vcrpy-2.0.1/vcr/compat.py 2018-09-18 16:52:17.000000000 +0200
@@ -11,8 +11,4 @@
if not hasattr(contextlib, 'ExitStack'):
import contextlib2 as contextlib
-import collections
-if not hasattr(collections, 'Counter'):
- import backport_collections as collections
-
-__all__ = ['mock', 'contextlib', 'collections']
+__all__ = ['mock', 'contextlib']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/vcr/config.py new/vcrpy-2.0.1/vcr/config.py
--- old/vcrpy-1.11.1/vcr/config.py 2017-05-27 21:45:01.000000000 +0200
+++ new/vcrpy-2.0.1/vcr/config.py 2018-09-18 16:52:17.000000000 +0200
@@ -1,4 +1,5 @@
import copy
+import collections
import functools
import inspect
import os
@@ -6,7 +7,6 @@
import six
-from .compat import collections
from .cassette import Cassette
from .serializers import yamlserializer, jsonserializer
from .persisters.filesystem import FilesystemPersister
@@ -78,7 +78,7 @@
serializer = self.serializers[serializer_name]
except KeyError:
raise KeyError(
- "Serializer {0} doesn't exist or isn't registered".format(
+ "Serializer {} doesn't exist or isn't registered".format(
serializer_name
)
)
@@ -91,7 +91,7 @@
matchers.append(self.matchers[m])
except KeyError:
raise KeyError(
- "Matcher {0} doesn't exist or isn't registered".format(m)
+ "Matcher {} doesn't exist or isn't registered".format(m)
)
return matchers
@@ -145,6 +145,7 @@
merged_config = {
'serializer': self._get_serializer(serializer_name),
+ 'persister': self.persister,
'match_on': self._get_matchers(
tuple(matcher_names) + tuple(additional_matchers)
),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/vcr/matchers.py new/vcrpy-2.0.1/vcr/matchers.py
--- old/vcrpy-1.11.1/vcr/matchers.py 2016-10-03 00:15:12.000000000 +0200
+++ new/vcrpy-2.0.1/vcr/matchers.py 2018-09-18 16:52:17.000000000 +0200
@@ -90,12 +90,12 @@
differences = [m for m in matches if not m[0]]
if differences:
log.debug(
- "Requests {0} and {1} differ according to "
- "the following matchers: {2}".format(r1, r2, differences)
+ "Requests {} and {} differ according to "
+ "the following matchers: {}".format(r1, r2, differences)
)
def requests_match(r1, r2, matchers):
matches = [(m(r1, r2), m) for m in matchers]
_log_matches(r1, r2, matches)
- return all([m[0] for m in matches])
+ return all(m[0] for m in matches)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/vcr/migration.py new/vcrpy-2.0.1/vcr/migration.py
--- old/vcrpy-1.11.1/vcr/migration.py 2017-05-27 21:45:01.000000000 +0200
+++ new/vcrpy-2.0.1/vcr/migration.py 2018-09-18 16:52:17.000000000 +0200
@@ -59,7 +59,7 @@
port = parts['port']
scheme = parts['protocol']
default_port = {'https': 443, 'http': 80}[scheme]
- parts['port'] = ':{0}'.format(port) if port != default_port else ''
+ parts['port'] = ':{}'.format(port) if port != default_port else ''
return "{protocol}://{host}{port}{path}".format(**parts)
@@ -161,7 +161,7 @@
for file_path in files:
migrated = try_migrate(file_path)
status = 'OK' if migrated else 'FAIL'
- sys.stderr.write("[{0}] {1}\n".format(status, file_path))
+ sys.stderr.write("[{}] {}\n".format(status, file_path))
sys.stderr.write("Done.\n")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/vcr/patch.py new/vcrpy-2.0.1/vcr/patch.py
--- old/vcrpy-1.11.1/vcr/patch.py 2017-05-28 03:42:53.000000000 +0200
+++ new/vcrpy-2.0.1/vcr/patch.py 2018-09-18 16:52:17.000000000 +0200
@@ -169,7 +169,7 @@
bases = (base_class,)
if not issubclass(base_class, object): # Check for old style class
bases += (object,)
- return type('{0}{1}'.format(base_class.__name__, self._cassette._path),
+ return type('{}{}'.format(base_class.__name__, self._cassette._path),
bases, dict(cassette=self._cassette))
@_build_patchers_from_mock_triples_decorator
@@ -362,8 +362,22 @@
def reset_patchers():
yield mock.patch.object(httplib, 'HTTPConnection', _HTTPConnection)
yield mock.patch.object(httplib, 'HTTPSConnection', _HTTPSConnection)
+
try:
- import requests.packages.urllib3.connectionpool as cpool
+ import requests
+ if requests.__build__ < 0x021603:
+ # Avoid double unmock if requests 2.16.3
+ # First, this is pointless, requests.packages.urllib3 *IS* urllib3 (see packages.py)
+ # Second, this is unmocking twice the same classes with different namespaces
+ # and is creating weird issues and bugs:
+ # > AssertionError: assert <class 'urllib3.connection.HTTPConnection'>
+ # > is <class 'requests.packages.urllib3.connection.HTTPConnection'>
+ # This assert should work!!!
+ # Note that this also means that now, requests.packages is never imported
+ # if requests 2.16.3 or greater is used with VCRPy.
+ import requests.packages.urllib3.connectionpool as cpool
+ else:
+ raise ImportError("Skip requests not vendored anymore")
except ImportError: # pragma: no cover
pass
else:
@@ -386,11 +400,11 @@
pass
else:
yield mock.patch.object(cpool, 'VerifiedHTTPSConnection', _VerifiedHTTPSConnection)
- yield mock.patch.object(cpool, 'HTTPConnection', _HTTPConnection)
- yield mock.patch.object(cpool, 'HTTPSConnection', _HTTPSConnection)
+ yield mock.patch.object(cpool, 'HTTPConnection', _cpoolHTTPConnection)
+ yield mock.patch.object(cpool, 'HTTPSConnection', _cpoolHTTPSConnection)
if hasattr(cpool.HTTPConnectionPool, 'ConnectionCls'):
- yield mock.patch.object(cpool.HTTPConnectionPool, 'ConnectionCls', _HTTPConnection)
- yield mock.patch.object(cpool.HTTPSConnectionPool, 'ConnectionCls', _HTTPSConnection)
+ yield mock.patch.object(cpool.HTTPConnectionPool, 'ConnectionCls', _cpoolHTTPConnection)
+ yield mock.patch.object(cpool.HTTPSConnectionPool, 'ConnectionCls', _cpoolHTTPSConnection)
try:
import botocore.vendored.requests.packages.urllib3.connectionpool as cpool
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/vcr/request.py new/vcrpy-2.0.1/vcr/request.py
--- old/vcrpy-1.11.1/vcr/request.py 2016-05-01 23:33:41.000000000 +0200
+++ new/vcrpy-2.0.1/vcr/request.py 2018-09-18 16:52:17.000000000 +0200
@@ -81,7 +81,7 @@
return self.scheme
def __str__(self):
- return "<Request ({0}) {1}>".format(self.method, self.uri)
+ return "<Request ({}) {}>".format(self.method, self.uri)
def __repr__(self):
return self.__str__()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/vcr/stubs/__init__.py new/vcrpy-2.0.1/vcr/stubs/__init__.py
--- old/vcrpy-1.11.1/vcr/stubs/__init__.py 2017-05-28 03:40:42.000000000 +0200
+++ new/vcrpy-2.0.1/vcr/stubs/__init__.py 2018-09-19 15:58:31.000000000 +0200
@@ -18,7 +18,7 @@
class VCRFakeSocket(object):
"""
A socket that doesn't do anything!
- Used when playing back casssettes, when there
+ Used when playing back cassettes, when there
is no actual open socket.
"""
@@ -132,10 +132,13 @@
"""
port = self.real_connection.port
default_port = {'https': 443, 'http': 80}[self._protocol]
- return ':{0}'.format(port) if port != default_port else ''
+ return ':{}'.format(port) if port != default_port else ''
def _uri(self, url):
"""Returns request absolute URI"""
+ if url and not url.startswith('/'):
+ # Then this must be a proxy request.
+ return url
uri = "{0}://{1}{2}{3}".format(
self._protocol,
self.real_connection.host,
@@ -146,7 +149,7 @@
def _url(self, uri):
"""Returns request selector url from absolute URI"""
- prefix = "{0}://{1}{2}".format(
+ prefix = "{}://{}{}".format(
self._protocol,
self.real_connection.host,
self._port_postfix(),
@@ -161,13 +164,15 @@
body=body,
headers=headers or {}
)
- log.debug('Got {0}'.format(self._vcr_request))
+ log.debug('Got {}'.format(self._vcr_request))
# Note: The request may not actually be finished at this point, so
# I'm not sending the actual request until getresponse(). This
# allows me to compare the entire length of the response to see if it
# exists in the cassette.
+ self._sock = VCRFakeSocket()
+
def putrequest(self, method, url, *args, **kwargs):
"""
httplib gives you more than one way to do it. This is a way
@@ -180,7 +185,7 @@
body="",
headers={}
)
- log.debug('Got {0}'.format(self._vcr_request))
+ log.debug('Got {}'.format(self._vcr_request))
def putheader(self, header, *values):
self._vcr_request.headers[header] = values
@@ -214,7 +219,7 @@
# then return it
if self.cassette.can_play_response_for(self._vcr_request):
log.info(
- "Playing response for {0} from cassette".format(
+ "Playing response for {} from cassette".format(
self._vcr_request
)
)
@@ -236,7 +241,7 @@
# and return it.
log.info(
- "{0} not in cassette, sending to real server".format(
+ "{} not in cassette, sending to real server".format(
self._vcr_request
)
)
@@ -291,11 +296,13 @@
with force_reset():
return self.real_connection.connect(*args, **kwargs)
+ self._sock = VCRFakeSocket()
+
@property
def sock(self):
if self.real_connection.sock:
return self.real_connection.sock
- return VCRFakeSocket()
+ return self._sock
@sock.setter
def sock(self, value):
@@ -313,6 +320,8 @@
with force_reset():
self.real_connection = self._baseclass(*args, **kwargs)
+ self._sock = None
+
def __setattr__(self, name, value):
"""
We need to define this because any attributes that are set on the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/vcr/stubs/aiohttp_stubs/__init__.py new/vcrpy-2.0.1/vcr/stubs/aiohttp_stubs/__init__.py
--- old/vcrpy-1.11.1/vcr/stubs/aiohttp_stubs/__init__.py 2017-05-27 21:45:01.000000000 +0200
+++ new/vcrpy-2.0.1/vcr/stubs/aiohttp_stubs/__init__.py 2018-09-19 15:58:31.000000000 +0200
@@ -12,33 +12,46 @@
class MockClientResponse(ClientResponse):
- # TODO: get encoding from header
- @asyncio.coroutine
- def json(self, *, encoding='utf-8', loads=json.loads): # NOQA: E999
- return loads(self.content.decode(encoding))
-
- @asyncio.coroutine
- def text(self, encoding='utf-8'):
- return self.content.decode(encoding)
+ def __init__(self, method, url):
+ super().__init__(
+ method=method,
+ url=url,
+ writer=None,
+ continue100=None,
+ timer=None,
+ request_info=None,
+ traces=None,
+ loop=asyncio.get_event_loop(),
+ session=None,
+ )
+
+ async def json(self, *, encoding='utf-8', loads=json.loads, **kwargs): # NOQA: E999
+ return loads(self._body.decode(encoding))
- @asyncio.coroutine
- def release(self):
+ async def text(self, encoding='utf-8'):
+ return self._body.decode(encoding)
+
+ async def read(self):
+ return self._body
+
+ async def release(self):
pass
def vcr_request(cassette, real_request):
@functools.wraps(real_request)
- @asyncio.coroutine
- def new_request(self, method, url, **kwargs):
+ async def new_request(self, method, url, **kwargs):
headers = kwargs.get('headers')
headers = self._prepare_headers(headers)
data = kwargs.get('data')
params = kwargs.get('params')
+
+ request_url = URL(url)
if params:
for k, v in params.items():
params[k] = str(v)
+ request_url = URL(url).with_query(params)
- request_url = URL(url).with_query(params)
vcr_request = Request(method, str(request_url), data, headers)
if cassette.can_play_response_for(vcr_request):
@@ -46,9 +59,9 @@
response = MockClientResponse(method, URL(vcr_response.get('url')))
response.status = vcr_response['status']['code']
- response.content = vcr_response['body']['string']
+ response._body = vcr_response['body']['string']
response.reason = vcr_response['status']['message']
- response.headers = vcr_response['headers']
+ response._headers = vcr_response['headers']
response.close()
return response
@@ -59,11 +72,11 @@
msg = ("No match for the request {!r} was found. Can't overwrite "
"existing cassette {!r} in your current record mode {!r}.")
msg = msg.format(vcr_request, cassette._path, cassette.record_mode)
- response.content = msg.encode()
+ response._body = msg.encode()
response.close()
return response
- response = yield from real_request(self, method, url, **kwargs) # NOQA: E999
+ response = await real_request(self, method, url, **kwargs) # NOQA: E999
vcr_response = {
'status': {
@@ -71,7 +84,7 @@
'message': response.reason,
},
'headers': dict(response.headers),
- 'body': {'string': (yield from response.text())}, # NOQA: E999
+ 'body': {'string': (await response.read())}, # NOQA: E999
'url': response.url,
}
cassette.append(vcr_request, vcr_response)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/vcr/stubs/httplib2_stubs.py new/vcrpy-2.0.1/vcr/stubs/httplib2_stubs.py
--- old/vcrpy-1.11.1/vcr/stubs/httplib2_stubs.py 2016-05-02 02:20:30.000000000 +0200
+++ new/vcrpy-2.0.1/vcr/stubs/httplib2_stubs.py 2018-09-19 15:58:31.000000000 +0200
@@ -13,9 +13,7 @@
HTTPConnection.__init__.'''
# Delete the keyword arguments that HTTPConnection would not recognize
- safe_keys = set(
- ('host', 'port', 'strict', 'timeout', 'source_address')
- )
+ safe_keys = {'host', 'port', 'strict', 'timeout', 'source_address'}
unknown_keys = set(kwargs.keys()) - safe_keys
safe_kwargs = kwargs.copy()
for kw in unknown_keys:
@@ -33,7 +31,7 @@
def __init__(self, *args, **kwargs):
# Delete the keyword arguments that HTTPSConnection would not recognize
- safe_keys = set((
+ safe_keys = {
'host',
'port',
'key_file',
@@ -42,7 +40,8 @@
'timeout',
'source_address',
'ca_certs',
- ))
+ 'disable_ssl_certificate_validation',
+ }
unknown_keys = set(kwargs.keys()) - safe_keys
safe_kwargs = kwargs.copy()
for kw in unknown_keys:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/vcrpy.egg-info/PKG-INFO new/vcrpy-2.0.1/vcrpy.egg-info/PKG-INFO
--- old/vcrpy-1.11.1/vcrpy.egg-info/PKG-INFO 2017-05-28 04:48:31.000000000 +0200
+++ new/vcrpy-2.0.1/vcrpy.egg-info/PKG-INFO 2018-09-23 20:38:58.000000000 +0200
@@ -1,12 +1,12 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
Name: vcrpy
-Version: 1.11.1
+Version: 2.0.1
Summary: Automatically mock your HTTP interactions to simplify and speed up testing
Home-page: https://github.com/kevin1024/vcrpy
Author: Kevin McCarthy
Author-email: me(a)kevinmccarthy.org
License: MIT
-Description: |PyPI| |Build Status| |Waffle Ready| |Gitter|
+Description: |PyPI| |Python versions| |Build Status| |Waffle Ready| |Gitter|
VCR.py
======
@@ -49,20 +49,6 @@
all HTTP interactions, which will update them to correspond to the new
API.
- Support
- -------
-
- VCR.py works great with the following HTTP clients:
-
- - requests
- - aiohttp
- - urllib3
- - tornado
- - urllib2
- - boto
- - boto3
-
-
License
=======
@@ -70,10 +56,12 @@
more details
.. |PyPI| image:: https://img.shields.io/pypi/v/vcrpy.svg
- :target: https://pypi.python.org/pypi/vcrpy-unittest
- .. |Build Status| image:: https://secure.travis-ci.org/kevin1024/vcrpy.png?branch=master
+ :target: https://pypi.python.org/pypi/vcrpy
+ .. |Python versions| image:: https://img.shields.io/pypi/pyversions/vcrpy.svg
+ :target: https://pypi.python.org/pypi/vcrpy
+ .. |Build Status| image:: https://secure.travis-ci.org/kevin1024/vcrpy.svg?branch=master
:target: http://travis-ci.org/kevin1024/vcrpy
- .. |Waffle Ready| image:: https://badge.waffle.io/kevin1024/vcrpy.png?label=ready&title=waffle
+ .. |Waffle Ready| image:: https://badge.waffle.io/kevin1024/vcrpy.svg?label=ready&title=waffle
:target: https://waffle.io/kevin1024/vcrpy
.. |Gitter| image:: https://badges.gitter.im/Join%20Chat.svg
:alt: Join the chat at https://gitter.im/kevin1024/vcrpy
@@ -84,7 +72,16 @@
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: License :: OSI Approved :: MIT License
+Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/vcrpy.egg-info/SOURCES.txt new/vcrpy-2.0.1/vcrpy.egg-info/SOURCES.txt
--- old/vcrpy-1.11.1/vcrpy.egg-info/SOURCES.txt 2017-05-28 04:48:36.000000000 +0200
+++ new/vcrpy-2.0.1/vcrpy.egg-info/SOURCES.txt 2018-09-23 20:38:58.000000000 +0200
@@ -13,7 +13,6 @@
tests/fixtures/wild/domain_redirect.yaml
tests/integration/__init__.py
tests/integration/aiohttp_utils.py
-tests/integration/async_def.py
tests/integration/test_aiohttp.py
tests/integration/test_basic.py
tests/integration/test_boto.py
@@ -26,6 +25,7 @@
tests/integration/test_ignore.py
tests/integration/test_matchers.py
tests/integration/test_multiple.py
+tests/integration/test_proxy.py
tests/integration/test_record_mode.py
tests/integration/test_register_matcher.py
tests/integration/test_register_persister.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vcrpy-1.11.1/vcrpy.egg-info/requires.txt new/vcrpy-2.0.1/vcrpy.egg-info/requires.txt
--- old/vcrpy-1.11.1/vcrpy.egg-info/requires.txt 2017-05-28 04:48:31.000000000 +0200
+++ new/vcrpy-2.0.1/vcrpy.egg-info/requires.txt 2018-09-23 20:38:58.000000000 +0200
@@ -1,16 +1,10 @@
PyYAML
wrapt
six>=1.5
-yarl
-
-[:python_version in "2.4, 2.5, 2.6"]
-contextlib2
-backport_collections
-mock
-[:python_version in "2.7, 3.1, 3.2"]
+[:python_version == "2.7"]
contextlib2
mock
-[:python_version in "3.4, 3.5, 3.6"]
+[:python_version >= "3.4"]
yarl
1
0
Hello community,
here is the log from the commit of package python-vcs for openSUSE:Factory checked in at 2018-10-26 11:08:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-vcs (Old)
and /work/SRC/openSUSE:Factory/.python-vcs.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-vcs"
Fri Oct 26 11:08:33 2018 rev:9 rq:644318 version:0.4.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-vcs/python-vcs.changes 2018-06-08 23:17:20.999980152 +0200
+++ /work/SRC/openSUSE:Factory/.python-vcs.new/python-vcs.changes 2018-10-26 11:08:37.669854002 +0200
@@ -1,0 +2,7 @@
+Wed Oct 24 13:28:00 UTC 2018 - Tomáš Chvátal <tchvatal(a)suse.com>
+
+- Install license
+- Do not generate docs, fail with newer sphinx as the package is
+ from 2013 there is low chance of this getting fixed
+
+-------------------------------------------------------------------
New:
----
LICENSE
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-vcs.spec ++++++
--- /var/tmp/diff_new_pack.PD3cGt/_old 2018-10-26 11:08:38.309853111 +0200
+++ /var/tmp/diff_new_pack.PD3cGt/_new 2018-10-26 11:08:38.313853106 +0200
@@ -12,7 +12,7 @@
# 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/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@@ -28,8 +28,7 @@
Group: Development/Languages/Python
URL: https://github.com/codeinn/vcs
Source: https://files.pythonhosted.org/packages/source/v/vcs/vcs-%{version}.tar.gz
-BuildRequires: %{python_module Sphinx}
-BuildRequires: %{python_module devel}
+Source99: https://raw.githubusercontent.com/codeinn/vcs/master/LICENSE
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
@@ -53,10 +52,10 @@
%prep
%setup -q -n vcs-%{version}
+cp %{SOURCE99} .
%build
%python_build
-cd docs && make html && rm build/html/.buildinfo
%install
%python_install
@@ -68,7 +67,8 @@
#nosetests
%files %{python_files}
-%doc README.rst docs/build/html
+%license LICENSE
+%doc README.rst
%{_bindir}/vcs
%{python_sitelib}/*
++++++ LICENSE ++++++
Copyright (C) 2010-2013 vcs Marcin Kuźmiński & Łukasz Balcerzak
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
1
0
Hello community,
here is the log from the commit of package python-yapf for openSUSE:Factory checked in at 2018-10-26 11:08:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-yapf (Old)
and /work/SRC/openSUSE:Factory/.python-yapf.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-yapf"
Fri Oct 26 11:08:25 2018 rev:4 rq:644316 version:0.24.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-yapf/python-yapf.changes 2018-08-31 10:46:25.671346272 +0200
+++ /work/SRC/openSUSE:Factory/.python-yapf.new/python-yapf.changes 2018-10-26 11:08:32.129861722 +0200
@@ -1,0 +2,6 @@
+Wed Oct 24 13:23:45 UTC 2018 - Tomáš Chvátal <tchvatal(a)suse.com>
+
+- Version update to 0.24.0:
+ * Support for python 3.7
+
+-------------------------------------------------------------------
Old:
----
yapf-0.23.0.tar.gz
New:
----
yapf-0.24.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-yapf.spec ++++++
--- /var/tmp/diff_new_pack.IRlly2/_old 2018-10-26 11:08:33.317860065 +0200
+++ /var/tmp/diff_new_pack.IRlly2/_new 2018-10-26 11:08:33.317860065 +0200
@@ -12,13 +12,13 @@
# 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/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-yapf
-Version: 0.23.0
+Version: 0.24.0
Release: 0
Summary: A formatter for Python code
License: Apache-2.0
++++++ yapf-0.23.0.tar.gz -> yapf-0.24.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/CHANGELOG new/yapf-0.24.0/CHANGELOG
--- old/yapf-0.23.0/CHANGELOG 2018-08-27 14:09:07.000000000 +0200
+++ new/yapf-0.24.0/CHANGELOG 2018-09-07 13:01:39.000000000 +0200
@@ -2,6 +2,30 @@
# All notable changes to this project will be documented in this file.
# This project adheres to [Semantic Versioning](http://semver.org/).
+## [0.24.0] 2018-09-07
+### Added
+- Added 'SPLIT_BEFORE_DOT' knob to support "builder style" calls. The "builder
+ style" option didn't work as advertised. Lines would split after the dots,
+ not before them regardless of the penalties.
+### Changed
+- Support Python 3.7 in the tests. The old "comp_for" and "comp_if" nodes are
+ now "old_comp_for" and "old_comp_if" in lib2to3.
+### Fixed
+- Don't count inner function calls when marking arguments as named assignments.
+- Make sure that tuples and the like are formatted nicely if they all can't fit
+ on a single line. This is similar to how we format function calls within an
+ argument list.
+- Allow splitting in a subscript if it goes over the line limit.
+- Increase the split penalty for an if-expression.
+- Increase penalty for splitting in a subscript so that it's more likely to
+ split in a function call or other data literal.
+- Cloning a pytree node doesn't transfer its a annotations. Make sure we do
+ that so that we don't lose information.
+- Revert change that broke the "no_spaces_around_binary_operators" option.
+- The "--style-help" option would output string lists and sets in Python types.
+ If the output was used as a style, then it wouldn't parse those values
+ correctly.
+
## [0.23.0] 2018-08-27
### Added
- `DISABLE_ENDING_COMMA_HEURISTIC` is a new knob to disable the heuristic which
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/PKG-INFO new/yapf-0.24.0/PKG-INFO
--- old/yapf-0.23.0/PKG-INFO 2018-08-27 14:10:44.000000000 +0200
+++ new/yapf-0.24.0/PKG-INFO 2018-09-07 13:03:46.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: yapf
-Version: 0.23.0
+Version: 0.24.0
Summary: A formatter for Python code.
Home-page: UNKNOWN
Author: Bill Wendling
@@ -157,11 +157,11 @@
file that specifies the desired style, or a dictionary of key/value pairs.
The config file is a simple listing of (case-insensitive) ``key = value`` pairs
- with a ``[style]`` heading. For example:
+ with a ``[yapf]`` heading. For example:
.. code-block:: ini
- [style]
+ [yapf]
based_on_style = pep8
spaces_before_comment = 4
split_before_logical_operator = true
@@ -466,7 +466,7 @@
1 + 2 * 3 - 4 / 5
- will be formatted as follows when configured with ``"*/"``:
+ will be formatted as follows when configured with ``*,/``:
.. code-block:: python
@@ -511,6 +511,20 @@
for variable in bar if variable != 42
}
+ ``SPLIT_BEFORE_DOT``
+ Split before the '.' if we need to split a longer expression:
+
+ .. code-block:: python
+
+ foo = ('This is a really long string: {}, {}, {}, {}'.format(a, b, c, d))
+
+ would reformat to something like:
+
+ .. code-block:: python
+
+ foo = ('This is a really long string: {}, {}, {}, {}'
+ .format(a, b, c, d))
+
``SPLIT_BEFORE_EXPRESSION_AFTER_OPENING_PAREN``
Split after the opening paren which surrounds an expression if it doesn't
fit on a single line.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/README.rst new/yapf-0.24.0/README.rst
--- old/yapf-0.23.0/README.rst 2018-08-27 06:43:49.000000000 +0200
+++ new/yapf-0.24.0/README.rst 2018-09-07 12:36:04.000000000 +0200
@@ -149,11 +149,11 @@
file that specifies the desired style, or a dictionary of key/value pairs.
The config file is a simple listing of (case-insensitive) ``key = value`` pairs
-with a ``[style]`` heading. For example:
+with a ``[yapf]`` heading. For example:
.. code-block:: ini
- [style]
+ [yapf]
based_on_style = pep8
spaces_before_comment = 4
split_before_logical_operator = true
@@ -458,7 +458,7 @@
1 + 2 * 3 - 4 / 5
- will be formatted as follows when configured with ``"*/"``:
+ will be formatted as follows when configured with ``*,/``:
.. code-block:: python
@@ -503,6 +503,20 @@
for variable in bar if variable != 42
}
+``SPLIT_BEFORE_DOT``
+ Split before the '.' if we need to split a longer expression:
+
+ .. code-block:: python
+
+ foo = ('This is a really long string: {}, {}, {}, {}'.format(a, b, c, d))
+
+ would reformat to something like:
+
+ .. code-block:: python
+
+ foo = ('This is a really long string: {}, {}, {}, {}'
+ .format(a, b, c, d))
+
``SPLIT_BEFORE_EXPRESSION_AFTER_OPENING_PAREN``
Split after the opening paren which surrounds an expression if it doesn't
fit on a single line.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/yapf/__init__.py new/yapf-0.24.0/yapf/__init__.py
--- old/yapf-0.23.0/yapf/__init__.py 2018-08-27 14:09:13.000000000 +0200
+++ new/yapf-0.24.0/yapf/__init__.py 2018-09-07 13:01:48.000000000 +0200
@@ -38,7 +38,7 @@
from yapf.yapflib import style
from yapf.yapflib import yapf_api
-__version__ = '0.23.0'
+__version__ = '0.24.0'
def main(argv):
@@ -145,7 +145,10 @@
for option, docstring in sorted(style.Help().items()):
for line in docstring.splitlines():
print('#', line and ' ' or '', line, sep='')
- print(option.lower(), '=', style.Get(option), sep='')
+ option_value = style.Get(option)
+ if isinstance(option_value, set) or isinstance(option_value, list):
+ option_value = ', '.join(option_value)
+ print(option.lower(), '=', option_value, sep='')
print()
return 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/yapf/yapflib/format_decision_state.py new/yapf-0.24.0/yapf/yapflib/format_decision_state.py
--- old/yapf-0.23.0/yapf/yapflib/format_decision_state.py 2018-06-12 06:44:06.000000000 +0200
+++ new/yapf-0.24.0/yapf/yapflib/format_decision_state.py 2018-09-07 12:15:01.000000000 +0200
@@ -44,9 +44,6 @@
next_token: The next token to be formatted.
paren_level: The level of nesting inside (), [], and {}.
lowest_level_on_line: The lowest paren_level on the current line.
- newline: Indicates if a newline is added along the edge to this format
- decision state node.
- previous: The previous format decision state in the decision tree.
stack: A stack (of _ParenState) keeping track of properties applying to
parenthesis levels.
comp_stack: A stack (of ComprehensionState) keeping track of properties
@@ -74,8 +71,6 @@
self.stack = [_ParenState(first_indent, first_indent)]
self.comp_stack = []
self.first_indent = first_indent
- self.newline = False
- self.previous = None
self.column_limit = style.Get('COLUMN_LIMIT')
def Clone(self):
@@ -89,8 +84,6 @@
new.lowest_level_on_line = self.lowest_level_on_line
new.ignore_stack_for_comparison = self.ignore_stack_for_comparison
new.first_indent = self.first_indent
- new.newline = self.newline
- new.previous = self.previous
new.stack = [state.Clone() for state in self.stack]
new.comp_stack = [state.Clone() for state in self.comp_stack]
return new
@@ -186,7 +179,8 @@
if (self.stack[-1].split_before_closing_bracket and
current.value in '}]' and style.Get('SPLIT_BEFORE_CLOSING_BRACKET')):
# Split before the closing bracket if we can.
- return current.node_split_penalty != split_penalty.UNBREAKABLE
+ if format_token.Subtype.SUBSCRIPT_BRACKET not in current.subtypes:
+ return current.node_split_penalty != split_penalty.UNBREAKABLE
if (current.value == ')' and previous.value == ',' and
not _IsSingleElementTuple(current.matching_bracket)):
@@ -287,6 +281,15 @@
if not self._FitsOnLine(current, tok.matching_bracket):
return True
+ if current.OpensScope() and previous.value == ',':
+ # If we have a list of tuples, then we can get a similar look as above. If
+ # the full list cannot fit on the line, then we want a split.
+ open_bracket = unwrapped_line.IsSurroundedByBrackets(current)
+ if (open_bracket and open_bracket.value in '[{' and
+ format_token.Subtype.SUBSCRIPT_BRACKET not in open_bracket.subtypes):
+ if not self._FitsOnLine(current, current.matching_bracket):
+ return True
+
###########################################################################
# Dict/Set Splitting
if (style.Get('EACH_DICT_ENTRY_ON_SEPARATE_LINE') and
@@ -336,8 +339,8 @@
###########################################################################
# Argument List Splitting
if (style.Get('SPLIT_BEFORE_NAMED_ASSIGNS') and not current.is_comment and
- format_token.Subtype.DEFAULT_OR_NAMED_ASSIGN_ARG_LIST in
- current.subtypes):
+ format_token.Subtype.DEFAULT_OR_NAMED_ASSIGN_ARG_LIST in current
+ .subtypes):
if (previous.value not in {'=', ':', '*', '**'} and
current.value not in ':=,)' and not _IsFunctionDefinition(previous)):
# If we're going to split the lines because of named arguments, then we
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/yapf/yapflib/pytree_utils.py new/yapf-0.24.0/yapf/yapflib/pytree_utils.py
--- old/yapf-0.23.0/yapf/yapflib/pytree_utils.py 2018-03-28 07:29:50.000000000 +0200
+++ new/yapf-0.24.0/yapf/yapflib/pytree_utils.py 2018-09-07 11:47:58.000000000 +0200
@@ -219,6 +219,18 @@
_NODE_ANNOTATION_PREFIX = '_yapf_annotation_'
+def CopyYapfAnnotations(src, dst):
+ """Copy all YAPF annotations from the source node to the destination node.
+
+ Argumsnts:
+ src: the source node.
+ dst: the destination node.
+ """
+ for annotation in dir(src):
+ if annotation.startswith(_NODE_ANNOTATION_PREFIX):
+ setattr(dst, annotation, getattr(src, annotation, None))
+
+
def GetNodeAnnotation(node, annotation, default=None):
"""Get annotation value from a node.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/yapf/yapflib/split_penalty.py new/yapf-0.24.0/yapf/yapflib/split_penalty.py
--- old/yapf-0.23.0/yapf/yapflib/split_penalty.py 2018-03-28 07:29:50.000000000 +0200
+++ new/yapf-0.24.0/yapf/yapflib/split_penalty.py 2018-09-07 12:18:21.000000000 +0200
@@ -26,7 +26,7 @@
# TODO(morbo): Document the annotations in a centralized place. E.g., the
# README file.
UNBREAKABLE = 1000 * 1000
-NAMED_ASSIGN = 11000
+NAMED_ASSIGN = 15000
DOTTED_NAME = 4000
VERY_STRONGLY_CONNECTED = 3500
STRONGLY_CONNECTED = 3000
@@ -46,7 +46,8 @@
FACTOR = 2100
POWER = 2200
ATOM = 2300
-ONE_ELEMENT_ARGUMENT = 2500
+ONE_ELEMENT_ARGUMENT = 500
+SUBSCRIPT = 6000
def ComputeSplitPenalties(tree):
@@ -193,8 +194,11 @@
def Visit_trailer(self, node): # pylint: disable=invalid-name
# trailer ::= '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME
if node.children[0].value == '.':
- self._SetUnbreakableOnChildren(node)
- _SetSplitPenalty(node.children[1], DOTTED_NAME)
+ before = style.Get('SPLIT_BEFORE_DOT')
+ _SetSplitPenalty(node.children[0],
+ STRONGLY_CONNECTED if before else DOTTED_NAME)
+ _SetSplitPenalty(node.children[1],
+ DOTTED_NAME if before else STRONGLY_CONNECTED)
elif len(node.children) == 2:
# Don't split an empty argument list if at all possible.
_SetSplitPenalty(node.children[1], VERY_STRONGLY_CONNECTED)
@@ -236,7 +240,12 @@
'atom', 'power'
}:
# Don't split an argument list with one element if at all possible.
- _SetStronglyConnected(node.children[1], node.children[2])
+ subtypes = pytree_utils.GetNodeAnnotation(
+ pytree_utils.FirstLeafNode(node), pytree_utils.Annotation.SUBTYPE)
+ if subtypes and format_token.Subtype.SUBSCRIPT_BRACKET in subtypes:
+ _IncreasePenalty(node, SUBSCRIPT)
+ else:
+ _SetStronglyConnected(node.children[1], node.children[2])
if name == 'arglist':
_SetStronglyConnected(node.children[-1])
@@ -253,7 +262,9 @@
pytree_utils.NodeName(node.children[1]) == 'trailer'):
# children[1] itself is a whole trailer: we don't want to
# mark all of it as unbreakable, only its first token: (, [ or .
- _SetUnbreakable(node.children[1].children[0])
+ first = pytree_utils.FirstLeafNode(node.children[1])
+ if first.value != '.':
+ _SetUnbreakable(node.children[1].children[0])
# A special case when there are more trailers in the sequence. Given:
# atom tr1 tr2
@@ -310,10 +321,6 @@
# split the two.
_SetStronglyConnected(trailer.children[-1])
- # If the original source has a "builder" style calls, then we should allow
- # the reformatter to retain that.
- _AllowBuilderStyleCalls(node)
-
def Visit_subscript(self, node): # pylint: disable=invalid-name
# subscript ::= test | [test] ':' [test] [sliceop]
_SetStronglyConnected(*node.children)
@@ -325,6 +332,10 @@
_SetStronglyConnected(*node.children[1:])
self.DefaultNodeVisit(node)
+ def Visit_old_comp_for(self, node): # pylint: disable=invalid-name
+ # Python 3.7
+ self.Visit_comp_for(node)
+
def Visit_comp_if(self, node): # pylint: disable=invalid-name
# comp_if ::= 'if' old_test [comp_iter]
_SetSplitPenalty(node.children[0],
@@ -332,6 +343,15 @@
_SetStronglyConnected(*node.children[1:])
self.DefaultNodeVisit(node)
+ def Visit_old_comp_if(self, node): # pylint: disable=invalid-name
+ # Python 3.7
+ self.Visit_comp_if(node)
+
+ def Visit_test(self, node): # pylint: disable=invalid-name
+ # test ::= or_test ['if' or_test 'else' test] | lambdef
+ _IncreasePenalty(node, OR_TEST)
+ self.DefaultNodeVisit(node)
+
def Visit_or_test(self, node): # pylint: disable=invalid-name
# or_test ::= and_test ('or' and_test)*
self.DefaultNodeVisit(node)
@@ -536,7 +556,7 @@
return
if isinstance(node, pytree.Leaf):
- if node.value in {'(', 'for', 'if'}:
+ if node.value in {'(', 'for'}:
return
penalty = pytree_utils.GetNodeAnnotation(
node, pytree_utils.Annotation.SPLIT_PENALTY, default=0)
@@ -590,23 +610,3 @@
def _SetSplitPenalty(node, penalty):
pytree_utils.SetNodeAnnotation(node, pytree_utils.Annotation.SPLIT_PENALTY,
penalty)
-
-
-def _AllowBuilderStyleCalls(node):
- """Allow splitting before '.' if it's a builder style function call."""
-
- def RecGetLeaves(node):
- if isinstance(node, pytree.Leaf):
- return [node]
- children = []
- for child in node.children:
- children += RecGetLeaves(child)
- return children
-
- list_of_children = RecGetLeaves(node)
- prev_child = None
- for child in list_of_children:
- if child.value == '.':
- if prev_child.lineno != child.lineno:
- _SetSplitPenalty(child, 0)
- prev_child = child
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/yapf/yapflib/style.py new/yapf-0.24.0/yapf/yapflib/style.py
--- old/yapf-0.23.0/yapf/yapflib/style.py 2018-08-27 06:43:49.000000000 +0200
+++ new/yapf-0.24.0/yapf/yapflib/style.py 2018-09-07 12:53:16.000000000 +0200
@@ -161,7 +161,7 @@
1 + 2 * 3 - 4 / 5
- will be formatted as follows when configured with *,/:
+ will be formatted as follows when configured with "*,/":
1 + 2*3 - 4/5
@@ -194,6 +194,16 @@
variable: 'Hello world, have a nice day!'
for variable in bar if variable != 42
}"""),
+ SPLIT_BEFORE_DOT=textwrap.dedent("""\
+ Split before the '.' if we need to split a longer expression:
+
+ foo = ('This is a really long string: {}, {}, {}, {}'.format(a, b, c, d))
+
+ would reformat to something like:
+
+ foo = ('This is a really long string: {}, {}, {}, {}'
+ .format(a, b, c, d))
+ """),
SPLIT_BEFORE_EXPRESSION_AFTER_OPENING_PAREN=textwrap.dedent("""\
Split after the opening paren which surrounds an expression if it doesn't
fit on a single line.
@@ -292,6 +302,7 @@
SPLIT_BEFORE_BITWISE_OPERATOR=True,
SPLIT_BEFORE_CLOSING_BRACKET=True,
SPLIT_BEFORE_DICT_SET_GENERATOR=True,
+ SPLIT_BEFORE_DOT=False,
SPLIT_BEFORE_EXPRESSION_AFTER_OPENING_PAREN=False,
SPLIT_BEFORE_FIRST_ARGUMENT=False,
SPLIT_BEFORE_LOGICAL_OPERATOR=True,
@@ -302,7 +313,7 @@
SPLIT_PENALTY_BEFORE_IF_EXPR=0,
SPLIT_PENALTY_BITWISE_OPERATOR=300,
SPLIT_PENALTY_COMPREHENSION=80,
- SPLIT_PENALTY_EXCESS_CHARACTER=4500,
+ SPLIT_PENALTY_EXCESS_CHARACTER=7000,
SPLIT_PENALTY_FOR_ADDED_LINE_SPLIT=30,
SPLIT_PENALTY_IMPORT_NAMES=0,
SPLIT_PENALTY_LOGICAL_OPERATOR=300,
@@ -334,6 +345,7 @@
style['INDENT_WIDTH'] = 2
style['JOIN_MULTIPLE_LINES'] = False
style['SPLIT_BEFORE_BITWISE_OPERATOR'] = True
+ style['SPLIT_BEFORE_DOT'] = True
style['SPLIT_BEFORE_EXPRESSION_AFTER_OPENING_PAREN'] = True
return style
@@ -390,8 +402,6 @@
def _StringListConverter(s):
"""Option value converter for a comma-separated list of strings."""
- if len(s) > 2 and s[0] in '"\'':
- s = s[1:-1]
return [part.strip() for part in s.split(',')]
@@ -399,9 +409,7 @@
"""Option value converter for a comma-separated set of strings."""
if len(s) > 2 and s[0] in '"\'':
s = s[1:-1]
- if ',' in s:
- return set(part.strip() for part in s.split(','))
- return set(s.strip())
+ return set(part.strip() for part in s.split(','))
def _BoolConverter(s):
@@ -447,6 +455,7 @@
SPLIT_BEFORE_BITWISE_OPERATOR=_BoolConverter,
SPLIT_BEFORE_CLOSING_BRACKET=_BoolConverter,
SPLIT_BEFORE_DICT_SET_GENERATOR=_BoolConverter,
+ SPLIT_BEFORE_DOT=_BoolConverter,
SPLIT_BEFORE_EXPRESSION_AFTER_OPENING_PAREN=_BoolConverter,
SPLIT_BEFORE_FIRST_ARGUMENT=_BoolConverter,
SPLIT_BEFORE_LOGICAL_OPERATOR=_BoolConverter,
@@ -527,10 +536,10 @@
config = py3compat.ConfigParser()
config.add_section('style')
for key, value, _ in re.findall(
- r'([a-zA-Z0-9_]+)\s*[:=]\s*' +
- r'(?:' +
- r'((?P<quote>[\'"]).*?(?P=quote)|' +
- r'[a-zA-Z0-9_]+)' +
+ r'([a-zA-Z0-9_]+)\s*[:=]\s*'
+ r'(?:'
+ r'((?P<quote>[\'"]).*?(?P=quote)|'
+ r'[a-zA-Z0-9_]+)'
r')', config_string): # yapf: disable
config.set('style', key, value)
return config
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/yapf/yapflib/subtype_assigner.py new/yapf-0.24.0/yapf/yapflib/subtype_assigner.py
--- old/yapf-0.23.0/yapf/yapflib/subtype_assigner.py 2018-08-27 06:43:49.000000000 +0200
+++ new/yapf-0.24.0/yapf/yapflib/subtype_assigner.py 2018-09-07 12:17:16.000000000 +0200
@@ -315,11 +315,19 @@
_AppendSubtypeRec(node.parent.children[0], format_token.Subtype.COMP_EXPR)
self.DefaultNodeVisit(node)
+ def Visit_old_comp_for(self, node): # pylint: disable=invalid-name
+ # Python 3.7
+ self.Visit_comp_for(node)
+
def Visit_comp_if(self, node): # pylint: disable=invalid-name
# comp_if ::= 'if' old_test [comp_iter]
_AppendSubtypeRec(node, format_token.Subtype.COMP_IF)
self.DefaultNodeVisit(node)
+ def Visit_old_comp_if(self, node): # pylint: disable=invalid-name
+ # Python 3.7
+ self.Visit_comp_if(node)
+
def _ProcessArgLists(self, node):
"""Common method for processing argument lists."""
for child in node.children:
@@ -337,20 +345,24 @@
def HasSubtype(node):
"""Return True if the arg list has a named assign subtype."""
if isinstance(node, pytree.Leaf):
- if node_subtype in pytree_utils.GetNodeAnnotation(
- node, pytree_utils.Annotation.SUBTYPE, set()):
- return True
- return False
- has_subtype = False
- for child in node.children:
- if pytree_utils.NodeName(child) != 'arglist':
- has_subtype |= HasSubtype(child)
- return has_subtype
+ return node_subtype in pytree_utils.GetNodeAnnotation(
+ node, pytree_utils.Annotation.SUBTYPE, set())
- if HasSubtype(node):
for child in node.children:
- if pytree_utils.NodeName(child) != 'COMMA':
- _AppendFirstLeafTokenSubtype(child, list_subtype)
+ node_name = pytree_utils.NodeName(child)
+ if node_name not in {'atom', 'arglist', 'power'}:
+ if HasSubtype(child):
+ return True
+
+ return False
+
+ if not HasSubtype(node):
+ return
+
+ for child in node.children:
+ node_name = pytree_utils.NodeName(child)
+ if node_name not in {'atom', 'COMMA'}:
+ _AppendFirstLeafTokenSubtype(child, list_subtype)
def _AppendTokenSubtype(node, subtype):
@@ -391,7 +403,13 @@
# A comment was inserted before the value, which is a pytree.Leaf.
# Encompass the dictionary's value into an ATOM node.
last = first.next_sibling
- new_node = pytree.Node(syms.atom, [first.clone(), last.clone()])
+ last_clone = last.clone()
+ new_node = pytree.Node(syms.atom, [first.clone(), last_clone])
+ for orig_leaf, clone_leaf in zip(last.leaves(), last_clone.leaves()):
+ pytree_utils.CopyYapfAnnotations(orig_leaf, clone_leaf)
+ if hasattr(orig_leaf, 'is_pseudo'):
+ clone_leaf.is_pseudo = orig_leaf.is_pseudo
+
node.replace(new_node)
node = new_node
last.remove()
@@ -423,6 +441,8 @@
_AppendFirstLeafTokenSubtype(node, format_token.Subtype.DICTIONARY_VALUE)
else:
clone = node.clone()
+ for orig_leaf, clone_leaf in zip(node.leaves(), clone.leaves()):
+ pytree_utils.CopyYapfAnnotations(orig_leaf, clone_leaf)
new_node = pytree.Node(syms.atom, [lparen, clone, rparen])
node.replace(new_node)
_AppendFirstLeafTokenSubtype(clone, format_token.Subtype.DICTIONARY_VALUE)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/yapf/yapflib/unwrapped_line.py new/yapf-0.24.0/yapf/yapflib/unwrapped_line.py
--- old/yapf-0.23.0/yapf/yapflib/unwrapped_line.py 2018-08-27 14:07:22.000000000 +0200
+++ new/yapf-0.24.0/yapf/yapflib/unwrapped_line.py 2018-09-03 12:54:07.000000000 +0200
@@ -418,9 +418,6 @@
if prev_token.is_name and cval == '[':
# Don't break in the middle of an array dereference.
return False
- if prev_token.is_name and cval == '.':
- # Don't break before the '.' in a dotted name.
- return False
if cur_token.is_comment and prev_token.lineno == cur_token.lineno:
# Don't break a comment at the end of the line.
return False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/yapf.egg-info/PKG-INFO new/yapf-0.24.0/yapf.egg-info/PKG-INFO
--- old/yapf-0.23.0/yapf.egg-info/PKG-INFO 2018-08-27 14:10:43.000000000 +0200
+++ new/yapf-0.24.0/yapf.egg-info/PKG-INFO 2018-09-07 13:03:46.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: yapf
-Version: 0.23.0
+Version: 0.24.0
Summary: A formatter for Python code.
Home-page: UNKNOWN
Author: Bill Wendling
@@ -157,11 +157,11 @@
file that specifies the desired style, or a dictionary of key/value pairs.
The config file is a simple listing of (case-insensitive) ``key = value`` pairs
- with a ``[style]`` heading. For example:
+ with a ``[yapf]`` heading. For example:
.. code-block:: ini
- [style]
+ [yapf]
based_on_style = pep8
spaces_before_comment = 4
split_before_logical_operator = true
@@ -466,7 +466,7 @@
1 + 2 * 3 - 4 / 5
- will be formatted as follows when configured with ``"*/"``:
+ will be formatted as follows when configured with ``*,/``:
.. code-block:: python
@@ -511,6 +511,20 @@
for variable in bar if variable != 42
}
+ ``SPLIT_BEFORE_DOT``
+ Split before the '.' if we need to split a longer expression:
+
+ .. code-block:: python
+
+ foo = ('This is a really long string: {}, {}, {}, {}'.format(a, b, c, d))
+
+ would reformat to something like:
+
+ .. code-block:: python
+
+ foo = ('This is a really long string: {}, {}, {}, {}'
+ .format(a, b, c, d))
+
``SPLIT_BEFORE_EXPRESSION_AFTER_OPENING_PAREN``
Split after the opening paren which surrounds an expression if it doesn't
fit on a single line.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/yapftests/file_resources_test.py new/yapf-0.24.0/yapftests/file_resources_test.py
--- old/yapf-0.23.0/yapftests/file_resources_test.py 2018-05-22 08:11:25.000000000 +0200
+++ new/yapf-0.24.0/yapftests/file_resources_test.py 2018-08-29 10:59:54.000000000 +0200
@@ -91,11 +91,13 @@
_touch_files([file1, file2])
self.assertEqual(
- file_resources.GetCommandLineFiles(
- [file1, file2], recursive=False, exclude=None), [file1, file2])
+ file_resources.GetCommandLineFiles([file1, file2],
+ recursive=False,
+ exclude=None), [file1, file2])
self.assertEqual(
- file_resources.GetCommandLineFiles(
- [file1, file2], recursive=True, exclude=None), [file1, file2])
+ file_resources.GetCommandLineFiles([file1, file2],
+ recursive=True,
+ exclude=None), [file1, file2])
def test_nonrecursive_find_in_dir(self):
tdir1 = self._make_test_dir('test1')
@@ -124,9 +126,9 @@
self.assertEqual(
sorted(
- file_resources.GetCommandLineFiles(
- [self.test_tmpdir], recursive=True, exclude=None)),
- sorted(files))
+ file_resources.GetCommandLineFiles([self.test_tmpdir],
+ recursive=True,
+ exclude=None)), sorted(files))
def test_recursive_find_in_dir_with_exclude(self):
tdir1 = self._make_test_dir('test1')
@@ -141,8 +143,9 @@
self.assertEqual(
sorted(
- file_resources.GetCommandLineFiles(
- [self.test_tmpdir], recursive=True, exclude=['*test*3.py'])),
+ file_resources.GetCommandLineFiles([self.test_tmpdir],
+ recursive=True,
+ exclude=['*test*3.py'])),
sorted([
os.path.join(tdir1, 'testfile1.py'),
os.path.join(tdir2, 'testfile2.py'),
@@ -159,8 +162,9 @@
]
_touch_files(files)
- actual = file_resources.GetCommandLineFiles(
- [self.test_tmpdir], recursive=True, exclude=['*.test1*'])
+ actual = file_resources.GetCommandLineFiles([self.test_tmpdir],
+ recursive=True,
+ exclude=['*.test1*'])
self.assertEqual(
sorted(actual),
@@ -225,22 +229,22 @@
os.chdir(self.test_tmpdir)
found = sorted(
- file_resources.GetCommandLineFiles(
- ['test1', 'test2', 'test3'],
- recursive=True,
- exclude=[
- 'test1',
- 'test2/testinner/',
- ]))
+ file_resources.GetCommandLineFiles(['test1', 'test2', 'test3'],
+ recursive=True,
+ exclude=[
+ 'test1',
+ 'test2/testinner/',
+ ]))
self.assertEqual(found, ['test3/foo/bar/bas/xxx/testfile3.py'])
found = sorted(
- file_resources.GetCommandLineFiles(
- ['.'], recursive=True, exclude=[
- 'test1',
- 'test3',
- ]))
+ file_resources.GetCommandLineFiles(['.'],
+ recursive=True,
+ exclude=[
+ 'test1',
+ 'test3',
+ ]))
self.assertEqual(found, ['./test2/testinner/testfile2.py'])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/yapftests/reformatter_basic_test.py new/yapf-0.24.0/yapftests/reformatter_basic_test.py
--- old/yapf-0.23.0/yapftests/reformatter_basic_test.py 2018-07-02 08:24:20.000000000 +0200
+++ new/yapf-0.24.0/yapftests/reformatter_basic_test.py 2018-09-07 12:05:24.000000000 +0200
@@ -16,6 +16,7 @@
import textwrap
import unittest
+from yapf.yapflib import py3compat
from yapf.yapflib import reformatter
from yapf.yapflib import style
@@ -1339,18 +1340,18 @@
self.assertCodeEqual(code, reformatter.Reformat(uwlines))
def testRelaxArraySubscriptAffinity(self):
- code = textwrap.dedent("""\
- class A(object):
+ code = """\
+class A(object):
- def f(self, aaaaaaaaa, bbbbbbbbbbbbb, row):
- if True:
- if True:
- if True:
- if True:
- if row[4] is None or row[5] is None:
- bbbbbbbbbbbbb['..............'] = row[
- 5] if row[5] is not None else 5
- """)
+ def f(self, aaaaaaaaa, bbbbbbbbbbbbb, row):
+ if True:
+ if True:
+ if True:
+ if True:
+ if row[4] is None or row[5] is None:
+ bbbbbbbbbbbbb[
+ '..............'] = row[5] if row[5] is not None else 5
+"""
uwlines = yapf_test_helper.ParseAndUnwrap(code)
self.assertCodeEqual(code, reformatter.Reformat(uwlines))
@@ -2350,6 +2351,24 @@
uwlines = yapf_test_helper.ParseAndUnwrap(unformatted_code)
self.assertEqual(expected_code, reformatter.Reformat(uwlines))
+ def testPseudoParens(self):
+ unformatted_code = """\
+my_dict = {
+ 'key': # Some comment about the key
+ {'nested_key': 1, },
+}
+"""
+ expected_code = """\
+my_dict = {
+ 'key': # Some comment about the key
+ {
+ 'nested_key': 1,
+ },
+}
+"""
+ uwlines = yapf_test_helper.ParseAndUnwrap(unformatted_code)
+ self.assertEqual(expected_code, reformatter.Reformat(uwlines))
+
def testSplittingBeforeFirstArgumentOnFunctionCall(self):
"""Tests split_before_first_argument on a function call."""
try:
@@ -2469,6 +2488,7 @@
finally:
style.SetGlobalStyle(style.CreateChromiumStyle())
+ @unittest.skipUnless(not py3compat.PY3, 'Requires Python 2.7')
def testAsyncAsNonKeyword(self):
try:
style.SetGlobalStyle(style.CreatePEP8Style())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/yapftests/reformatter_buganizer_test.py new/yapf-0.24.0/yapftests/reformatter_buganizer_test.py
--- old/yapf-0.23.0/yapftests/reformatter_buganizer_test.py 2018-06-12 06:50:45.000000000 +0200
+++ new/yapf-0.24.0/yapftests/reformatter_buganizer_test.py 2018-09-04 04:31:30.000000000 +0200
@@ -28,6 +28,156 @@
def setUpClass(cls):
style.SetGlobalStyle(style.CreateChromiumStyle())
+ def testB112711217(self):
+ code = """\
+def _():
+ stats['moderated'] = ~stats.moderation_reason.isin(
+ approved_moderation_reasons)
+"""
+ uwlines = yapf_test_helper.ParseAndUnwrap(code)
+ self.assertCodeEqual(code, reformatter.Reformat(uwlines))
+
+ def testB112867548(self):
+ unformatted_code = """\
+def _():
+ return flask.make_response(
+ 'Records: {}, Problems: {}, More: {}'.format(
+ process_result.result_ct, process_result.problem_ct,
+ process_result.has_more),
+ httplib.ACCEPTED if process_result.has_more else httplib.OK,
+ {'content-type': _TEXT_CONTEXT_TYPE})
+"""
+ expected_formatted_code = """\
+def _():
+ return flask.make_response(
+ 'Records: {}, Problems: {}, More: {}'.format(process_result.result_ct,
+ process_result.problem_ct,
+ process_result.has_more),
+ httplib.ACCEPTED if process_result.has_more else httplib.OK,
+ {'content-type': _TEXT_CONTEXT_TYPE})
+"""
+ uwlines = yapf_test_helper.ParseAndUnwrap(unformatted_code)
+ self.assertCodeEqual(expected_formatted_code, reformatter.Reformat(uwlines))
+
+ def testB112651423(self):
+ unformatted_code = """\
+def potato(feeditems, browse_use_case=None):
+ for item in turnip:
+ if kumquat:
+ if not feeds_variants.variants['FEEDS_LOAD_PLAYLIST_VIDEOS_FOR_ALL_ITEMS'] and item.video:
+ continue
+"""
+ expected_formatted_code = """\
+def potato(feeditems, browse_use_case=None):
+ for item in turnip:
+ if kumquat:
+ if not feeds_variants.variants[
+ 'FEEDS_LOAD_PLAYLIST_VIDEOS_FOR_ALL_ITEMS'] and item.video:
+ continue
+"""
+ uwlines = yapf_test_helper.ParseAndUnwrap(unformatted_code)
+ self.assertCodeEqual(expected_formatted_code, reformatter.Reformat(uwlines))
+
+ def testB112651423(self):
+ unformatted_code = """\
+def potato(feeditems, browse_use_case=None):
+ for item in turnip:
+ if kumquat:
+ if not feeds_variants.variants['FEEDS_LOAD_PLAYLIST_VIDEOS_FOR_ALL_ITEMS'] and item.video:
+ continue
+"""
+ expected_formatted_code = """\
+def potato(feeditems, browse_use_case=None):
+ for item in turnip:
+ if kumquat:
+ if not feeds_variants.variants[
+ 'FEEDS_LOAD_PLAYLIST_VIDEOS_FOR_ALL_ITEMS'] and item.video:
+ continue
+"""
+ uwlines = yapf_test_helper.ParseAndUnwrap(unformatted_code)
+ self.assertCodeEqual(expected_formatted_code, reformatter.Reformat(uwlines))
+
+ def testB80484938(self):
+ code = """\
+for sssssss, aaaaaaaaaa in [
+ ('ssssssssssssssssssss', 'sssssssssssssssssssssssss'),
+ ('nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn',
+ 'nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn'),
+ ('pppppppppppppppppppppppppppp', 'pppppppppppppppppppppppppppppppp'),
+ ('wwwwwwwwwwwwwwwwwwww', 'wwwwwwwwwwwwwwwwwwwwwwwww'),
+ ('sssssssssssssssss', 'sssssssssssssssssssssss'),
+ ('ggggggggggggggggggggggg', 'gggggggggggggggggggggggggggg'),
+ ('ggggggggggggggggg', 'gggggggggggggggggggggg'),
+ ('eeeeeeeeeeeeeeeeeeeeee', 'eeeeeeeeeeeeeeeeeeeeeeeeeee')
+]:
+ pass
+
+for sssssss, aaaaaaaaaa in [
+ ('ssssssssssssssssssss', 'sssssssssssssssssssssssss'),
+ ('nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn', 'nnnnnnnnnnnnnnnnnnnnnnnnn'),
+ ('pppppppppppppppppppppppppppp', 'pppppppppppppppppppppppppppppppp'),
+ ('wwwwwwwwwwwwwwwwwwww', 'wwwwwwwwwwwwwwwwwwwwwwwww'),
+ ('sssssssssssssssss', 'sssssssssssssssssssssss'),
+ ('ggggggggggggggggggggggg', 'gggggggggggggggggggggggggggg'),
+ ('ggggggggggggggggg', 'gggggggggggggggggggggg'),
+ ('eeeeeeeeeeeeeeeeeeeeee', 'eeeeeeeeeeeeeeeeeeeeeeeeeee')
+]:
+ pass
+
+for sssssss, aaaaaaaaaa in [
+ ('ssssssssssssssssssss', 'sssssssssssssssssssssssss'),
+ ('nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn',
+ 'nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn'),
+ ('pppppppppppppppppppppppppppp', 'pppppppppppppppppppppppppppppppp'),
+ ('wwwwwwwwwwwwwwwwwwww', 'wwwwwwwwwwwwwwwwwwwwwwwww'),
+ ('sssssssssssssssss', 'sssssssssssssssssssssss'),
+ ('ggggggggggggggggggggggg', 'gggggggggggggggggggggggggggg'),
+ ('ggggggggggggggggg', 'gggggggggggggggggggggg'),
+ ('eeeeeeeeeeeeeeeeeeeeee', 'eeeeeeeeeeeeeeeeeeeeeeeeeee'),
+]:
+ pass
+"""
+ uwlines = yapf_test_helper.ParseAndUnwrap(code)
+ self.assertCodeEqual(code, reformatter.Reformat(uwlines))
+
+ def testB79462249(self):
+ code = """\
+foo.bar(baz, [
+ quux(thud=42),
+ norf,
+])
+foo.bar(baz, [
+ quux(),
+ norf,
+])
+foo.bar(baz, quux(thud=42), aaaaaaaaaaaaaaaaaaaaaa, bbbbbbbbbbbbbbbbbbbbb,
+ ccccccccccccccccccc)
+foo.bar(
+ baz,
+ quux(thud=42),
+ aaaaaaaaaaaaaaaaaaaaaa=1,
+ bbbbbbbbbbbbbbbbbbbbb=2,
+ ccccccccccccccccccc=3)
+"""
+ uwlines = yapf_test_helper.ParseAndUnwrap(code)
+ self.assertCodeEqual(code, reformatter.Reformat(uwlines))
+
+ def testB113210278(self):
+ unformatted_code = """\
+def _():
+ aaaaaaaaaaa = bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.cccccccccccccccccccccccccccc(\
+eeeeeeeeeeeeeeeeeeeeeeeeee.fffffffffffffffffffffffffffffffffffffff.\
+ggggggggggggggggggggggggggggggggg.hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh())
+"""
+ expected_formatted_code = """\
+def _():
+ aaaaaaaaaaa = bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.cccccccccccccccccccccccccccc(
+ eeeeeeeeeeeeeeeeeeeeeeeeee.fffffffffffffffffffffffffffffffffffffff
+ .ggggggggggggggggggggggggggggggggg.hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh())
+"""
+ uwlines = yapf_test_helper.ParseAndUnwrap(unformatted_code)
+ self.assertCodeEqual(expected_formatted_code, reformatter.Reformat(uwlines))
+
def testB77923341(self):
code = """\
def f():
@@ -845,8 +995,8 @@
""")
expected_formatted_code = textwrap.dedent("""\
def lulz():
- return (some_long_module_name.SomeLongClassName.some_long_attribute_name.
- some_long_method_name())
+ return (some_long_module_name.SomeLongClassName.some_long_attribute_name
+ .some_long_method_name())
""")
uwlines = yapf_test_helper.ParseAndUnwrap(unformatted_code)
self.assertCodeEqual(expected_formatted_code, reformatter.Reformat(uwlines))
@@ -944,8 +1094,8 @@
def _():
_xxxxxxxxxxxxxxx(
aaaaaaaa,
- bbbbbbbbbbbbbb.cccccccccc[dddddddddddddddddddddddddddd.
- eeeeeeeeeeeeeeeeeeeeee.fffffffffffffffffffff])
+ bbbbbbbbbbbbbb.cccccccccc[dddddddddddddddddddddddddddd
+ .eeeeeeeeeeeeeeeeeeeeee.fffffffffffffffffffff])
""")
uwlines = yapf_test_helper.ParseAndUnwrap(unformatted_code)
self.assertCodeEqual(expected_formatted_code, reformatter.Reformat(uwlines))
@@ -1017,8 +1167,8 @@
expected_formatted_code = textwrap.dedent("""\
def _():
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = (
- self.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.
- cccccccccccccccccccccccccccccccccccc)
+ self.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+ .cccccccccccccccccccccccccccccccccccc)
""")
uwlines = yapf_test_helper.ParseAndUnwrap(unformatted_code)
self.assertCodeEqual(expected_formatted_code, reformatter.Reformat(uwlines))
@@ -1779,19 +1929,20 @@
self.assertCodeEqual(expected_formatted_code, reformatter.Reformat(uwlines))
def testB15597568(self):
- unformatted_code = textwrap.dedent("""\
- if True:
- if True:
- if True:
- print(("Return code was %d" + (", and the process timed out." if did_time_out else ".")) % errorcode)
- """)
- expected_formatted_code = textwrap.dedent("""\
- if True:
- if True:
- if True:
- print(("Return code was %d" + (", and the process timed out."
- if did_time_out else ".")) % errorcode)
- """)
+ unformatted_code = """\
+if True:
+ if True:
+ if True:
+ print(("Return code was %d" + (", and the process timed out." if did_time_out else ".")) % errorcode)
+"""
+ expected_formatted_code = """\
+if True:
+ if True:
+ if True:
+ print(("Return code was %d" +
+ (", and the process timed out." if did_time_out else ".")) %
+ errorcode)
+"""
uwlines = yapf_test_helper.ParseAndUnwrap(unformatted_code)
self.assertCodeEqual(expected_formatted_code, reformatter.Reformat(uwlines))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/yapftests/split_penalty_test.py new/yapf-0.24.0/yapftests/split_penalty_test.py
--- old/yapf-0.23.0/yapftests/split_penalty_test.py 2018-01-15 01:48:30.000000000 +0100
+++ new/yapf-0.24.0/yapftests/split_penalty_test.py 2018-09-03 12:02:33.000000000 +0200
@@ -22,6 +22,9 @@
from yapf.yapflib import pytree_utils
from yapf.yapflib import pytree_visitor
from yapf.yapflib import split_penalty
+from yapf.yapflib import style
+
+from yapftests import yapf_test_helper
UNBREAKABLE = split_penalty.UNBREAKABLE
VERY_STRONGLY_CONNECTED = split_penalty.VERY_STRONGLY_CONNECTED
@@ -29,7 +32,11 @@
STRONGLY_CONNECTED = split_penalty.STRONGLY_CONNECTED
-class SplitPenaltyTest(unittest.TestCase):
+class SplitPenaltyTest(yapf_test_helper.YAPFTest):
+
+ @classmethod
+ def setUpClass(cls):
+ style.SetGlobalStyle(style.CreateChromiumStyle())
def _ParseAndComputePenalties(self, code, dumptree=False):
"""Parses the code and computes split penalties.
@@ -198,7 +205,7 @@
('foo', STRONGLY_CONNECTED),
('if', 0),
('a', STRONGLY_CONNECTED),
- ('.', UNBREAKABLE),
+ ('.', STRONGLY_CONNECTED),
('x', DOTTED_NAME),
('==', STRONGLY_CONNECTED),
('37', STRONGLY_CONNECTED),
@@ -224,7 +231,7 @@
tree = self._ParseAndComputePenalties(code)
self._CheckPenalties(tree, [
('foo', None),
- ('.', UNBREAKABLE),
+ ('.', STRONGLY_CONNECTED),
('bar', DOTTED_NAME),
('.', STRONGLY_CONNECTED),
('baz', DOTTED_NAME),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yapf-0.23.0/yapftests/yapf_test.py new/yapf-0.24.0/yapftests/yapf_test.py
--- old/yapf-0.23.0/yapftests/yapf_test.py 2018-08-27 14:07:22.000000000 +0200
+++ new/yapf-0.24.0/yapftests/yapf_test.py 2018-08-29 10:59:54.000000000 +0200
@@ -1363,7 +1363,7 @@
expected_formatted_code,
extra_options=[
'--style',
- '{based_on_style: pep8, ' +
+ '{based_on_style: pep8, '
'no_spaces_around_selected_binary_operators: "@,**,-"}',
])
1
0
Hello community,
here is the log from the commit of package iwd for openSUSE:Factory checked in at 2018-10-26 11:08:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/iwd (Old)
and /work/SRC/openSUSE:Factory/.iwd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "iwd"
Fri Oct 26 11:08:16 2018 rev:3 rq:644112 version:0.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/iwd/iwd.changes 2018-07-28 12:45:25.796992954 +0200
+++ /work/SRC/openSUSE:Factory/.iwd.new/iwd.changes 2018-10-26 11:08:24.365872567 +0200
@@ -1,0 +2,43 @@
+Tue Oct 9 21:01:45 UTC 2018 - sor.alexei(a)meowr.ru
+
+- Update to version 0.9:
+ * Fix an issue with handling EAP-WSC passwords.
+ * Add support for TTLS-CHAP and TTLS-PAP.
+ * Add support for handling FT over SAE.
+
+-------------------------------------------------------------------
+Mon Sep 24 14:44:27 UTC 2018 - sor.alexei(a)meowr.ru
+
+- Update to version 0.8:
+ * Fix issue with handling EAP_CACHE_NEVER secret types.
+ * Fix issue with redundant usage of the L flag and PEAP.
+ * Fix issue with EAP type 33 as termination mechanism for PEAPv1.
+ * Add initial version of Ethernet authentication daemon.
+ * Add support for Station mode interface.
+
+-------------------------------------------------------------------
+Tue Sep 11 15:16:43 UTC 2018 - astieger(a)suse.com
+
+- add upstream signing key and validate source signature
+
+-------------------------------------------------------------------
+Tue Sep 11 14:10:18 UTC 2018 - sor.alexei(a)meowr.ru
+
+- Update to version 0.7 (changes since 0.4):
+ * Fix an issue with EAPoL handling and Ad-Hoc networks.
+ * Add support for using agent with EAP-GTC methods.
+ * Add support for improved Known Networks management.
+ * Add support for Simultaneous Authentication of Equals.
+ * Add support for exposing supported modes of operation.
+ * Add support for D-Bus auto-activation via systemd.
+ * Fix an issue with synching the PSK on first connection.
+ * Fix an issue with unnecessary known object removal events.
+ * Fix an issue with hard coded peer address and SAE networks.
+ * Fix an issue with raw passphrase requirement and SAE networks.
+ * Fix an issue with differentiating authenticator and supplicant.
+ * Fix an issue with timestamps comparison of known networks.
+ * Fix an issue with handling cancellation of power callbacks.
+ * Fix an issue with honouring auto-connect setting on power up.
+ * Fix an issue with a crash during operstate callbacks.
+
+-------------------------------------------------------------------
Old:
----
iwd-0.4.tar.xz
New:
----
iwd-0.9.tar.sign
iwd-0.9.tar.xz
iwd.keyring
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ iwd.spec ++++++
--- /var/tmp/diff_new_pack.JgM2OR/_old 2018-10-26 11:08:25.913870402 +0200
+++ /var/tmp/diff_new_pack.JgM2OR/_new 2018-10-26 11:08:25.913870402 +0200
@@ -12,18 +12,21 @@
# 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/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: iwd
-Version: 0.4
+Version: 0.9
Release: 0
Summary: Wireless daemon for Linux
License: LGPL-2.1-or-later
Group: Productivity/Networking/Other
URL: https://git.kernel.org/pub/scm/network/wireless/iwd.git
Source: https://kernel.org/pub/linux/network/wireless/%{name}-%{version}.tar.xz
+Source2: https://kernel.org/pub/linux/network/wireless/%{name}-%{version}.tar.sign
+# https://www.kernel.org/doc/wot/holtmann.html
+Source3: %{name}.keyring
BuildRequires: pkgconfig
BuildRequires: readline-devel
BuildRequires: systemd-rpm-macros
@@ -77,5 +80,6 @@
%else
%{_sysconfdir}/dbus-1/system.d/%{name}*.conf
%endif
+%{_datadir}/dbus-1/system-services/*%{name}.service
%changelog
++++++ iwd-0.4.tar.xz -> iwd-0.9.tar.xz ++++++
++++ 24972 lines of diff (skipped)
1
0