Don't ask for same password twice

This commit is contained in:
Markus Unterwaditzer 2015-08-16 19:45:39 +02:00
parent 6e1846ea9d
commit 1aa6812bad

View file

@ -54,21 +54,28 @@ def get_password(username, resource, _lock=threading.Lock()):
def _password_from_cache(username, host):
'''internal cache'''
return password_cache.get((username, host), None)
rv = password_cache.get((username, host), None)
if isinstance(rv, BaseException):
raise rv
return rv
with _lock:
host = urlparse.urlsplit(resource).hostname
for func in (_password_from_cache, _password_from_command,
_password_from_netrc, _password_from_keyring,
_password_from_prompt):
password = func(username, host)
if password is not None:
logger.debug('Got password for {} from {}'
.format(username, func.__doc__))
break
password_cache[(username, host)] = password
return password
try:
host = urlparse.urlsplit(resource).hostname
for func in (_password_from_cache, _password_from_command,
_password_from_netrc, _password_from_keyring,
_password_from_prompt):
password = func(username, host)
if password is not None:
logger.debug('Got password for {} from {}'
.format(username, func.__doc__))
break
except (click.Abort, KeyboardInterrupt) as e:
password_cache[(username, host)] = e
raise
else:
password_cache[(username, host)] = password
return password
def _password_from_prompt(username, host):