|
|
|
|
|
""" |
|
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 sys |
|
import warnings |
|
|
|
if sys.version_info < (3, 8): |
|
from importlib_metadata import metadata |
|
else: |
|
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 structlog'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]] |
|
|
|
|
|
|
|
__locals = locals() |
|
for __name in __all__: |
|
if not __name.startswith(("__", "DEFAULT_")) and not __name.islower(): |
|
__locals[__name].__module__ = "argon2" |
|
del __locals |
|
del __name |
|
|