NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3033 most downloaded on PyPI
Last release 18 days ago
17 Sep 2026
Release timing varies
gaps range from 3 months to 4.5 years
Most releases are documented
notes for 7 of 8 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
8 releases · first in 2014
Bump pip to 26.2.1 ( CVE-2026-13346 / GHSA-qwm4-qh6w-59xr )
python-pam 2.1.0 — Poetry packaging, thread-safe authenticate, and refreshed tooling.
pam.authenticate() no longer reuses a process-global PamAuthenticator (thread-safe concurrent auth); libpam ctypes bindings are loaded once and shared (#40)PamAuthenticator across threads)resetcreds=True vs False (#52)September 16, 2026
pam.authenticate() no longer reuses a process-global
PamAuthenticator (thread-safe concurrent auth); libpam ctypes bindings
are loaded once and shared for performancePamAuthenticator across threads)resetcreds=True vs False (#52)One column per quarter.
Fixed #31 whereby I changed the boolean response in 2.0.0 to a PAM constant. This reverts to the boolean response as existed in v1.8.5. The _result co
Surface fixes
obj.code attributePamAuthenticate.authenticate() method signature and docstring to both of the new and legacy interfacesPamAuthenticate.authenticate() type hinting so it didn't interfere with the docstringUnder the hood changes
The surface functionality hasn't changed much but a few bugs have been fixed. Under the hood, a lot has changed. Functionality has now been moved into
The surface functionality hasn't changed much but a few bugs have been fixed. Under the hood, a lot has changed. Functionality has now been moved into a class that helped with value tracking. I planned on removing Python 2 support but was convinced to leave it in for now as apparently there are still a lot of python2 users. :confused: :man_shrugging:
Most testing has moved to occur underneath tox, this is superior as it provides for testing in a clean environment and an installed environment.
pam_unix.so and unix_chkpwd examples provided for testingUnit testing and code coverage is 100% for all automated methods. Some methods require a valid TEST_USERNAME and TEST_PASSWORD to function and those are marked SKIP if not found in the environment. Sorry :-} -- mocking the internals of libc and libpam are far too hairy for the trivial bit of testing that can be verified by hand
<details><summary>Testing summary</summary>
| Name | Stmts | Miss | Excluded | Branch | BrPart | Cover |
|---|---|---|---|---|---|---|
pam/__init__.py |
59 | 0 | 2 | 2 | 0 | 100% |
pam/__internals.py |
281 | 0 | 14 | 76 | 0 | 100% |
| TOTAL | 340 | 0 | 16 | 78 | 0 | 100% |
</details>
htmlcov/include LICENSE file as some distributions rely on the presence of it rather than extracting from setup.py
June 15, 2018
bugtrack_url isn't supported by setuptools, not really needed anyway
bugtrack_url isn't supported by setuptools, not really needed anyway
add MANIFEST.in so README.md gets included for pypi (pip installs)
November 17th, 2014
adapt, add files, package up for PyPi
August 4, 2014
Start of forked copy from Chris AtLee 2011-Dec
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →