The Passlib documentation has moved to https://passlib.readthedocs.io
Installation¶
Supported Platforms¶
Passlib requires Python 2 (>= 2.6) or Python 3 (>= 3.3). It is known to work with the following Python implementations:
- CPython 2 – v2.6 or newer.
- CPython 3 – v3.3 or newer.
- PyPy – v2.0 or newer.
- PyPy3 – v5.3 or newer.
- Jython – v2.7 or newer.
- Pyston – v0.5.1 or newer.
Passlib should work with all operating systems and environments, as it contains builtin fallbacks for almost all OS-dependant features. Google App Engine is supported as well.
Changed in version 1.7: Support for Python 2.5, 3.0-3.2 was dropped. Support for PyPy 1.x was dropped.
Optional Libraries¶
bcrypt, py-bcrypt, or bcryptor
If any of these packages are installed, they will be used to provide support for the BCrypt hash algorithm. This is required if you want to handle BCrypt hashes, and your OS does not provide native BCrypt support via stdlib’s
crypt
(which includes pretty much all non-BSD systems).bcrypt is currently the recommended option – it’s actively maintained, and compatible with both CPython and PyPy.
Use
pip install passlib[bcrypt]
to get the recommended bcrypt setup.argon2_cffi, or argon2pure (>= 1.2.2)
If any of these packages are installed, they will be used to provide support for the
argon2
hash algorithm. argon2_cffi is currently the recommended option.Use
pip install passlib[argon2]
to get the recommended argon2 setup.-
If installed, will be used to enable encryption of TOTP secrets for storage (see
passlib.totp
).Use
pip install passlib[totp]
to get the recommended TOTP setup. -
If installed, will be used to greatly speed up
pbkdf2_hmac()
, and any pbkdf2-based hashes. SCrypt (>= 0.6)
If installed, this will be used to provide support for the
scrypt
hash algorithm. If not installed, a MUCH slower builtin reference implementation will be used.
Changed in version 1.7: Added fastpbkdf2, cryptography, argon2_cffi, argon2pure, and scrypt support. Removed M2Crypto support.
Installation Instructions¶
To install from PyPi using pip:
pip install passlib
To install from the source using setup.py:
python setup.py install
Testing¶
Passlib contains a comprehensive set of unittests (about 38% of the total code), which provide nearly complete coverage, and verification of the hash algorithms using multiple external sources (if detected at runtime).
All unit tests are contained within the passlib.tests
subpackage,
and are designed to be run using the
Nose unit testing library
(as well as the unittest2
library under Python 2.6).
Once Passlib and Nose have been installed, the main suite of tests may be run using:
nosetests --tests passlib.tests
By default, this runs the main battery of tests, but omits some additional ones (such as internal cross-checks, and mock-testing of features not provided natively by the host OS). To run these tests as well, set the following environmental variable:
PASSLIB_TEST_MODE="full" nosetests --tests passlib.tests
To run a quick check to confirm just basic functionality, with a pared-down set of tests:
PASSLIB_TEST_MODE="quick" nosetests --tests passlib.tests
Tests may also be run via setup.py test
or the included tox.ini
file.
The tox.ini
file is used to test passlib before each release,
and contains a number different environment setups.
These tests require tox 2.5 or later.
Building the Documentation¶
The latest copy of this documentation should always be available online at https://passlib.readthedocs.io. If you wish to generate your own copy of the documentation, you will need to:
- Install Sphinx (1.4 or newer)
- Install the Cloud Sphinx Theme (1.9.2 or newer).
- Download the Passlib source
- From the Passlib source directory, run
python setup.py build_sphinx
. - Once Sphinx completes its run, point a web browser to the file at
SOURCE/build/sphinx/html/index.html
to access the Passlib documentation in html format.