Coverage for src/ensae_projects/hackathon/crypt_helper.py: 100%

13 statements  

« prev     ^ index     » next       coverage.py v7.1.0, created at 2023-07-20 04:37 +0200

1# -*- coding: utf-8 -*- 

2""" 

3@file 

4@brief Encrypting, decrypting. 

5""" 

6import os 

7import pyquickhelper.loghelper as pl 

8 

9 

10def _default_name(): 

11 """ 

12 Returns a default username. 

13 

14 :: 

15 

16 os.environ.get('USERNAME', os.environ.get('NAME', 'unknown')) 

17 """ 

18 return os.environ.get('USERNAME', os.environ.get('NAME', 'unknown')) 

19 

20 

21def get_password(key, username=None): 

22 """ 

23 Retrieves a password assocatied to *key*. 

24 Relies on module :epkg:`keyring`. 

25 

26 @param key key 

27 @param username username or ``environ['USERNAME']`` if None 

28 @return password 

29 

30 .. exref:: 

31 :title: Store and retrieve a password 

32 

33 Module :epkg:`keyring` can be used to store and retrieve a password. 

34 It is an easy way to avoid letting clear password in the code. 

35 To store a password: 

36 

37 .. runpython:: 

38 :showcode: 

39 

40 from pyquickhelper.loghelper import set_password 

41 set_password("system", "username", "password") 

42 

43 And to retrieve it: 

44 

45 .. runpython:: 

46 :showcode: 

47 

48 from pyquickhelper.loghelper import get_password 

49 pwd = get_password("system", "username") 

50 print(pwd) 

51 """ 

52 if username is None: 

53 username = _default_name() 

54 return pl.get_password(key, username, ask=False) # pylint: disable=E1123 

55 

56 

57def set_password(pwd, key, username=None): 

58 """ 

59 Stores a password assocatied to *key*. 

60 Relies on module :epkg:`keyring`. 

61 

62 @param pwd password 

63 @param key key 

64 @param username username or ``environ['USERNAME']`` if None 

65 @return password 

66 """ 

67 if username is None: 

68 username = _default_name() 

69 pl.set_password(key, username, pwd, ask=False) # pylint: disable=E1123