remove bogus link
[docutils.git] / docutils / _compat.py
blob19654a62e9b2e2ba8b8206ee8cebe8f3394002a9
1 # $Id$
2 # Author: Georg Brandl <georg@python.org>
3 # Copyright: This module has been placed in the public domain.
5 """
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, '' in 3.x)
14 (Required in docutils/test/test_publisher.py)
15 * BytesIO (a StringIO class that works with bytestrings)
16 """
18 import sys
20 if sys.version_info < (3,0):
21 b = bytes = str
22 u_prefix = 'u'
23 from StringIO import StringIO as BytesIO
24 else:
25 import builtins
26 bytes = builtins.bytes
27 u_prefix = ''
28 def b(s):
29 if isinstance(s, str):
30 return s.encode('latin1')
31 elif isinstance(s, bytes):
32 return s
33 else:
34 raise TypeError("Invalid argument %r for b()" % (s,))
35 # using this hack since 2to3 "fixes" the relative import
36 # when using ``from io import BytesIO``
37 BytesIO = __import__('io').BytesIO
39 if sys.version_info < (2,5):
40 import __builtin__
42 def __import__(name, globals={}, locals={}, fromlist=[], level=-1):
43 """Compatibility definition for Python 2.4.
45 Silently ignore the `level` argument missing in Python < 2.5.
46 """
47 # we need the level arg because the default changed in Python 3.3
48 return __builtin__.__import__(name, globals, locals, fromlist)