summaryrefslogtreecommitdiffstats
path: root/docs/docsite/rst/dev_guide/testing/sanity/no-unicode-literals.rst
blob: f8ca1d2c54250bca2c9dc46fb83a4823cbb7257e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
no-unicode_literals
===================

The use of :code:`from __future__ import unicode_literals` has been deemed an anti-pattern.  The
problems with it are:

* It makes it so one can't jump into the middle of a file and know whether a bare literal string is
  a byte string or text string.  The programmer has to first check the top of the file to see if the
  import is there.
* It removes the ability to define native strings (a string which should be a byte string on python2
  and a text string on python3) by a string literal.
* It makes for more context switching.  A programmer could be reading one file which has
  `unicode_literals` and know that bare string literals are text strings but then switch to another
  file (perhaps tracing program execution into a third party library) and have to switch their
  understanding of what bare string literals are.