annotate lib/compat.py @ 3172:d1b367fc08bc tests-returncode

Use a return code of 1 when the tests fail.
author Thomas Kluyver <takowl@gmail.com>
date Wed, 09 Jan 2013 10:13:57 +0000
parents 6eb709037e77
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
1 """Python 2.x/3.x compatibility tools"""
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
2
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
3 import sys
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
4
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
5 __all__ = ['geterror', 'long_', 'xrange_', 'ord_', 'unichr_',
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
6 'unicode_', 'raw_input_', 'as_bytes', 'as_unicode']
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
7
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
8 def geterror ():
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
9 return sys.exc_info()[1]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
10
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
11 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
12 long_ = long
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
13 except NameError:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
14 long_ = int
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
15
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
16 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
17 xrange_ = xrange
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
18 except NameError:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
19 xrange_ = range
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
20
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
21 def get_BytesIO():
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
22 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
23 from cStringIO import StringIO as BytesIO
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
24 except ImportError:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
25 from io import BytesIO
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
26 return BytesIO
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
27
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
28 def get_StringIO():
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
29 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
30 from cStringIO import StringIO
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
31 except ImportError:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
32 from io import StringIO
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
33 return StringIO
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
34
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
35 def ord_(o):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
36 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
37 return ord(o)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
38 except TypeError:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
39 return o
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
40
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
41 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
42 unichr_ = unichr
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
43 except NameError:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
44 unichr_ = chr
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
45
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
46 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
47 unicode_ = unicode
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
48 except NameError:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
49 unicode_ = str
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
50
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
51 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
52 bytes_ = bytes
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
53 except NameError:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
54 bytes_ = str
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
55
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
56 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
57 raw_input_ = raw_input
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
58 except NameError:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
59 raw_input_ = input
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
60
2122
3129146c2555 small fixes to get Pygame to pass the unit tests on Windows for Python 3.2
Lenard Lindstrom <len-l@telus.net>
parents: 2105
diff changeset
61 if sys.platform == 'win32':
3129146c2555 small fixes to get Pygame to pass the unit tests on Windows for Python 3.2
Lenard Lindstrom <len-l@telus.net>
parents: 2105
diff changeset
62 filesystem_errors = "replace"
3129146c2555 small fixes to get Pygame to pass the unit tests on Windows for Python 3.2
Lenard Lindstrom <len-l@telus.net>
parents: 2105
diff changeset
63 elif sys.version_info >= (3, 0, 0):
2105
297803165311 merge fsencoding branch back into trunk, correcting Unicode file path encoding
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
64 filesystem_errors = "surrogateescape"
297803165311 merge fsencoding branch back into trunk, correcting Unicode file path encoding
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
65 else:
297803165311 merge fsencoding branch back into trunk, correcting Unicode file path encoding
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
66 filesystem_errors = "strict"
297803165311 merge fsencoding branch back into trunk, correcting Unicode file path encoding
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
67
297803165311 merge fsencoding branch back into trunk, correcting Unicode file path encoding
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
68 def filesystem_encode(u):
297803165311 merge fsencoding branch back into trunk, correcting Unicode file path encoding
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
69 return u.encode(sys.getfilesystemencoding(), filesystem_errors)
297803165311 merge fsencoding branch back into trunk, correcting Unicode file path encoding
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
70
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
71 # Represent escaped bytes and strings in a portable way.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
72 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
73 # as_bytes: Allow a Python 3.x string to represent a bytes object.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
74 # e.g.: as_bytes("a\x01\b") == b"a\x01b" # Python 3.x
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
75 # as_bytes("a\x01\b") == "a\x01b" # Python 2.x
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
76 # as_unicode: Allow a Python "r" string to represent a unicode string.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
77 # e.g.: as_unicode(r"Bo\u00F6tes") == u"Bo\u00F6tes" # Python 2.x
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
78 # as_unicode(r"Bo\u00F6tes") == "Bo\u00F6tes" # Python 3.x
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
79 try:
3149
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
80 unicode
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
81 def as_bytes(string):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
82 """ '<binary literal>' => '<binary literal>' """
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
83 return string
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
84
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
85 def as_unicode(rstring):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
86 """ r'<Unicode literal>' => u'<Unicode literal>' """
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
87 return rstring.decode('unicode_escape', 'strict')
3149
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
88 except NameError:
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
89 def as_bytes(string):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
90 """ '<binary literal>' => b'<binary literal>' """
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
91 return string.encode('latin-1', 'strict')
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
92
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
93 def as_unicode(rstring):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
94 """ r'<Unicode literal>' => '<Unicode literal>' """
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
95 return rstring.encode('ascii', 'strict').decode('unicode_escape',
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
96 'stict')
3149
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
97 # Include a next compatible function for Python versions < 2.6
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
98 try:
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
99 next_ = next
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
100 except NameError:
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
101 def next_(i, *args):
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
102 try:
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
103 return i.next()
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
104 except StopIteration:
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
105 if args:
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
106 return args[0]
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
107 raise
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 2066
diff changeset
108
3149
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
109 # itertools.imap is missing in 3.x
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
110 try:
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
111 import itertools.imap as imap_
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
112 except ImportError:
6eb709037e77 First batch of fixes for issue #146
Lenard Lindstrom <len-l@telus.net>
parents: 2122
diff changeset
113 imap_ = map