You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(tests,docs): green CI — table fixtures, runnable doc examples, topmost imports
- Replace per-test create_all(tables=[...]) + drop_all in the encrypted-type
integration tests with a shared fixture doing metadata.create_all(engine)
(mirrors the password-hash tests). The old pattern did not create the
BigIntBase PK sequence on a fresh database, causing
"relation <table>_id_seq does not exist" on PostgreSQL/Oracle/MSSQL CI.
- Make the new docs code examples self-contained and runnable under Sybil:
build HashedPassword/TOTPProvider directly instead of referencing undefined
model instances, and import HashedPassword/StoredObject from the topmost
advanced_alchemy.types path.
- Add TOTP secret, one-time-code, and rehash-on-verify to the README feature
list.
The crypto type imports remain safe when their optional libraries are absent:
importing advanced_alchemy.types pulls in none of cryptography/pyotp/argon2/
passlib/pwdlib (guards fire at construction time, not import time).
Copy file name to clipboardExpand all lines: README.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -47,7 +47,9 @@ offering:
47
47
- Integrated support for UUID6 and UUID7 ([`uuid-utils`](https://github.com/aminalaee/uuid-utils) when installed, otherwise native in Python 3.14+, with UUID4 fallback on older versions).
48
48
- Integrated support for Nano ID using [`fastnanoid`](https://github.com/oliverlambson/fastnanoid) (install with the `nanoid` extra)
49
49
- Custom encrypted text type with multiple backend support including [`pgcrypto`](https://www.postgresql.org/docs/current/pgcrypto.html) for PostgreSQL and the Fernet implementation from [`cryptography`](https://cryptography.io/en/latest/) for other databases
50
-
- Custom password hashing type with multiple backend support including [`Argon2`](https://github.com/P-H-C/phc-winner-argon2), [`Passlib`](https://passlib.readthedocs.io/en/stable/), and [`Pwdlib`](https://pwdlib.readthedocs.io/en/stable/) with automatic salt generation
50
+
- Custom password hashing type with multiple backend support including [`Argon2`](https://github.com/P-H-C/phc-winner-argon2), [`Passlib`](https://passlib.readthedocs.io/en/stable/), and [`Pwdlib`](https://pwdlib.readthedocs.io/en/stable/) with automatic salt generation and rehash-on-verify for transparent hash upgrades on login
51
+
- Custom TOTP shared-secret type that stores an authenticator seed encrypted at rest and verifies time-based one-time passwords via [`pyotp`](https://github.com/pyauth/pyotp) (install with the `pyotp` extra)
52
+
- Custom one-time-code type for hashed, single-use email/SMS verification codes, reusing the password-hash backends
51
53
- Pre-configured base classes with audit columns UUID or Big Integer primary keys and
52
54
a [sentinel column](https://docs.sqlalchemy.org/en/20/core/connections.html#configuring-sentinel-columns).
53
55
- Synchronous and asynchronous repositories featuring:
0 commit comments