# Passlib 1.8

## 1.8.0 (NOT YET RELEASED)

### Overview

Warning

1.8 is under development, and tenatively scheduled for release in late 2017.

See https://passlib.readthedocs.io/en/stable/history/1.7.html for the latest release.

### Requirements

- Passlib now requires Python >= 3.5. As of this release, support for Python 2.x, 3.3, and 3.4 has been dropped. If you need to use Passlib on an earlier version of Python, please use the Passlib 1.7 series, which will be maintained in bugfix-only mode for few more releases. (See :issue:`119` for rationale).

  System Message: ERROR/3 (/build/python-passlib-EzVFOb/python-passlib-1.9.3/docs/history/1.8.rst, line 26); backlink

  Unknown interpreted text role “issue”.

### Backwards Incompatibilities

The following previously-deprecated features were removed, though few of these should be in use, as they’ve been deprecated for a number of years / releases:

> passlib.apache:

> - `passlib.apache`: A number of deprecated options & methods were removed from `HtpasswdFile` and `Htdigest`:

>   - Support for setting `encoding=None` removed, use `return_unicode=True` instead.

>   - `autoload=False` keyword removed, use `new=True` instead.

>   - `load()` method no longer supports `force=False`, use `load_if_changed()` instead.

>   - `update()` alias removed, use `set_password()` instead.

>   - `find()` alias removed, use `get_hash()` instead.

>   - `verify()` alias removed, use `check_password()` instead.

>   - `default` keyword removed, use `default_scheme` instead.

> passlib.context:

> - The `passlib.context.CryptPolicy` class was removed. Code should be using the equivalent `CryptContext()` methods instead.

> - Concurrent with that, `CryptContext`’s `policy` keyword and attribute were removed, along with `LazyCryptContext`’s `create_policy` keyword.

> - `CryptContext.replace()` alias removed, use `CryptContext.using()` instead.

> - `CryptContext`’s `min_verify_time` and `harden_verify` keywords removed.

> passlib.hash:

> - `passlib.hash.unix_fallback` was removed, use `unix_disabled` instead.

> other modules:

> - In `passlib.ext.django`, support for `CONFIG=None` was dropped.

> - The deprecated `passlib.win32` module was removed, use `passlib.hash.lmhash` hash instead.

> internal details:

> - The `passlib.hash.nthash.raw_nthash()` alias was removed, use `nthash.raw()` instead.

> - In `passlib.utils.handlers`: `StaticHandler` subclasses must now always implement `_calc_checksum()`, the old genhash-based style is no longer supported or checked for.

> - The deprecated `passlib.utils.des.mdes_encrypt_int_block()` method was removed.

> - The `passlib.utils.pbkdf2.norm_hash_name()` alias was removed, use `passlib.crypto.digest.norm_hash_name()` instead.

> - Many PY2 compatibility helper inside `passlib.utils.compat` have been removed.