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
« 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
10def _default_name():
11 """
12 Returns a default username.
14 ::
16 os.environ.get('USERNAME', os.environ.get('NAME', 'unknown'))
17 """
18 return os.environ.get('USERNAME', os.environ.get('NAME', 'unknown'))
21def get_password(key, username=None):
22 """
23 Retrieves a password assocatied to *key*.
24 Relies on module :epkg:`keyring`.
26 @param key key
27 @param username username or ``environ['USERNAME']`` if None
28 @return password
30 .. exref::
31 :title: Store and retrieve a password
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:
37 .. runpython::
38 :showcode:
40 from pyquickhelper.loghelper import set_password
41 set_password("system", "username", "password")
43 And to retrieve it:
45 .. runpython::
46 :showcode:
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
57def set_password(pwd, key, username=None):
58 """
59 Stores a password assocatied to *key*.
60 Relies on module :epkg:`keyring`.
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