What's New In FormEncode 1.3
==============================

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


Feature Additions
-----------------

 - Support validation of email addresses with unicode domain names.


Backwards Incompatibilities
---------------------------

 - `FormEncode` 1.3 is no longer compatible with Python 2.3, 2.4, or 2.5.

   The reason? We could not easily "straddle" Python 2 and 3 versions and support Python 2 versions older than Python 2.6. You will need Python 2.6 or better to run this version of FormEncode. If you need to use Python 2.5, you should use the most recent 1.2.X release of FormEncode.

- `FormEncode` now also runs under Python 3.2 and 3.3.

   Note that under Python 3, the `String` validator is now identical to the `UnicodeString` validator. If you really want to convert to byte strings, use the `ByteString` validator instead.

 - Validation of email addresses using `resolve_domain` option now requires the dnspython third party library instead of pyDNS. pyDNS also does not support Python 3.

 - The `FancyValidator` methods `_to_python`, `_from_python`, `validate_python` and `validate_other` have been renamed to `_convert_to_python`, `_convert_from_python`, `_validate_python` and `_validate_other`, respectively. This has been done to clarify that while these methods are meant to be overridden by custom validators, they are not part of the external API. They are only helper methods that are called internally by the external methods `to_python` and `from_python`, which constitute the external API. Particularly, do not assume that `_validate_python` catches all validation errors that a call of `to_python` will catch. Please have a look at the `FancyValidator` docstring and source if you're unsure how these methods work together. For the same reason, the `CompoundValidator` method `attempt_convert` has been renamed to `_attempt_convert`. For now, the old method names will still work, but they will output deprecation warnings.


 - (1.3.1) Don't use universal wheel
