2 # Author: Georg Brandl <georg@python.org>
3 # Copyright: This module has been placed in the public domain.
6 Python 2/3 compatibility definitions.
8 This module currently provides the following helper symbols:
10 * bytes (name of byte string type; str in 2.x, bytes in 3.x)
11 * b (function converting a string literal to an ASCII byte string;
12 can be also used to convert a Unicode string into a byte string)
13 * u_prefix (unicode repr prefix, 'u' in 2.x, nothing in 3.x)
14 * BytesIO (a StringIO class that works with bytestrings)
19 if sys
.version_info
< (3,0):
22 from StringIO
import StringIO
as BytesIO
25 bytes
= builtins
.bytes
28 if isinstance(s
, str):
29 return s
.encode('latin1')
30 elif isinstance(s
, bytes
):
33 raise TypeError("Invalid argument %r for b()" % (s
,))
34 # using this hack since 2to3 "fixes" the relative import
35 # when using ``from io import BytesIO``
36 BytesIO
= __import__('io').BytesIO