Python 3
========

Say works virtually the same way in Python 2 and Python 3. This can simplify
software that should work across the versions. For compatibility, ``from say
import say`` is basically a higher-level of ``from __future__ import
print_function``.

``say`` attempts to mask some of the quirky complexities of the 2-to-3 divide,
such as string encodings and codec use. In general, things work best if
you use Unicode strings any time you need to use non-ASCII characters.
In Python 3, this is automatic.

If you are supporting Python 2, recommend you use this import::

    from __future__ import unicode_literals

To default strings to Unicode strings.

And if you are migrating to Python 3.6+'s new f-strings, there is a 
compatibility shim / polyfill that may be helpful:

    from say import f

    condition = 'good'
    print(f('this is {condition}'))

While not quite as elegant as the new f-string syntax ``f'this is {condition}'``, 
it has the virtue of working broadly all the way back to Python 2.6.
