| Index: third_party/google-endpoints/setuptools/command/upload.py
|
| diff --git a/third_party/google-endpoints/setuptools/command/upload.py b/third_party/google-endpoints/setuptools/command/upload.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..484baa5a538a3b4828ddff54bb4a2f362999675c
|
| --- /dev/null
|
| +++ b/third_party/google-endpoints/setuptools/command/upload.py
|
| @@ -0,0 +1,38 @@
|
| +import getpass
|
| +from distutils.command import upload as orig
|
| +
|
| +
|
| +class upload(orig.upload):
|
| + """
|
| + Override default upload behavior to obtain password
|
| + in a variety of different ways.
|
| + """
|
| +
|
| + def finalize_options(self):
|
| + orig.upload.finalize_options(self)
|
| + # Attempt to obtain password. Short circuit evaluation at the first
|
| + # sign of success.
|
| + self.password = (
|
| + self.password or
|
| + self._load_password_from_keyring() or
|
| + self._prompt_for_password()
|
| + )
|
| +
|
| + def _load_password_from_keyring(self):
|
| + """
|
| + Attempt to load password from keyring. Suppress Exceptions.
|
| + """
|
| + try:
|
| + keyring = __import__('keyring')
|
| + return keyring.get_password(self.repository, self.username)
|
| + except Exception:
|
| + pass
|
| +
|
| + def _prompt_for_password(self):
|
| + """
|
| + Prompt for a password on the tty. Suppress Exceptions.
|
| + """
|
| + try:
|
| + return getpass.getpass()
|
| + except (Exception, KeyboardInterrupt):
|
| + pass
|
|
|