Changes between Version 9 and Version 10 of PortingNotesFor2To3
- Timestamp:
- Dec 25, 2011, 7:09:01 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
PortingNotesFor2To3
v9 v10 12 12 replace `u'foo'` with `u('foo')` and `b'bar'` with `b('bar')` throughout the source. 13 13 The same applies to the constants with double quotes (`u"foo"` or `b"bar"`, which should be replaced by 14 `u("foo")` or `b("bar")` respectively). 14 `u("foo")` or `b("bar")` respectively). '''Note:''' this is needed for Python 2.5 compatibility only. For compatibility only with Python 2.6 and later, add `from __future__ import unicode_literals` in all modules where you are using Unicode literals, and remove the `u` prefix from the Unicode literals, as you don't need it. If you need native strings, use `from django.utils.py3 import n` and replace those literals with n(...). This will return str on both 2.x and 3.x. If you need byte strings, use b'foo'. 15 15 16 16 * If you need to make any code conditional on 2.x vs. 3.x, you can do `from django.utils.py3 import PY3` and use `PY3` … … 25 25 26 26 * If you see octal constants (such as `0777`), replace them with the hex value (`0x1ff` for the `0777` case), and if 27 possible, place the octal constant in a comment so anyone can see what it was originally. 27 possible, place the octal constant in a comment so anyone can see what it was originally. '''Note:''' this is only needed for 2.5 compatibility. For 2.6+ compatibility, you can use the 3.x octal form `0o777`. 28 28 29 * If you see code of the type `except ExceptionTypeOrTupleOfExceptionTypes, name_to_bind_to:`, see if `name_to _bind_to` 29 30 is used in the scope (exception handling clause, or later in the same function or method). If not used, just change the 30 31 `except:` statement to `except ExceptionTypeOrTupleOfExceptionTypes:` and you're done. If used, do one more thing: 31 32 put the code `name_to_bind_to = sys.exc_info()[1]` just before `name_to_bind_to` is first used, and make sure that 32 the `sys` module is imported. 33 the `sys` module is imported. '''Note:''' this is only needed for 2.5 compatibility. For 2.6+ compatibility, you can use 34 the 3.x form `except ExceptionTypeOrTupleOfExceptionTypes as name_to_bind_to`. Note that in 3.x, names bound like this are 35 not in the local scope, and so not visible outside the exception clause. 33 36 34 37 * If `unicode` occurs in the source (i.e. not in comments), do `from django.utils.py3 import text_type` and replace