diff --git a/CHANGES.rst b/CHANGES.rst index 768200db..7dbab93a 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,6 +4,10 @@ * #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 ------ diff --git a/keyring/core.py b/keyring/core.py index cad95a15..fd5ba84d 100644 --- a/keyring/core.py +++ b/keyring/core.py @@ -84,7 +84,8 @@ def init_backend(limit=None): 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) ) @@ -128,6 +129,14 @@ def load_keyring(keyring_name): 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."""