Engineering
My Auth Layer Got Caught in a Messy Divorce: passlib vs. bcrypt
When bcrypt 4.0 removed __about__.__version__, passlib's CryptContext started failing our password hashing at runtime. Why we deleted the abstraction and called bcrypt directly.