NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2151 most downloaded on PyPI
Modern password hashing for Python
Last release 1 months ago
12 Aug 2026
Ships fairly regularly
a new release about every 8 months
Nearly every release is documented
notes for 5 of 5 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
5 releases · first in 2024
Remove top-pin of dependencies. Thanks @hynek 🎉
Bump version 0.3.0 → 0.3.1
PasswordHash.recommended() constructor now returns typing.Self. Thanks @waketzheng 🎉Identify properly argon2d and argon2i variants ( #21 ). Thanks @ericwestfall
Bump version 0.2.1 → 0.3.0
argon2d and argon2i variants (#21). Thanks @ericwestfallOne column per month.
Relax version constraints of argon2-cffi and bcrypt dependencies. Thanks @MrNaif2018 🎉
Bump version 0.2.0 → 0.2.1
argon2-cffi and bcrypt dependencies. Thanks @MrNaif2018 🎉The order of the arguments for the verify and verify_and_update methods has been reversed. The hash is now the second argument and the password is the
Bump version 0.1.0 → 0.2.0
The order of the arguments for the verify and verify_and_update methods has been reversed. The hash is now the second argument and the password is the first argument. This change was made to make the API more consistent with passlib.
Before
valid = password_hash.verify(hash, "herminetincture")
valid, updated_hash = password_hash.verify_and_update(hash, "herminetincture")After
valid = password_hash.verify("herminetincture", hash)
valid, updated_hash = password_hash.verify_and_update("herminetincture", hash)Modern password hashing for Python
pwdlib 🎉Modern password hashing for Python
pip install 'pwdlib[argon2]'from pwdlib import PasswordHash
password_hash = PasswordHash.recommended()
hash = password_hash.hash("herminetincture")
password_hash.verify(hash, "herminetincture") # Truepwdlib?For years, the de-facto standard to hash passwords was passlib. Unfortunately, it has not been very active recently and its maintenance status is under question. Starting Python 3.13, passlib won't work anymore.
That's why I decided to start pwdlib, a password hash helper for the modern Python era. However, it's not designed to be a complete replacement for passlib, which supports numerous hashing algorithms and features.
✅ Goals
❌ Non-goals
Your coding agent can read these notes before it upgrades. Set up the MCP server →