python-future/docs/other/lessons.txt

50 lines
1.7 KiB
Plaintext

The escape() function in this file in Django 1.4:
/home/user/VirtualEnvs/mezzanine/local/lib/python2.7/site-packages/django/utils/html.py
atttempts to use the unicode replace method with byte strings. This
causes this exception when running the Mezzanine tests using the newstr
object:
File "/home/user/VirtualEnvs/mezzanine/local/lib/python2.7/site-packages/django/utils/html.py", line 36, in escape
return mark_safe(force_unicode(html).replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;').replace('"', '&quot;').replace("'", '&#39;'))
File "/home/user/VirtualEnvs/mezzanine/local/lib/python2.7/site-packages/future-0.9.0_dev-py2.7.egg/future/builtins/backports/__init__.py", line 145, in wrapper
raise TypeError(errmsg.format(mytype))
TypeError: argument can't be <type 'str'>
Comment to add to prevent Pylint from issuing warnings on ``from
future.builtins import *``:
# pylint: disable=W0622,W0401
INCOMPATIBLE: array.array()
Python 2:
>>> array.array(b'b')
array.array(b'b')
>>> array.array(u'u')
TypeError: must be char, not unicode
Python 3:
>>> array.array(b'b')
TypeError: must be a unicode character, not bytes
>>> array.array(u'b')
array('b')
Maybe use on Py2:
>>> array.array(u'b'.encode('ascii')) ??
Long int syntax (e.g. 1000000L) is incompatible with Py3.
We probably shouldn't shadow int with long on Py2 because then isinstance(1, int) is False
Python 2's bytes object is nothing like Python 3's bytes object!
Running test_bytes.py from Py3 on Py2 (after fixing imports) gives this:
--------------------------------------------------------------
Ran 203 tests in 0.209s
FAILED (failures=31, errors=55, skipped=1)