@@ -41,19 +41,20 @@ class KeyRingCli:
41
41
PATH.
42
42
"""
43
43
44
- @classmethod
45
- def get_password (cls , service_name : str , username : str ) -> Optional [str ]:
46
- cmd = ["keyring" , "get" , service_name , username ]
44
+ def __init__ (self , keyring : str ) -> None :
45
+ self .keyring = keyring
46
+
47
+ def get_password (self , service_name : str , username : str ) -> Optional [str ]:
48
+ cmd = [self .keyring , "get" , service_name , username ]
47
49
res = subprocess .run (
48
50
cmd , capture_output = True , env = dict (PYTHONIOENCODING = "utf-8" )
49
51
)
50
52
if res .returncode :
51
53
return None
52
54
return res .stdout .decode ("utf-8" ).strip ("\n " )
53
55
54
- @classmethod
55
- def set_password (cls , service_name : str , username : str , password : str ) -> None :
56
- cmd = ["keyring" , "set" , service_name , username ]
56
+ def set_password (self , service_name : str , username : str , password : str ) -> None :
57
+ cmd = [self .keyring , "set" , service_name , username ]
57
58
input_ = password .encode ("utf-8" ) + b"\n "
58
59
res = subprocess .run (cmd , input = input_ , env = dict (PYTHONIOENCODING = "utf-8" ))
59
60
res .check_returncode ()
@@ -64,8 +65,9 @@ def set_password(cls, service_name: str, username: str, password: str) -> None:
64
65
import keyring
65
66
except ImportError :
66
67
keyring = None # type: ignore[assignment]
67
- if shutil .which ("keyring" ) is not None :
68
- keyring = KeyRingCli # type: ignore[assignment]
68
+ keyring_path = shutil .which ("keyring" )
69
+ if keyring_path is not None :
70
+ keyring = KeyRingCli (keyring_path ) # type: ignore[assignment]
69
71
except Exception as exc :
70
72
logger .warning (
71
73
"Keyring is skipped due to an exception: %s" ,
0 commit comments