1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
| # SPDX-License-Identifier: MIT
|
| """
| Argon2 for Python
| """
|
| from . import exceptions, low_level, profiles
| from ._legacy import hash_password, hash_password_raw, verify_password
| from ._password_hasher import (
| DEFAULT_HASH_LENGTH,
| DEFAULT_MEMORY_COST,
| DEFAULT_PARALLELISM,
| DEFAULT_RANDOM_SALT_LENGTH,
| DEFAULT_TIME_COST,
| PasswordHasher,
| )
| from ._utils import Parameters, extract_parameters
| from .low_level import Type
|
|
| __title__ = "argon2-cffi"
|
| __author__ = "Hynek Schlawack"
| __copyright__ = "Copyright (c) 2015 " + __author__
| __license__ = "MIT"
|
|
| __all__ = [
| "DEFAULT_HASH_LENGTH",
| "DEFAULT_MEMORY_COST",
| "DEFAULT_PARALLELISM",
| "DEFAULT_RANDOM_SALT_LENGTH",
| "DEFAULT_TIME_COST",
| "Parameters",
| "PasswordHasher",
| "Type",
| "exceptions",
| "extract_parameters",
| "hash_password",
| "hash_password_raw",
| "low_level",
| "profiles",
| "verify_password",
| ]
|
|
| def __getattr__(name: str) -> str:
| dunder_to_metadata = {
| "__version__": "version",
| "__description__": "summary",
| "__uri__": "",
| "__url__": "",
| "__email__": "",
| }
| if name not in dunder_to_metadata:
| msg = f"module {__name__} has no attribute {name}"
| raise AttributeError(msg)
|
| import warnings
|
| from importlib.metadata import metadata
|
| warnings.warn(
| f"Accessing argon2.{name} is deprecated and will be "
| "removed in a future release. Use importlib.metadata directly "
| "to query for argon2-cffi's packaging metadata.",
| DeprecationWarning,
| stacklevel=2,
| )
|
| meta = metadata("argon2-cffi")
|
| if name in ("__uri__", "__url__"):
| return meta["Project-URL"].split(" ", 1)[-1]
|
| if name == "__email__":
| return meta["Author-email"].split("<", 1)[1].rstrip(">")
|
| return meta[dunder_to_metadata[name]]
|
|