"""`Callable` provider example."""

import passlib.hash

from dependency_injector import containers, providers


class Container(containers.DeclarativeContainer):

    password_hasher = providers.Callable(
        passlib.hash.sha256_crypt.hash,
        salt_size=16,
        rounds=10000,
    )

    password_verifier = providers.Callable(passlib.hash.sha256_crypt.verify)


if __name__ == "__main__":
    container = Container()

    hashed_password = container.password_hasher("super secret")
    assert container.password_verifier("super secret", hashed_password)