Hello community, here is the log from the commit of package duplicity for openSUSE:Factory checked in at 2018-01-20 11:24:20 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/duplicity (Old) and /work/SRC/openSUSE:Factory/.duplicity.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "duplicity" Sat Jan 20 11:24:20 2018 rev:39 rq:564427 version:0.7.16 Changes: -------- --- /work/SRC/openSUSE:Factory/duplicity/duplicity.changes 2017-12-19 10:46:47.387232195 +0100 +++ /work/SRC/openSUSE:Factory/.duplicity.new/duplicity.changes 2018-01-20 11:24:24.214849973 +0100 @@ -1,0 +2,11 @@ +Sun Jan 14 15:59:32 UTC 2018 - w...@rosenauer.org + +- update to 0.7.16 + * Fixed AttributeError: 'GPGError' object has no attribute 'decode' + * More fixes for Unicode handling + * Fixed "BackendException with oauth2client 4.0.0" + * Fixed "Dropbox support needs to be updated for Dropbox SDK v7.1" + * Fixed small file upload changes made in Dropbox SDK v7.1 + * Fix pylint error in webdavbackend.py + +------------------------------------------------------------------- Old: ---- duplicity-0.7.15.tar.gz New: ---- duplicity-0.7.16.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ duplicity.spec ++++++ --- /var/tmp/diff_new_pack.VfFMoR/_old 2018-01-20 11:24:24.966814818 +0100 +++ /var/tmp/diff_new_pack.VfFMoR/_new 2018-01-20 11:24:24.966814818 +0100 @@ -1,7 +1,7 @@ # # spec file for package duplicity # -# Copyright (c) 2017 SUSE LINUX 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 @@ -19,7 +19,7 @@ %{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} %{!?python_sitearch: %global python_sitearch %(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} Name: duplicity -Version: 0.7.15 +Version: 0.7.16 Release: 0 Summary: Encrypted bandwidth-efficient backup using the rsync algorithm License: GPL-3.0+ ++++++ duplicity-0.7.15.tar.gz -> duplicity-0.7.16.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.15/CHANGELOG new/duplicity-0.7.16/CHANGELOG --- old/duplicity-0.7.15/CHANGELOG 2017-11-13 16:47:44.000000000 +0100 +++ new/duplicity-0.7.16/CHANGELOG 2018-01-12 17:55:24.000000000 +0100 @@ -1,3 +1,19 @@ +New in v0.7.16 (2018/01/12) +--------------------------- +* Fixed bug #1733057 AttributeError: 'GPGError' object has no attribute 'decode' + - Replaced call to util.ufn() with call to util.uexc(). Stupid typo! +* More fixes for Unicode handling + - Default to 'utf-8' if sys.getfilesystemencoding() returns 'ascii' or None + - Fixed bug #1386373 with suggestion from Eugene Morozov +* Patched in lp:~crosser/duplicity/fix-oauth-flow + - Fixed bug #1638236 "BackendException with oauth2client 4.0.0" +* Patched in lp:~crosser/duplicity/dpbx-fix-file-listing + - Fixed bug #1639664 "Dropbox support needs to be updated for Dropbox SDK v7.1" +* Patched in lp:~crosser/duplicity/fix-small-file-upload + - Fixed small file upload changes made in Dropbox SDK v7.1 +* Fix pylint error in webdavbackend.py + + New in v0.7.15 (2017/11/13) --------------------------- * Fixed bug introduced in new megabackend.py where process_commandline() @@ -25,7 +41,7 @@ * Fixed bug #1654756 with new b2backend.py module from Vincent Rouille - Faster (big files are uploaded in chunks) - Added upload progress reporting support -* Fixed bug #1448094 with patch from Tomáš Zvala +* Fixed bug #1448094 with patch from Wolfgang Rohdewald - Don't log incremental deletes for chains that have no incrementals * Fixed bug #1724144 "--gpg-options unused with some commands" - Add --gpg-options to get version run command diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.15/Changelog.GNU new/duplicity-0.7.16/Changelog.GNU --- old/duplicity-0.7.15/Changelog.GNU 2017-11-13 16:48:28.000000000 +0100 +++ new/duplicity-0.7.16/Changelog.GNU 2018-01-12 17:54:58.000000000 +0100 @@ -1,3 +1,31 @@ +2018-01-12 Kenneth Loafman <kenn...@loafman.com> + + * Fix pylint error in webdavbackend.py + * Prep for 0.7.16 + +2017-11-28 Kenneth Loafman <kenn...@loafman.com> + + * Patched in lp:~crosser/duplicity/fix-small-file-upload + - Fixed small file upload changes made in Dropbox SDK v7.1 + +2017-11-25 Kenneth Loafman <kenn...@loafman.com> + + * Patched in lp:~crosser/duplicity/fix-oauth-flow + - Fixed bug #1638236 "BackendException with oauth2client 4.0.0" + * Patched in lp:~crosser/duplicity/dpbx-fix-file-listing + - Fixed bug #1639664 "Dropbox support needs to be updated for Dropbox SDK v7.1" + +2017-11-23 Kenneth Loafman <kenn...@loafman.com> + + * More fixes for Unicode handling + - Default to 'utf-8' if sys.getfilesystemencoding() returns 'ascii' or None + - Fixed bug #1386373 with suggestion from Eugene Morozov + +2017-11-18 Kenneth Loafman <kenn...@loafman.com> + + * Fixed bug #1733057 AttributeError: 'GPGError' object has no attribute 'decode' + - Replaced call to util.ufn() with call to util.uexc(). Stupid typo! + 2017-11-09 Kenneth Loafman <kenn...@loafman.com> * Prep for 0.7.15 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.15/bin/duplicity new/duplicity-0.7.16/bin/duplicity --- old/duplicity-0.7.15/bin/duplicity 2017-11-13 16:56:58.000000000 +0100 +++ new/duplicity-0.7.16/bin/duplicity 2018-01-12 18:06:21.000000000 +0100 @@ -2,7 +2,7 @@ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- # # duplicity -- Encrypted bandwidth efficient backup -# Version 0.7.15 released November 13, 2017 +# Version 0.7.16 released January 12, 2018 # # Copyright 2002 Ben Escoto <b...@emerose.org> # Copyright 2007 Kenneth Loafman <kenn...@loafman.com> @@ -1284,7 +1284,7 @@ log Python, duplicity, and system versions """ log.Log(u'=' * 80, verbosity) - log.Log(u"duplicity 0.7.15 (November 13, 2017)", verbosity) + log.Log(u"duplicity 0.7.16 (January 12, 2018)", verbosity) log.Log(u"Args: %s" % util.ufn(' '.join(sys.argv)), verbosity) log.Log(u' '.join(platform.uname()), verbosity) log.Log(u"%s %s" % (sys.executable or sys.platform, sys.version), verbosity) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.15/bin/duplicity.1 new/duplicity-0.7.16/bin/duplicity.1 --- old/duplicity-0.7.15/bin/duplicity.1 2017-11-13 16:56:58.000000000 +0100 +++ new/duplicity-0.7.16/bin/duplicity.1 2018-01-12 18:06:21.000000000 +0100 @@ -1,4 +1,4 @@ -.TH DUPLICITY 1 "November 13, 2017" "Version 0.7.15" "User Manuals" \" -*- nroff -*- +.TH DUPLICITY 1 "January 12, 2018" "Version 0.7.16" "User Manuals" \" -*- nroff -*- .\" disable justification (adjust text to left margin only) .\" command line examples stay readable through that .ad l diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.15/bin/rdiffdir new/duplicity-0.7.16/bin/rdiffdir --- old/duplicity-0.7.15/bin/rdiffdir 2017-11-13 16:56:58.000000000 +0100 +++ new/duplicity-0.7.16/bin/rdiffdir 2018-01-12 18:06:21.000000000 +0100 @@ -1,6 +1,6 @@ #!/usr/bin/env python2 # rdiffdir -- Extend rdiff functionality to directories -# Version 0.7.15 released November 13, 2017 +# Version 0.7.16 released January 12, 2018 # # Copyright 2002 Ben Escoto <b...@emerose.org> # Copyright 2007 Kenneth Loafman <kenn...@loafman.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.15/bin/rdiffdir.1 new/duplicity-0.7.16/bin/rdiffdir.1 --- old/duplicity-0.7.15/bin/rdiffdir.1 2017-11-13 16:56:58.000000000 +0100 +++ new/duplicity-0.7.16/bin/rdiffdir.1 2018-01-12 18:06:21.000000000 +0100 @@ -1,4 +1,4 @@ -.TH RDIFFDIR 1 "November 13, 2017" "Version 0.7.15" "User Manuals" \" -*- nroff -*- +.TH RDIFFDIR 1 "January 12, 2018" "Version 0.7.16" "User Manuals" \" -*- nroff -*- .\" disable justification (adjust text to left margin only) .\" command line examples stay readable through that .ad l diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.15/duplicity/backend.py new/duplicity-0.7.16/duplicity/backend.py --- old/duplicity-0.7.15/duplicity/backend.py 2017-09-07 18:46:12.000000000 +0200 +++ new/duplicity-0.7.16/duplicity/backend.py 2017-11-23 14:07:34.000000000 +0100 @@ -568,7 +568,7 @@ # There shouldn't be any encoding errors for files we care # about, since duplicity filenames are ascii. But user files # may be in the same directory. So just replace characters. - return filename.encode(sys.getfilesystemencoding(), 'replace') + return filename.encode(globals.fsencoding, 'replace') else: return filename diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.15/duplicity/backends/dpbxbackend.py new/duplicity-0.7.16/duplicity/backends/dpbxbackend.py --- old/duplicity-0.7.15/duplicity/backends/dpbxbackend.py 2017-08-06 18:25:09.000000000 +0200 +++ new/duplicity-0.7.16/duplicity/backends/dpbxbackend.py 2017-11-28 15:10:56.000000000 +0100 @@ -1,5 +1,6 @@ # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- # pylint: skip-file +# pylint: skip-file # # Copyright 2013 jno <j...@pisem.net> # Copyright 2016 Dmitry Nezhevenko <d...@dion.org.ua> @@ -40,7 +41,7 @@ from dropbox import Dropbox from dropbox.exceptions import AuthError, BadInputError, ApiError from dropbox.files import UploadSessionCursor, CommitInfo, WriteMode, \ - GetMetadataError, DeleteError, UploadSessionLookupError + GetMetadataError, DeleteError, UploadSessionLookupError, ListFolderError from dropbox.oauth import DropboxOAuth2FlowNoRedirect from requests.exceptions import ConnectionError import time @@ -141,11 +142,11 @@ auth_code = raw_input("Enter the authorization code here: ").strip() try: log.Debug('dpbx,auth_flow.finish(%s)' % auth_code) - access_token, _ = auth_flow.finish(auth_code) + authresult = auth_flow.finish(auth_code) except Exception as e: raise BackendException('dpbx: Unable to obtain access token: %s' % e) log.Info("dpbx: Authentication successfull") - self.save_access_token(access_token) + self.save_access_token(authresult.access_token) def login(self): if self.load_access_token() is None: @@ -214,7 +215,7 @@ try: log.Debug('dpbx,files_upload(%s, [%d bytes])' % (remote_path, file_size)) - res_metadata = self.api_client.files_upload(f, remote_path, + res_metadata = self.api_client.files_upload(f.read(), remote_path, mode=WriteMode.overwrite, autorename=False, client_modified=None, @@ -382,15 +383,22 @@ remote_dir = '/' + urllib.unquote(self.parsed_url.path.lstrip('/')).rstrip() log.Debug('dpbx.files_list_folder(%s)' % remote_dir) - resp = self.api_client.files_list_folder(remote_dir) - log.Debug('dpbx.list(%s): %s' % (remote_dir, resp)) - res = [] - while True: - res.extend([entry.name for entry in resp.entries]) - if not resp.has_more: - break - resp = self.api_client.files_list_folder_continue(resp.cursor) + try: + resp = self.api_client.files_list_folder(remote_dir) + log.Debug('dpbx.list(%s): %s' % (remote_dir, resp)) + + while True: + res.extend([entry.name for entry in resp.entries]) + if not resp.has_more: + break + resp = self.api_client.files_list_folder_continue(resp.cursor) + except ApiError as e: + if (isinstance(e.error, ListFolderError) and e.error.is_path() and + e.error.get_path().is_not_found()): + log.Debug('dpbx.list(%s): ignore missing folder (%s)' % (remote_dir, e)) + else: + raise # Warn users of old version dpbx about automatically renamed files self.check_renamed_files(res) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.15/duplicity/backends/webdavbackend.py new/duplicity-0.7.16/duplicity/backends/webdavbackend.py --- old/duplicity-0.7.15/duplicity/backends/webdavbackend.py 2017-08-24 22:20:05.000000000 +0200 +++ new/duplicity-0.7.16/duplicity/backends/webdavbackend.py 2018-01-12 17:54:05.000000000 +0100 @@ -272,7 +272,7 @@ return urllib2.parse_keqv_list(urllib2.parse_http_list(challenge_string)) def get_kerberos_authorization(self): - import kerberos + import kerberos # pylint: disable=import-error _, ctx = kerberos.authGSSClientInit("HTTP@%s" % self.conn.host) kerberos.authGSSClientStep(ctx, "") tgt = kerberos.authGSSClientResponse(ctx) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.15/duplicity/collections.py new/duplicity-0.7.16/duplicity/collections.py --- old/duplicity-0.7.15/duplicity/collections.py 2017-11-10 21:21:30.000000000 +0100 +++ new/duplicity-0.7.16/duplicity/collections.py 2017-11-18 17:05:32.000000000 +0100 @@ -242,7 +242,7 @@ manifest_buffer = self.backend.get_data(self.remote_manifest_name) except GPGError as message: log.Error(_("Error processing remote manifest (%s): %s") % - (util.ufn(self.remote_manifest_name), util.ufn(message))) + (util.ufn(self.remote_manifest_name), util.uexc(message))) return None log.Info(_("Processing remote manifest %s (%s)") % ( util.ufn(self.remote_manifest_name), len(manifest_buffer))) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.15/duplicity/globals.py new/duplicity-0.7.16/duplicity/globals.py --- old/duplicity-0.7.15/duplicity/globals.py 2017-11-13 16:56:58.000000000 +0100 +++ new/duplicity-0.7.16/duplicity/globals.py 2018-01-12 18:06:21.000000000 +0100 @@ -22,11 +22,12 @@ """Store global configuration information""" import os +import sys import socket # The current version of duplicity -version = "0.7.15" +version = "0.7.16" # Prefix for all files (appended before type-specific prefixes) file_prefix = "" @@ -301,3 +302,10 @@ # delay (in seconds) before next operation after failure backend_retry_delay = 30 + +# default filesystem encoding +# In Python 2 it seems that sys.getfilesystemencoding() will normally return +# 'utf-8' or some other sane encoding, but will sometimes fail and return +# either 'ascii' or None. Both are bogus, so default to 'utf-8' if it does. +fsencoding = sys.getfilesystemencoding() +fsencoding = fsencoding if fsencoding not in ['ascii', None] else 'utf-8' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.15/duplicity/util.py new/duplicity-0.7.16/duplicity/util.py --- old/duplicity-0.7.15/duplicity/util.py 2017-09-07 14:19:18.000000000 +0200 +++ new/duplicity-0.7.16/duplicity/util.py 2017-11-23 14:07:34.000000000 +0100 @@ -60,7 +60,7 @@ def ufn(filename): "Convert a (bytes) filename to unicode for printing" assert not isinstance(filename, unicode) - return filename.decode(sys.getfilesystemencoding(), 'replace') + return filename.decode(globals.fsencoding, 'replace') def uindex(index): @@ -76,8 +76,7 @@ # non-ascii will cause a UnicodeDecodeError when implicitly decoding to # unicode. So we decode manually, using the filesystem encoding. # 99.99% of the time, this will be a fine encoding to use. - e = unicode(e).encode('utf-8') - return ufn(str(e)) + return ufn(unicode(e).encode('utf-8')) def maybe_ignore_errors(fn): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.15/po/duplicity.pot new/duplicity-0.7.16/po/duplicity.pot --- old/duplicity-0.7.15/po/duplicity.pot 2017-11-11 14:08:58.000000000 +0100 +++ new/duplicity-0.7.16/po/duplicity.pot 2018-01-12 17:40:21.000000000 +0100 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: Kenneth Loafman <kenn...@loafman.com>\n" -"POT-Creation-Date: 2017-11-11 07:08-0600\n" +"POT-Creation-Date: 2018-01-12 10:40-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <l...@li.org>\n" @@ -1687,12 +1687,12 @@ msgid "Cleanup of temporary directory %s failed - this is probably a bug." msgstr "" -#: ../duplicity/util.py:96 +#: ../duplicity/util.py:95 #, python-format msgid "IGNORED_ERROR: Warning: ignoring error as requested: %s: %s" msgstr "" -#: ../duplicity/util.py:163 +#: ../duplicity/util.py:162 #, python-format msgid "Releasing lockfile %s" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.15/requirements.txt new/duplicity-0.7.16/requirements.txt --- old/duplicity-0.7.15/requirements.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/duplicity-0.7.16/requirements.txt 2017-12-06 16:58:25.000000000 +0100 @@ -0,0 +1,13 @@ +boto +coverage +dropbox==6.9.0 +fasteners +paramiko +pep8 +pexpect +pydrive +pylint +pyrax +python-cloudfiles +tox +urllib3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/duplicity-0.7.15/setup.py new/duplicity-0.7.16/setup.py --- old/duplicity-0.7.15/setup.py 2017-11-13 16:56:58.000000000 +0100 +++ new/duplicity-0.7.16/setup.py 2018-01-12 18:06:21.000000000 +0100 @@ -28,7 +28,7 @@ from setuptools.command.sdist import sdist from distutils.command.build_scripts import build_scripts -version_string = "0.7.15" +version_string = "0.7.16" if sys.version_info[:2] < (2, 6) or sys.version_info[:2] > (2, 7): print("Sorry, duplicity requires version 2.6 or 2.7 of python.") Binary files old/duplicity-0.7.15/testing/testfiles.tar.gz and new/duplicity-0.7.16/testing/testfiles.tar.gz differ