diff --git a/CHANGES.rst b/CHANGES.rst index 249cc054..e5f092e3 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,9 @@ +v23.4.0 +------- + +* #549: EnvironCredential now allows for equality + comparison. + v23.3.0 ------- diff --git a/keyring/credentials.py b/keyring/credentials.py index 8c96fa9a..933b9d4d 100644 --- a/keyring/credentials.py +++ b/keyring/credentials.py @@ -31,14 +31,29 @@ def password(self): class EnvironCredential(Credential): - """Source credentials from environment variables. + """ + Source credentials from environment variables. + Actual sourcing is deferred until requested. + + Supports comparison by equality. + + >>> e1 = EnvironCredential('a', 'b') + >>> e2 = EnvironCredential('a', 'b') + >>> e3 = EnvironCredential('a', 'c') + >>> e1 == e2 + True + >>> e2 == e3 + False """ def __init__(self, user_env_var, pwd_env_var): self.user_env_var = user_env_var self.pwd_env_var = pwd_env_var + def __eq__(self, other: object) -> bool: + return vars(self) == vars(other) + def _get_env(self, env_var): """Helper to read an environment variable""" value = os.environ.get(env_var)