What’s New In FormEncode 2.0

This article explains the latest changes in FormEncode version 2.0 compared to its predecessor, FormEncode version 1.3.


  • Add support for Python 3.7 to 3.12, end support for older Python versions

  • Context.set() now works as a context manager

  • Fix binary of swedish translation

  • Some internal code cleanup and modernization


  • Add support for Python 3.10

  • use Pytest instead of Nose and GitHub Actions instead of Travis for tests

  • Documentation updates

  • Note this will be the last version to support Python 2. The next version will be 2.1.0 to signal this change. For compatibility with older Python versions, please use versions < 2.1.


  • FormEncode can now run on Python 3.6 and higher without needing to run 2to3 first.

  • FormEncode 2.0 is no longer compatible with Python 2.6 and 3.2 to 3.5.

For compatibility with older Python versions, please use versions < 1.3.

  • This will be the last major version to support Python 2.

  • Add strict flag to USPostalCode to raise error on postal codes that has too many digits instead of just truncating

  • Various Python 3 fixes

  • Serbian latin translation

  • Changed License to MIT

  • Dutch, UK, Greek and South Korean postal code format fixes

  • Add postal code formats for Switzerland, Cyprus, Faroe Islands, San Marino, Ukraine and Vatican City.

  • Add ISODateTimeConverter validator

  • Add ability to target htmlfill to particular form or ignore a form

  • Fix format errors in some translations

  • The version of the library can be checked using formencode.__version__