diff -Nru python-keyring-10.0.2/appveyor.yml python-keyring-10.1/appveyor.yml --- python-keyring-10.0.2/appveyor.yml 1970-01-01 00:00:00.000000000 +0000 +++ python-keyring-10.1/appveyor.yml 2016-12-04 18:41:41.000000000 +0000 @@ -0,0 +1,19 @@ +environment: + + APPVEYOR: true + + matrix: + - PYTHON: "C:\\Python35-x64" + - PYTHON: "C:\\Python27-x64" + +install: + # symlink python from a directory with a space + - "mklink /d \"C:\\Program Files\\Python\" %PYTHON%" + - "SET PYTHON=\"C:\\Program Files\\Python\"" + - "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%" + +build: off + +test_script: + - "python -m pip install tox" + - "tox -- -rs -v" diff -Nru python-keyring-10.0.2/CHANGES.rst python-keyring-10.1/CHANGES.rst --- python-keyring-10.0.2/CHANGES.rst 2016-10-20 17:23:35.000000000 +0000 +++ python-keyring-10.1/CHANGES.rst 2016-12-04 18:41:41.000000000 +0000 @@ -1,5 +1,8 @@ -CHANGES -======= +10.1 +---- + +* #253: Backends now expose a '.name' attribute suitable + for identifying each backend to users. 10.0.2 ----- diff -Nru python-keyring-10.0.2/debian/changelog python-keyring-10.1/debian/changelog --- python-keyring-10.0.2/debian/changelog 2016-10-31 13:29:42.000000000 +0000 +++ python-keyring-10.1/debian/changelog 2016-12-05 18:48:09.000000000 +0000 @@ -1,3 +1,14 @@ +python-keyring (10.1-1) unstable; urgency=medium + + * New upstream release. + * Drop secretstorage_any_collection.diff, applied upstream. + * Bump setuptools-scm dependency to ≥ 1.15.0, as required by setup.py. + * Disable the tests, they were all skipped anyway. + * Add python[3]-pytest to autopkgtest dependencies. + * Redirect autopkgtests stdout to /dev/null, we only need stderr. + + -- Dmitry Shachnev Mon, 05 Dec 2016 21:48:09 +0300 + python-keyring (10.0.2-2) unstable; urgency=medium * Promote python[3]-secretstorage from Recommends to Depends, diff -Nru python-keyring-10.0.2/debian/control python-keyring-10.1/debian/control --- python-keyring-10.0.2/debian/control 2016-10-31 13:29:42.000000000 +0000 +++ python-keyring-10.1/debian/control 2016-12-05 18:48:09.000000000 +0000 @@ -10,10 +10,10 @@ dh-python (>= 2.20160609~), python-all (>= 2.6.6-13), python-setuptools, - python-setuptools-scm (>= 1.9), + python-setuptools-scm (>= 1.15.0), python3-all, python3-setuptools, - python3-setuptools-scm (>= 1.9) + python3-setuptools-scm (>= 1.15.0) Standards-Version: 3.9.8 Homepage: https://github.com/jaraco/keyring Vcs-Git: https://anonscm.debian.org/git/python-modules/packages/python-keyring.git diff -Nru python-keyring-10.0.2/debian/.git-dpm python-keyring-10.1/debian/.git-dpm --- python-keyring-10.0.2/debian/.git-dpm 2016-10-31 13:29:42.000000000 +0000 +++ python-keyring-10.1/debian/.git-dpm 2016-12-05 18:48:09.000000000 +0000 @@ -1,11 +1,11 @@ # see git-dpm(1) from git-dpm package -c92ac6fe770a6a6b22a5c17bd766dabc34a2d18f -c92ac6fe770a6a6b22a5c17bd766dabc34a2d18f -89765ec7a29d3c68e51038c17143ed1480aaedfc -89765ec7a29d3c68e51038c17143ed1480aaedfc -python-keyring_10.0.2.orig.tar.gz -63315340f879c734b925093fc7e8223f166c51f1 -36587 +a9b957d4bee24af5bd69a87b2f68ccf3cc25c189 +a9b957d4bee24af5bd69a87b2f68ccf3cc25c189 +a9b957d4bee24af5bd69a87b2f68ccf3cc25c189 +a9b957d4bee24af5bd69a87b2f68ccf3cc25c189 +python-keyring_10.1.orig.tar.gz +6ba1b930a8b5b2255ad62e499092cea2de629878 +37088 debianTag="debian/%e%v" patchedTag="patched/%e%v" upstreamTag="upstream/%e%u" diff -Nru python-keyring-10.0.2/debian/patches/secretstorage_any_collection.diff python-keyring-10.1/debian/patches/secretstorage_any_collection.diff --- python-keyring-10.0.2/debian/patches/secretstorage_any_collection.diff 2016-10-31 13:29:42.000000000 +0000 +++ python-keyring-10.1/debian/patches/secretstorage_any_collection.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -From c92ac6fe770a6a6b22a5c17bd766dabc34a2d18f Mon Sep 17 00:00:00 2001 -From: Dmitry Shachnev -Date: Thu, 20 Oct 2016 23:37:03 +0300 -Subject: Make secretstorage use session collection when running tests. - -Patch-Name: secretstorage_any_collection.diff ---- - keyring/tests/backends/test_SecretService.py | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/keyring/tests/backends/test_SecretService.py b/keyring/tests/backends/test_SecretService.py -index 202b014..ef83280 100644 ---- a/keyring/tests/backends/test_SecretService.py -+++ b/keyring/tests/backends/test_SecretService.py -@@ -4,6 +4,11 @@ from ..test_backend import BackendBasicTests - from keyring.backends import SecretService - from .. import util - -+if hasattr(SecretService, 'secretstorage'): -+ secretstorage = SecretService.secretstorage -+ secretstorage.get_default_collection = secretstorage.get_any_collection -+ secretstorage.collection.get_default_collection = secretstorage.get_any_collection -+ - @unittest.skipUnless(SecretService.Keyring.viable, - "SecretStorage package is needed for SecretServiceKeyring") - class SecretServiceKeyringTestCase(BackendBasicTests, unittest.TestCase): diff -Nru python-keyring-10.0.2/debian/patches/series python-keyring-10.1/debian/patches/series --- python-keyring-10.0.2/debian/patches/series 2016-10-31 13:29:42.000000000 +0000 +++ python-keyring-10.1/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -secretstorage_any_collection.diff diff -Nru python-keyring-10.0.2/debian/rules python-keyring-10.1/debian/rules --- python-keyring-10.0.2/debian/rules 2016-10-31 13:29:42.000000000 +0000 +++ python-keyring-10.1/debian/rules 2016-12-05 18:48:09.000000000 +0000 @@ -2,6 +2,8 @@ #DH_VERBOSE=1 +export PYBUILD_DISABLE=test + %: dh $@ --with python2,python3 --buildsystem pybuild diff -Nru python-keyring-10.0.2/debian/tests/control python-keyring-10.1/debian/tests/control --- python-keyring-10.0.2/debian/tests/control 2016-10-31 13:29:42.000000000 +0000 +++ python-keyring-10.1/debian/tests/control 2016-12-05 18:48:09.000000000 +0000 @@ -1,9 +1,11 @@ Tests: secretstorage-python2 Depends: gnome-keyring (>= 3.11.92), - python-keyring + python-keyring, + python-pytest Restrictions: allow-stderr Tests: secretstorage-python3 Depends: gnome-keyring (>= 3.11.92), - python3-keyring + python3-keyring, + python3-pytest Restrictions: allow-stderr diff -Nru python-keyring-10.0.2/debian/tests/secretstorage-python2 python-keyring-10.1/debian/tests/secretstorage-python2 --- python-keyring-10.0.2/debian/tests/secretstorage-python2 2016-10-31 13:29:42.000000000 +0000 +++ python-keyring-10.1/debian/tests/secretstorage-python2 2016-12-05 18:48:09.000000000 +0000 @@ -6,5 +6,5 @@ export XDG_RUNTIME_DIR="$ADTTMP" for python in $(pyversions -i); do - dbus-run-session -- $python -m unittest -v keyring.tests.backends.test_SecretService + dbus-run-session -- $python -m unittest -v keyring.tests.backends.test_SecretService >/dev/null done diff -Nru python-keyring-10.0.2/debian/tests/secretstorage-python3 python-keyring-10.1/debian/tests/secretstorage-python3 --- python-keyring-10.0.2/debian/tests/secretstorage-python3 2016-10-31 13:29:42.000000000 +0000 +++ python-keyring-10.1/debian/tests/secretstorage-python3 2016-12-05 18:48:09.000000000 +0000 @@ -6,5 +6,5 @@ export XDG_RUNTIME_DIR="$ADTTMP" for python in $(py3versions -i); do - dbus-run-session -- $python -m unittest -v keyring.tests.backends.test_SecretService + dbus-run-session -- $python -m unittest -v keyring.tests.backends.test_SecretService >/dev/null done diff -Nru python-keyring-10.0.2/docs/conf.py python-keyring-10.1/docs/conf.py --- python-keyring-10.0.2/docs/conf.py 2016-10-20 17:23:35.000000000 +0000 +++ python-keyring-10.1/docs/conf.py 2016-12-04 18:41:41.000000000 +0000 @@ -20,7 +20,7 @@ master_doc = 'index' link_files = { - 'CHANGES.rst': dict( + '../CHANGES.rst': dict( using=dict( GH='https://github.com', project=project, diff -Nru python-keyring-10.0.2/docs/requirements.txt python-keyring-10.1/docs/requirements.txt --- python-keyring-10.0.2/docs/requirements.txt 1970-01-01 00:00:00.000000000 +0000 +++ python-keyring-10.1/docs/requirements.txt 2016-12-04 18:41:41.000000000 +0000 @@ -0,0 +1 @@ +rst.linker diff -Nru python-keyring-10.0.2/keyring/backend.py python-keyring-10.1/keyring/backend.py --- python-keyring-10.0.2/keyring/backend.py 2016-10-20 17:23:35.000000000 +0000 +++ python-keyring-10.1/keyring/backend.py 2016-12-04 18:41:41.000000000 +0000 @@ -66,6 +66,18 @@ cls.priority return not bool(exc) + @properties.ClassProperty + @classmethod + def name(cls): + """ + The keyring name, suitable for display. + + The name is derived from module and class name. + """ + parent, sep, mod_name = cls.__module__.rpartition('.') + mod_name = mod_name.replace('_', ' ') + return ' '.join([mod_name, cls.__name__]) + @abc.abstractmethod def get_password(self, service, username): """Get password of the username for the service diff -Nru python-keyring-10.0.2/keyring/backends/fail.py python-keyring-10.1/keyring/backends/fail.py --- python-keyring-10.0.2/keyring/backends/fail.py 2016-10-20 17:23:35.000000000 +0000 +++ python-keyring-10.1/keyring/backends/fail.py 2016-12-04 18:41:41.000000000 +0000 @@ -15,8 +15,11 @@ priority = 0 def get_password(self, service, username, password=None): - raise RuntimeError("No recommended backend was available. Install the " - "keyrings.alt package if you want to use the non-" - "recommended backends. See README.rst for details.") + msg = ( + "No recommended backend was available. Install the " + "keyrings.alt package if you want to use the non-" + "recommended backends. See README.rst for details." + ) + raise RuntimeError(msg) set_password = delete_pasword = get_password diff -Nru python-keyring-10.0.2/keyring/backends/kwallet.py python-keyring-10.1/keyring/backends/kwallet.py --- python-keyring-10.0.2/keyring/backends/kwallet.py 2016-10-20 17:23:35.000000000 +0000 +++ python-keyring-10.1/keyring/backends/kwallet.py 2016-12-04 18:41:41.000000000 +0000 @@ -12,9 +12,14 @@ class DBusKeyring(KeyringBackend): - """KDE KWallet via D-Bus""" + """ + KDE KWallet 5 via D-Bus + """ appid = 'Python program' + wallet = None + bus_name = 'org.kde.kwalletd5' + object_path = '/modules/kwalletd5' @properties.ClassProperty @classmethod @@ -26,9 +31,11 @@ except dbus.DBusException as exc: raise RuntimeError(exc.get_dbus_message()) try: - bus.get_object('org.kde.kwalletd5', '/modules/kwalletd5') + bus.get_object(cls.bus_name, cls.object_path) except dbus.DBusException: - raise RuntimeError('cannot connect to org.kde.kwalletd5') + tmpl = 'cannot connect to {bus_name}' + msg = tmpl.format(bus_name=cls.bus_name) + raise RuntimeError(msg) return 4.9 def __init__(self, *arg, **kw): @@ -63,7 +70,7 @@ bus = dbus.SessionBus() wId = 0 try: - remote_obj = bus.get_object('org.kde.kwalletd5', '/modules/kwalletd5') + remote_obj = bus.get_object(self.bus_name, self.object_path) self.iface = dbus.Interface(remote_obj, 'org.kde.KWallet') self.handle = self.iface.open( self.iface.networkWallet(), wId, self.appid) @@ -104,3 +111,17 @@ if not self.iface.hasEntry(self.handle, service, username, self.appid): raise PasswordDeleteError("Password not found") self.iface.removeEntry(self.handle, service, username, self.appid) + + +class DBusKeyringKWallet4(DBusKeyring): + """ + KDE KWallet 4 via D-Bus + """ + + bus_name = 'org.kde.kwalletd' + object_path = '/modules/kwalletd' + + @properties.ClassProperty + @classmethod + def priority(cls): + return super(DBusKeyringKWallet4, cls).priority - 1 diff -Nru python-keyring-10.0.2/keyring/backends/SecretService.py python-keyring-10.1/keyring/backends/SecretService.py --- python-keyring-10.0.2/keyring/backends/SecretService.py 2016-10-20 17:23:35.000000000 +0000 +++ python-keyring-10.1/keyring/backends/SecretService.py 2016-12-04 18:41:41.000000000 +0000 @@ -33,10 +33,16 @@ "Unable to initialize SecretService: %s" % e) return 5 - def get_default_collection(self): + def get_preferred_collection(self): + """If self.preferred_collection contains a D-Bus path, the collection + at that address is returned. Otherwise, the default collection is returned. + """ bus = secretstorage.dbus_init() try: - collection = secretstorage.get_default_collection(bus) + if hasattr(self, 'preferred_collection'): + collection = secretstorage.Collection(bus, self.preferred_collection) + else: + collection = secretstorage.get_default_collection(bus) except exceptions.SecretStorageException as e: raise InitError("Failed to create the collection: %s." % e) if collection.is_locked(): @@ -48,7 +54,7 @@ def get_password(self, service, username): """Get password of the username for the service """ - collection = self.get_default_collection() + collection = self.get_preferred_collection() items = collection.search_items( {"username": username, "service": service}) for item in items: @@ -60,7 +66,7 @@ def set_password(self, service, username, password): """Set password for the username of the service """ - collection = self.get_default_collection() + collection = self.get_preferred_collection() attributes = { "application": "python-keyring", "service": service, @@ -72,7 +78,7 @@ def delete_password(self, service, username): """Delete the stored password (only the first one) """ - collection = self.get_default_collection() + collection = self.get_preferred_collection() items = collection.search_items( {"username": username, "service": service}) for item in items: diff -Nru python-keyring-10.0.2/keyring/backends/Windows.py python-keyring-10.1/keyring/backends/Windows.py --- python-keyring-10.0.2/keyring/backends/Windows.py 2016-10-20 17:23:35.000000000 +0000 +++ python-keyring-10.1/keyring/backends/Windows.py 2016-12-04 18:41:41.000000000 +0000 @@ -1,7 +1,9 @@ +from __future__ import unicode_literals + import functools from ..py27compat import unicode_str -from ..util import escape, properties +from ..util import properties from ..backend import KeyringBackend from ..errors import PasswordDeleteError, ExceptionRaisedContext @@ -60,7 +62,7 @@ @staticmethod def _compound_name(username, service): - return escape.u('%(username)s@%(service)s') % vars() + return '%(username)s@%(service)s' % vars() def get_password(self, service, username): # first attempt to get the password under the service name diff -Nru python-keyring-10.0.2/keyring/tests/backends/test_kwallet.py python-keyring-10.1/keyring/tests/backends/test_kwallet.py --- python-keyring-10.0.2/keyring/tests/backends/test_kwallet.py 2016-10-20 17:23:35.000000000 +0000 +++ python-keyring-10.1/keyring/tests/backends/test_kwallet.py 2016-12-04 18:41:41.000000000 +0000 @@ -1,11 +1,10 @@ -import string import unittest from keyring.backends import kwallet -from ..util import random_string from ..test_backend import BackendBasicTests -@unittest.skipUnless(kwallet.DBusKeyring.viable, "Need DBus") + +@unittest.skipUnless(kwallet.DBusKeyring.viable, "KWallet5 unavailable") class DBusKWalletTestCase(BackendBasicTests, unittest.TestCase): # Remove '@' from service name as this is not supported in service names @@ -66,3 +65,10 @@ ret_password, None, "Not 'None' password returned for username: '%s' on service: '%s'. '%s' != '%s'. Passwords from old folder should be deleted during migration." % (service, username, ret_password, None)) + + +@unittest.skipUnless(kwallet.DBusKeyringKWallet4.viable, + "KWallet4 unavailable") +class DBusKWallet4TestCase(DBusKWalletTestCase): + def init_keyring(self): + return kwallet.DBusKeyringKWallet4() diff -Nru python-keyring-10.0.2/keyring/tests/backends/test_SecretService.py python-keyring-10.1/keyring/tests/backends/test_SecretService.py --- python-keyring-10.0.2/keyring/tests/backends/test_SecretService.py 2016-10-20 17:23:35.000000000 +0000 +++ python-keyring-10.1/keyring/tests/backends/test_SecretService.py 2016-12-04 18:41:41.000000000 +0000 @@ -12,7 +12,9 @@ def init_keyring(self): print("Testing SecretServiceKeyring; the following " "password prompts are for this keyring") - return SecretService.Keyring() + keyring = SecretService.Keyring() + keyring.preferred_collection = '/org/freedesktop/secrets/collection/session' + return keyring class SecretServiceKeyringUnitTests(unittest.TestCase): def test_supported_no_secretstorage(self): diff -Nru python-keyring-10.0.2/keyring/tests/backends/test_Windows.py python-keyring-10.1/keyring/tests/backends/test_Windows.py --- python-keyring-10.0.2/keyring/tests/backends/test_Windows.py 2016-10-20 17:23:35.000000000 +0000 +++ python-keyring-10.1/keyring/tests/backends/test_Windows.py 2016-12-04 18:41:41.000000000 +0000 @@ -6,20 +6,9 @@ import keyring.backends.Windows from ..test_backend import BackendBasicTests -def is_winvault_supported(): - try: - __import__('win32cred') - has_pywin32 = True - except ImportError: - has_pywin32 = False - return ( - sys.platform in ['win32'] and sys.getwindowsversion().major >= 6 - and has_pywin32 - ) - -@unittest.skipUnless(is_winvault_supported(), - "Need WinVault") +@unittest.skipUnless(keyring.backends.Windows.WinVaultKeyring.viable, + "Needs Windows") class WinVaultKeyringTestCase(BackendBasicTests, unittest.TestCase): def tearDown(self): # clean up any credentials created diff -Nru python-keyring-10.0.2/keyring/tests/test_backend.py python-keyring-10.1/keyring/tests/test_backend.py --- python-keyring-10.0.2/keyring/tests/test_backend.py 2016-10-20 17:23:35.000000000 +0000 +++ python-keyring-10.1/keyring/tests/test_backend.py 2016-12-04 18:41:41.000000000 +0000 @@ -1,32 +1,34 @@ -# -*- coding: utf-8 -*- -""" -test_backend.py - -Test case for keyring basic function +# coding: utf-8 -created by Kang Zhang 2009-07-14 """ -from __future__ import with_statement +Common test functionality for backends. +""" + +from __future__ import unicode_literals import string -from keyring.util import escape +import pytest + from .util import random_string from keyring import errors # unicode only characters # Sourced from The Quick Brown Fox... Pangrams # http://www.columbia.edu/~fdc/utf8/ -UNICODE_CHARS = escape.u( - """זהכיףסתםלשמועאיךתנצחקרפדעץטובבגן""" - """ξεσκεπάζωτηνψυχοφθόραβδελυγμία""" - """Съешьжеещёэтихмягкихфранцузскихбулокдавыпейчаю""" - """Жълтатадюлябешещастливачепухъткойтоцъфназамръзнакатогьон""" +UNICODE_CHARS = ( + "זהכיףסתםלשמועאיךתנצחקרפדעץטובבגן" + "ξεσκεπάζωτηνψυχοφθόραβδελυγμία" + "Съешьжеещёэтихмягкихфранцузскихбулокдавыпейчаю" + "Жълтатадюлябешещастливачепухъткойтоцъфназамръзнакатогьон" ) # ensure no-ascii chars slip by - watch your editor! assert min(ord(char) for char in UNICODE_CHARS) > 127 +def is_ascii_printable(s): + return all(32 <= ord(c) < 127 for c in s) + class BackendBasicTests(object): """Test for the keyring's basic functions. password_set and password_get """ @@ -51,15 +53,15 @@ keyring = self.keyring # for the non-existent password - self.assertEqual(keyring.get_password(service, username), None) + assert keyring.get_password(service, username) is None # common usage self.set_password(service, username, password) - self.assertEqual(keyring.get_password(service, username), password) + assert keyring.get_password(service, username) == password # for the empty password self.set_password(service, username, "") - self.assertEqual(keyring.get_password(service, username), "") + assert keyring.get_password(service, username) == "" def test_password_set_get(self): password = random_string(20) @@ -79,13 +81,13 @@ service = random_string(20, self.DIFFICULT_CHARS) self.keyring.set_password(service, username, password) self.keyring.delete_password(service, username) - self.assertIsNone(self.keyring.get_password(service, username)) + assert self.keyring.get_password(service, username) is None def test_delete_not_present(self): username = random_string(20, self.DIFFICULT_CHARS) service = random_string(20, self.DIFFICULT_CHARS) - self.assertRaises(errors.PasswordDeleteError, - self.keyring.delete_password, service, username) + with pytest.raises(errors.PasswordDeleteError): + self.keyring.delete_password(service, username) def test_delete_one_in_group(self): username1 = random_string(20, self.DIFFICULT_CHARS) @@ -95,8 +97,10 @@ self.keyring.set_password(service, username1, password) self.set_password(service, username2, password) self.keyring.delete_password(service, username1) - self.assertEqual(self.keyring.get_password( - service, username2), password) + assert self.keyring.get_password(service, username2) == password + + def test_name_property(self): + assert is_ascii_printable(self.keyring.name) def test_unicode_chars(self): password = random_string(20, UNICODE_CHARS) @@ -122,10 +126,7 @@ keyring = self.keyring self.set_password('service1', 'user1', 'password1') self.set_password('service1', 'user2', 'password2') - self.assertEqual(keyring.get_password('service1', 'user1'), - 'password1') - self.assertEqual(keyring.get_password('service1', 'user2'), - 'password2') + assert keyring.get_password('service1', 'user1') == 'password1' + assert keyring.get_password('service1', 'user2') == 'password2' self.set_password('service2', 'user3', 'password3') - self.assertEqual(keyring.get_password('service1', 'user1'), - 'password1') + assert keyring.get_password('service1', 'user1') == 'password1' diff -Nru python-keyring-10.0.2/keyring/util/escape.py python-keyring-10.1/keyring/util/escape.py --- python-keyring-10.0.2/keyring/util/escape.py 2016-10-20 17:23:35.000000000 +0000 +++ python-keyring-10.1/keyring/util/escape.py 2016-12-04 18:41:41.000000000 +0000 @@ -19,7 +19,7 @@ return chr(c) else: def u(s): - return unicode(s, "unicode_escape") + return s.decode('utf-8') def _unichr(c): return unichr(c) diff -Nru python-keyring-10.0.2/keyring.egg-info/PKG-INFO python-keyring-10.1/keyring.egg-info/PKG-INFO --- python-keyring-10.0.2/keyring.egg-info/PKG-INFO 2016-10-20 17:24:20.000000000 +0000 +++ python-keyring-10.1/keyring.egg-info/PKG-INFO 2016-12-04 18:42:26.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: keyring -Version: 10.0.2 +Version: 10.1 Summary: Store and access your passwords safely. Home-page: https://github.com/jaraco/keyring Author: Jason R. Coombs @@ -16,6 +16,7 @@ .. image:: https://img.shields.io/travis/jaraco/keyring/master.svg :target: http://travis-ci.org/jaraco/keyring + ======================================= Installing and Using Python Keyring Lib ======================================= diff -Nru python-keyring-10.0.2/keyring.egg-info/SOURCES.txt python-keyring-10.1/keyring.egg-info/SOURCES.txt --- python-keyring-10.0.2/keyring.egg-info/SOURCES.txt 2016-10-20 17:24:20.000000000 +0000 +++ python-keyring-10.1/keyring.egg-info/SOURCES.txt 2016-12-04 18:42:26.000000000 +0000 @@ -3,6 +3,7 @@ .travis.yml CHANGES.rst README.rst +appveyor.yml conftest.py hook-keyring.backend.py pytest.ini @@ -12,6 +13,7 @@ docs/conf.py docs/history.rst docs/index.rst +docs/requirements.txt keyring/__init__.py keyring/__main__.py keyring/backend.py diff -Nru python-keyring-10.0.2/PKG-INFO python-keyring-10.1/PKG-INFO --- python-keyring-10.0.2/PKG-INFO 2016-10-20 17:24:20.000000000 +0000 +++ python-keyring-10.1/PKG-INFO 2016-12-04 18:42:26.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: keyring -Version: 10.0.2 +Version: 10.1 Summary: Store and access your passwords safely. Home-page: https://github.com/jaraco/keyring Author: Jason R. Coombs @@ -16,6 +16,7 @@ .. image:: https://img.shields.io/travis/jaraco/keyring/master.svg :target: http://travis-ci.org/jaraco/keyring + ======================================= Installing and Using Python Keyring Lib ======================================= diff -Nru python-keyring-10.0.2/README.rst python-keyring-10.1/README.rst --- python-keyring-10.0.2/README.rst 2016-10-20 17:23:35.000000000 +0000 +++ python-keyring-10.1/README.rst 2016-12-04 18:41:41.000000000 +0000 @@ -8,6 +8,7 @@ .. image:: https://img.shields.io/travis/jaraco/keyring/master.svg :target: http://travis-ci.org/jaraco/keyring + ======================================= Installing and Using Python Keyring Lib ======================================= diff -Nru python-keyring-10.0.2/setup.py python-keyring-10.1/setup.py --- python-keyring-10.0.2/setup.py 2016-10-20 17:23:35.000000000 +0000 +++ python-keyring-10.1/setup.py 2016-12-04 18:41:41.000000000 +0000 @@ -38,7 +38,7 @@ ], }, setup_requires=[ - 'setuptools_scm>=1.9,!=1.13.1,!=1.14.0', + 'setuptools_scm>=1.15.0', ] + wheel, classifiers=[ "Development Status :: 5 - Production/Stable", diff -Nru python-keyring-10.0.2/.travis.yml python-keyring-10.1/.travis.yml --- python-keyring-10.0.2/.travis.yml 2016-10-20 17:23:35.000000000 +0000 +++ python-keyring-10.1/.travis.yml 2016-12-04 18:41:41.000000000 +0000 @@ -22,8 +22,6 @@ branches: except: - skeleton -before_deploy: -- pip install https://dl.dropboxusercontent.com/u/54081/cheeseshop/setuptools_scm-1.14.1b1.tar.gz deploy: provider: pypi server: https://upload.pypi.org/legacy/