Hello community, here is the log from the commit of package python-keyring for openSUSE:Factory checked in at 2018-10-18 15:29:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-keyring (Old) and /work/SRC/openSUSE:Factory/.python-keyring.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-keyring" Thu Oct 18 15:29:03 2018 rev:32 rq:641907 version:15.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-keyring/python-keyring.changes 2018-09-16 18:29:52.971454546 +0200 +++ /work/SRC/openSUSE:Factory/.python-keyring.new/python-keyring.changes 2018-10-18 15:29:04.870803426 +0200 @@ -1,0 +2,23 @@ +Fri Oct 12 03:19:07 UTC 2018 - Arun Persaud <[email protected]> + +- specfile: + * removed devel from noarch + +- update to version 15.1.0: + * #340: Add the Null keyring, disabled by default. + * #340: Added --disable option to command-line interface. + * #340: Now honor a PYTHON_KEYRING_BACKEND environment variable to + select a backend. Environments may set to + keyring.backends.null.Keyring to disable keyring. + +- changes from version 15.0.0: + * Removed deprecated keyring.util.escape module. + * Fixed warning about using deprecated Abstract Base Classes from + collections module. + +- changes from version 14.0.0: + * Removed getpassbackend module and alias in + keyring.get_pass_get_password. Instead, just use: + * keyring.get_password(getpass.getuser(), 'Python') + +------------------------------------------------------------------- Old: ---- keyring-13.2.1.tar.gz New: ---- keyring-15.1.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-keyring.spec ++++++ --- /var/tmp/diff_new_pack.IceqKe/_old 2018-10-18 15:29:05.754802388 +0200 +++ /var/tmp/diff_new_pack.IceqKe/_new 2018-10-18 15:29:05.758802383 +0200 @@ -12,21 +12,20 @@ # 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-keyring -Version: 13.2.1 +Version: 15.1.0 Release: 0 Summary: Store and access your passwords safely License: Python-2.0 AND MIT Group: Development/Languages/Python -Url: https://github.com/jaraco/keyring +URL: https://github.com/jaraco/keyring Source: https://files.pythonhosted.org/packages/source/k/keyring/keyring-%{version}.tar.gz BuildRequires: %{python_module SecretStorage} -BuildRequires: %{python_module devel} BuildRequires: %{python_module entrypoints} BuildRequires: %{python_module mock} BuildRequires: %{python_module pytest >= 3.5} ++++++ keyring-13.2.1.tar.gz -> keyring-15.1.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/CHANGES.rst new/keyring-15.1.0/CHANGES.rst --- old/keyring-13.2.1/CHANGES.rst 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/CHANGES.rst 2018-09-14 17:48:03.000000000 +0200 @@ -1,3 +1,30 @@ +15.1.0 +------ + +* #340: Add the Null keyring, disabled by default. +* #340: Added ``--disable`` option to command-line + interface. +* #340: Now honor a ``PYTHON_KEYRING_BACKEND`` + environment variable to select a backend. Environments + may set to ``keyring.backends.null.Keyring`` to disable + keyring. + +15.0.0 +------ + +Removed deprecated ``keyring.util.escape`` module. + +Fixed warning about using deprecated Abstract Base Classes +from collections module. + +14.0.0 +------ + +Removed ``getpassbackend`` module and alias in +``keyring.get_pass_get_password``. Instead, just use:: + + keyring.get_password(getpass.getuser(), 'Python') + 13.2.1 ------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/PKG-INFO new/keyring-15.1.0/PKG-INFO --- old/keyring-13.2.1/PKG-INFO 2018-07-06 03:22:06.000000000 +0200 +++ new/keyring-15.1.0/PKG-INFO 2018-09-14 17:48:29.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: keyring -Version: 13.2.1 +Version: 15.1.0 Summary: Store and access your passwords safely. Home-page: https://github.com/jaraco/keyring Author: Kang Zhang @@ -385,5 +385,5 @@ Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Requires-Python: >=2.7 -Provides-Extra: testing Provides-Extra: docs +Provides-Extra: testing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/__init__.py new/keyring-15.1.0/keyring/__init__.py --- old/keyring-13.2.1/keyring/__init__.py 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/keyring/__init__.py 2018-09-14 17:48:03.000000000 +0200 @@ -2,9 +2,8 @@ from .core import (set_keyring, get_keyring, set_password, get_password, delete_password) -from .getpassbackend import get_password as get_pass_get_password __all__ = ( 'set_keyring', 'get_keyring', 'set_password', 'get_password', - 'delete_password', 'get_pass_get_password', + 'delete_password', ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/backend.py new/keyring-15.1.0/keyring/backend.py --- old/keyring-13.2.1/keyring/backend.py 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/keyring/backend.py 2018-09-14 17:48:03.000000000 +0200 @@ -6,6 +6,7 @@ import abc import logging +import operator import entrypoints @@ -13,6 +14,7 @@ from .util import properties from .py27compat import add_metaclass, filter +__metaclass__ = type log = logging.getLogger(__name__) @@ -32,7 +34,7 @@ @add_metaclass(KeyringBackendMeta) -class KeyringBackend(object): +class KeyringBackend: """The abstract base class of the keyring, every backend must implement this interface. """ @@ -61,6 +63,13 @@ cls.priority return not bool(exc) + @classmethod + def get_viable_backends(cls): + """ + Return all subclasses deemed viable. + """ + return filter(operator.attrgetter('viable'), cls._classes) + @properties.ClassProperty @classmethod def name(cls): @@ -100,7 +109,7 @@ raise errors.PasswordDeleteError("reason") -class Crypter(object): +class Crypter: """Base class providing encryption and decryption """ @@ -165,15 +174,6 @@ parameters. """ _load_plugins() - - def is_class_viable(keyring_cls): - try: - keyring_cls.priority - except RuntimeError: - return False - return True - - all_classes = KeyringBackend._classes - viable_classes = filter(is_class_viable, all_classes) - return list(util.suppress_exceptions(viable_classes, - exceptions=TypeError)) + viable_classes = KeyringBackend.get_viable_backends() + rings = util.suppress_exceptions(viable_classes, exceptions=TypeError) + return list(rings) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/backends/Windows.py new/keyring-15.1.0/keyring/backends/Windows.py --- old/keyring-13.2.1/keyring/backends/Windows.py 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/keyring/backends/Windows.py 2018-09-14 17:48:03.000000000 +0200 @@ -21,6 +21,8 @@ except ImportError: pass +__metaclass__ = type + def has_pywin32(): """ @@ -126,7 +128,7 @@ ) -class OldPywinError(object): +class OldPywinError: """ A compatibility wrapper for old PyWin32 errors, such as reported in https://bitbucket.org/kang/python-keyring-lib/issue/140/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/backends/_OS_X_API.py new/keyring-15.1.0/keyring/backends/_OS_X_API.py --- old/keyring-13.2.1/keyring/backends/_OS_X_API.py 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/keyring/backends/_OS_X_API.py 2018-09-14 17:48:03.000000000 +0200 @@ -5,6 +5,8 @@ from keyring.py27compat import string_types, add_metaclass +__metaclass__ = type + sec_keychain_ref = sec_keychain_item_ref = c_void_p OS_status = c_int32 @@ -156,14 +158,14 @@ @add_metaclass(PackedAttributes) -class SecProtocolType(object): +class SecProtocolType: kSecProtocolTypeHTTP = 'http' kSecProtocolTypeHTTPS = 'htps' kSecProtocolTypeFTP = 'ftp ' @add_metaclass(PackedAttributes) -class SecAuthenticationType(object): +class SecAuthenticationType: """ >>> SecAuthenticationType.kSecAuthenticationTypeDefault 1684434036 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/backends/null.py new/keyring-15.1.0/keyring/backends/null.py --- old/keyring-13.2.1/keyring/backends/null.py 1970-01-01 01:00:00.000000000 +0100 +++ new/keyring-15.1.0/keyring/backends/null.py 2018-09-14 17:48:03.000000000 +0200 @@ -0,0 +1,17 @@ +from ..backend import KeyringBackend + + +class Keyring(KeyringBackend): + """ + Keyring that return None on every operation. + + >>> kr = Keyring() + >>> kr.get_password('svc', 'user') + """ + + priority = -1 + + def get_password(self, service, username, password=None): + pass + + set_password = delete_password = get_password diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/cli.py new/keyring-15.1.0/keyring/cli.py --- old/keyring-13.2.1/keyring/cli.py 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/keyring/cli.py 2018-09-14 17:48:03.000000000 +0200 @@ -11,11 +11,14 @@ from . import backend from . import set_keyring, get_password, set_password, delete_password +__metaclass__ = type -class CommandLineTool(object): + +class CommandLineTool: def __init__(self): self.parser = OptionParser( - usage="%prog [get|set|del] SERVICE USERNAME") + usage="%prog [get|set|del] SERVICE USERNAME", + ) self.parser.add_option("-p", "--keyring-path", dest="keyring_path", default=None, help="Path to the keyring backend") @@ -25,6 +28,9 @@ self.parser.add_option("--list-backends", action="store_true", help="List keyring backends and exit") + self.parser.add_option("--disable", + action="store_true", + help="Disable keyring and exit") def run(self, argv): opts, args = self.parser.parse_args(argv) @@ -34,6 +40,10 @@ print(k) return + if opts.disable: + core.disable() + return + try: kind, service, username = args except ValueError: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/core.py new/keyring-15.1.0/keyring/core.py --- old/keyring-13.2.1/keyring/core.py 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/keyring/core.py 2018-09-14 17:48:03.000000000 +0200 @@ -35,6 +35,23 @@ return _keyring_backend +def disable(): + """ + Configure the null keyring as the default. + """ + root = platform.config_root() + try: + os.makedirs(root) + except OSError: + pass + filename = os.path.join(root, 'keyringrc.cfg') + if os.path.exists(filename): + msg = "Refusing to overwrite {filename}".format(**locals()) + raise RuntimeError(msg) + with open(filename, 'w') as file: + file.write('[backend]\ndefault-keyring=keyring.backends.null.Keyring') + + def get_password(service_name, username): """Get password from the specified service. """ @@ -67,7 +84,8 @@ keyrings = filter(limit, backend.get_all_keyring()) set_keyring( - load_config() + load_env() + or load_config() or max(keyrings, default=fail.Keyring, key=by_priority) ) @@ -111,6 +129,14 @@ return class_() +def load_env(): + """Load a keyring configured in the environment variable.""" + try: + return load_keyring(os.environ['PYTHON_KEYRING_BACKEND']) + except KeyError: + pass + + def load_config(): """Load a keyring using the config file in the config root.""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/credentials.py new/keyring-15.1.0/keyring/credentials.py --- old/keyring-13.2.1/keyring/credentials.py 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/keyring/credentials.py 2018-09-14 17:48:03.000000000 +0200 @@ -3,9 +3,11 @@ from .py27compat import add_metaclass +__metaclass__ = type + @add_metaclass(abc.ABCMeta) -class Credential(object): +class Credential: """Abstract class to manage credentials """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/errors.py new/keyring-15.1.0/keyring/errors.py --- old/keyring-13.2.1/keyring/errors.py 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/keyring/errors.py 2018-09-14 17:48:03.000000000 +0200 @@ -1,6 +1,9 @@ import sys +__metaclass__ = type + + class KeyringError(Exception): """Base class for exceptions in keyring """ @@ -26,7 +29,7 @@ """ -class ExceptionRaisedContext(object): +class ExceptionRaisedContext: """ An exception-trapping context that indicates whether an exception was raised. @@ -46,7 +49,7 @@ self.exc_info.type, self.ExpectedException) -class ExceptionInfo(object): +class ExceptionInfo: def __init__(self, *info): if not info: info = sys.exc_info() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/getpassbackend.py new/keyring-15.1.0/keyring/getpassbackend.py --- old/keyring-13.2.1/keyring/getpassbackend.py 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/keyring/getpassbackend.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,12 +0,0 @@ -"""Specific support for getpass.""" -import getpass - -from . import core - - -def get_password(prompt='Password: ', stream=None, - service_name='Python', - username=None): - if username is None: - username = getpass.getuser() - return core.get_password(service_name, username) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/http.py new/keyring-15.1.0/keyring/http.py --- old/keyring-13.2.1/keyring/http.py 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/keyring/http.py 2018-09-14 17:48:03.000000000 +0200 @@ -16,8 +16,10 @@ from . import get_password, delete_password, set_password +__metaclass__ = type -class PasswordMgr(object): + +class PasswordMgr: def get_username(self, realm, authuri): return getpass.getuser() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/py32compat.py new/keyring-15.1.0/keyring/py32compat.py --- old/keyring-13.2.1/keyring/py32compat.py 1970-01-01 01:00:00.000000000 +0100 +++ new/keyring-15.1.0/keyring/py32compat.py 2018-09-14 17:48:03.000000000 +0200 @@ -0,0 +1,7 @@ +try: + from collections import abc +except ImportError: + import collections as abc + + +__all__ = ['abc'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/tests/test_backend.py new/keyring-15.1.0/keyring/tests/test_backend.py --- old/keyring-13.2.1/keyring/tests/test_backend.py 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/keyring/tests/test_backend.py 2018-09-14 17:48:03.000000000 +0200 @@ -13,6 +13,8 @@ from .util import random_string from keyring import errors +__metaclass__ = type + # unicode only characters # Sourced from The Quick Brown Fox... Pangrams # http://www.columbia.edu/~fdc/utf8/ @@ -31,7 +33,7 @@ return all(32 <= ord(c) < 127 for c in s) -class BackendBasicTests(object): +class BackendBasicTests: """Test for the keyring's basic functions. password_set and password_get """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/tests/util.py new/keyring-15.1.0/keyring/tests/util.py --- old/keyring-13.2.1/keyring/tests/util.py 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/keyring/tests/util.py 2018-09-14 17:48:03.000000000 +0200 @@ -4,8 +4,10 @@ import random import string +__metaclass__ = type -class ImportKiller(object): + +class ImportKiller: "Context manager to make an import of a given name or names fail." def __init__(self, *names): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/util/escape.py new/keyring-15.1.0/keyring/util/escape.py --- old/keyring-13.2.1/keyring/util/escape.py 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/keyring/util/escape.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,66 +0,0 @@ -""" -escape/unescape routines available for backends which need -alphanumeric usernames, services, or other values -""" - -import re -import string -import sys -import warnings - -warnings.warn( - "escape is deprecated and will be removed", - DeprecationWarning, -) - -# True if we are running on Python 3. -# taken from six.py -PY3 = sys.version_info[0] == 3 - -# allow use of unicode literals -if PY3: - def u(s): - return s -else: - def u(s): - return s.decode('utf-8') - -_unichr = chr if PY3 else unichr # noqa: F821 - -LEGAL_CHARS = ( - getattr(string, 'letters', None) # Python 2 - or getattr(string, 'ascii_letters') # Python 3 -) + string.digits - -ESCAPE_FMT = "_%02X" - - -def _escape_char(c): - "Single char escape. Return the char, escaped if not already legal" - if isinstance(c, int): - c = _unichr(c) - return c if c in LEGAL_CHARS else ESCAPE_FMT % ord(c) - - -def escape(value): - """ - Escapes given string so the result consists of alphanumeric chars and - underscore only. - """ - return "".join(_escape_char(c) for c in value.encode('utf-8')) - - -def _unescape_code(regex_match): - ordinal = int(regex_match.group('code'), 16) - return bytes([ordinal]) if PY3 else chr(ordinal) - - -def unescape(value): - """ - Inverse of escape. - """ - pattern = ESCAPE_FMT.replace('%02X', '(?P<code>[0-9A-Fa-f]{2})') - # the pattern must be bytes to operate on bytes - pattern_bytes = pattern.encode('ascii') - re_esc = re.compile(pattern_bytes) - return re_esc.sub(_unescape_code, value.encode('ascii')).decode('utf-8') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring/util/properties.py new/keyring-15.1.0/keyring/util/properties.py --- old/keyring-13.2.1/keyring/util/properties.py 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/keyring/util/properties.py 2018-09-14 17:48:03.000000000 +0200 @@ -1,4 +1,6 @@ -from collections import Callable +from ..py32compat import abc + +__metaclass__ = type class ClassProperty(property): @@ -26,14 +28,14 @@ # borrowed from jaraco.util.dictlib -class NonDataProperty(object): +class NonDataProperty: """Much like the property builtin, but only implements __get__, making it a non-data property, and can be subsequently reset. See http://users.rcn.com/python/download/Descriptor.htm for more information. - >>> class X(object): + >>> class X: ... @NonDataProperty ... def foo(self): ... return 3 @@ -47,7 +49,7 @@ def __init__(self, fget): assert fget is not None, "fget cannot be none" - assert isinstance(fget, Callable), "fget must be callable" + assert isinstance(fget, abc.Callable), "fget must be callable" self.fget = fget def __get__(self, obj, objtype=None): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring.egg-info/PKG-INFO new/keyring-15.1.0/keyring.egg-info/PKG-INFO --- old/keyring-13.2.1/keyring.egg-info/PKG-INFO 2018-07-06 03:22:05.000000000 +0200 +++ new/keyring-15.1.0/keyring.egg-info/PKG-INFO 2018-09-14 17:48:29.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: keyring -Version: 13.2.1 +Version: 15.1.0 Summary: Store and access your passwords safely. Home-page: https://github.com/jaraco/keyring Author: Kang Zhang @@ -385,5 +385,5 @@ Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Requires-Python: >=2.7 -Provides-Extra: testing Provides-Extra: docs +Provides-Extra: testing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring.egg-info/SOURCES.txt new/keyring-15.1.0/keyring.egg-info/SOURCES.txt --- old/keyring-13.2.1/keyring.egg-info/SOURCES.txt 2018-07-06 03:22:06.000000000 +0200 +++ new/keyring-15.1.0/keyring.egg-info/SOURCES.txt 2018-09-14 17:48:29.000000000 +0200 @@ -25,9 +25,9 @@ keyring/credentials.py keyring/devpi_client.py keyring/errors.py -keyring/getpassbackend.py keyring/http.py keyring/py27compat.py +keyring/py32compat.py keyring/py33compat.py keyring.egg-info/PKG-INFO keyring.egg-info/SOURCES.txt @@ -43,6 +43,7 @@ keyring/backends/__init__.py keyring/backends/fail.py keyring/backends/kwallet.py +keyring/backends/null.py keyring/tests/__init__.py keyring/tests/test_backend.py keyring/tests/util.py @@ -52,7 +53,6 @@ keyring/tests/backends/test_Windows.py keyring/tests/backends/test_kwallet.py keyring/util/__init__.py -keyring/util/escape.py keyring/util/platform_.py keyring/util/properties.py tests/test_packaging.py \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/keyring.egg-info/entry_points.txt new/keyring-15.1.0/keyring.egg-info/entry_points.txt --- old/keyring-13.2.1/keyring.egg-info/entry_points.txt 2018-07-06 03:22:05.000000000 +0200 +++ new/keyring-15.1.0/keyring.egg-info/entry_points.txt 2018-09-14 17:48:29.000000000 +0200 @@ -5,8 +5,8 @@ keyring = keyring.devpi_client [keyring.backends] +KWallet = keyring.backends.kwallet SecretService = keyring.backends.SecretService -kwallet = keyring.backends.kwallet +Windows = keyring.backends.Windows macOS = keyring.backends.OS_X -windows = keyring.backends.Windows diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/keyring-13.2.1/setup.py new/keyring-15.1.0/setup.py --- old/keyring-13.2.1/setup.py 2018-07-06 03:21:38.000000000 +0200 +++ new/keyring-15.1.0/setup.py 2018-09-14 17:48:03.000000000 +0200 @@ -83,10 +83,10 @@ 'keyring = keyring.devpi_client', ], 'keyring.backends': [ - 'windows = keyring.backends.Windows', + 'Windows = keyring.backends.Windows', 'macOS = keyring.backends.OS_X', 'SecretService = keyring.backends.SecretService', - 'kwallet = keyring.backends.kwallet', + 'KWallet = keyring.backends.kwallet', ], }, )
