/usr/lib/python3/dist-packages/keyring/backends
NameSizeModeActions
__pycache__/-0755rm
chainer.py21150644editdlrm
fail.py8200644editdlrm
kwallet.py48220644editdlrm
null.py3440644editdlrm
OS_X.py21540644editdlrm
SecretService.py34460644editdlrm
Windows.py56160644editdlrm
_OS_X_API.py96390644editdlrm
__init__.py00644editdlrm
Edit: /usr/lib/python3/dist-packages/keyring/backends/chainer.py (2115B)
""" Keyring Chainer - iterates over other viable backends to discover passwords in each. """ from __future__ import absolute_import from .. import backend from ..util import properties class ChainerBackend(backend.KeyringBackend): """ >>> ChainerBackend() """ # override viability as 'priority' cannot be determined # until other backends have been constructed viable = True @properties.ClassProperty @classmethod def priority(cls): """ If there are backends to chain, high priority Otherwise very low priority since our operation when empty is the same as null. """ return 10 if len(cls.backends) > 1 else -10 @properties.ClassProperty @classmethod def backends(cls): """ Discover all keyrings for chaining. """ allowed = ( keyring for keyring in filter(backend._limit, backend.get_all_keyring()) if not isinstance(keyring, ChainerBackend) and keyring.priority > 0 ) return sorted(allowed, key=backend.by_priority, reverse=True) def get_password(self, service, username): for keyring in self.backends: password = keyring.get_password(service, username) if password is not None: return password def set_password(self, service, username, password): for keyring in self.backends: try: return keyring.set_password(service, username, password) except NotImplementedError: pass def delete_password(self, service, username): for keyring in self.backends: try: return keyring.delete_password(service, username) except NotImplementedError: pass def get_credential(self, service, username): for keyring in self.backends: credential = keyring.get_credential(service, username) if credential is not None: return credential