@@ -1849,28 +1849,28 @@ def __contains__(self, value):
18491849## unsafecmp(1, 1L)
18501850## unsafecmp(1L, 1)
18511851
1852- class Letter (str ):
1853- def __new__ (cls , letter ):
1854- if letter == 'EPS' :
1855- return str .__new__ (cls )
1856- return str .__new__ (cls , letter )
1857- def __str__ (self ):
1858- if not self :
1859- return 'EPS'
1860- return self
1861-
1862- # sys.stdout needs to be the original to trigger the recursion bug
1863- import sys
1864- test_stdout = sys .stdout
1865- sys .stdout = get_original_stdout ()
1866- try :
1867- # nothing should actually be printed, this should raise an exception
1868- print (Letter ('w' ))
1869- except RuntimeError :
1870- pass
1871- else :
1872- raise TestFailed , "expected a RuntimeError for print recursion"
1873- sys .stdout = test_stdout
1852+ ## class Letter(str):
1853+ ## def __new__(cls, letter):
1854+ ## if letter == 'EPS':
1855+ ## return str.__new__(cls)
1856+ ## return str.__new__(cls, letter)
1857+ ## def __str__(self):
1858+ ## if not self:
1859+ ## return 'EPS'
1860+ ## return self
1861+
1862+ ## # sys.stdout needs to be the original to trigger the recursion bug
1863+ ## import sys
1864+ ## test_stdout = sys.stdout
1865+ ## sys.stdout = get_original_stdout()
1866+ ## try:
1867+ ## # nothing should actually be printed, this should raise an exception
1868+ ## print(Letter('w'))
1869+ ## except RuntimeError:
1870+ ## pass
1871+ ## else:
1872+ ## raise TestFailed, "expected a RuntimeError for print recursion"
1873+ ## sys.stdout = test_stdout
18741874
18751875def weakrefs ():
18761876 if verbose : print ("Testing weak references..." )
@@ -2294,12 +2294,9 @@ def rev(self):
22942294 vereq (s .lstrip (), base )
22952295 verify (s .rstrip ().__class__ is str )
22962296 vereq (s .rstrip (), base )
2297- identitytab = '' . join ([ chr ( i ) for i in range ( 256 )])
2297+ identitytab = {}
22982298 verify (s .translate (identitytab ).__class__ is str )
22992299 vereq (s .translate (identitytab ), base )
2300- verify (s .translate (identitytab , "x" ).__class__ is str )
2301- vereq (s .translate (identitytab , "x" ), base )
2302- vereq (s .translate (identitytab , "\x00 " ), "" )
23032300 verify (s .replace ("x" , "x" ).__class__ is str )
23042301 vereq (s .replace ("x" , "x" ), base )
23052302 verify (s .ljust (len (s )).__class__ is str )
@@ -2392,52 +2389,52 @@ class sublist(list):
23922389 vereq (a [- 1 ], 9 )
23932390 vereq (a [:5 ], list (range (5 )))
23942391
2395- class CountedInput (file ):
2396- """Counts lines read by self.readline().
2397-
2398- self.lineno is the 0-based ordinal of the last line read, up to
2399- a maximum of one greater than the number of lines in the file.
2400-
2401- self.ateof is true if and only if the final "" line has been read,
2402- at which point self.lineno stops incrementing, and further calls
2403- to readline() continue to return "".
2404- """
2405-
2406- lineno = 0
2407- ateof = 0
2408- def readline (self ):
2409- if self .ateof :
2410- return ""
2411- s = file .readline (self )
2412- # Next line works too.
2413- # s = super(CountedInput, self).readline()
2414- self .lineno += 1
2415- if s == "" :
2416- self .ateof = 1
2417- return s
2418-
2419- f = open (name = TESTFN , mode = 'w' )
2420- lines = ['a\n ' , 'b\n ' , 'c\n ' ]
2421- try :
2422- f .writelines (lines )
2423- f .close ()
2424- f = CountedInput (TESTFN )
2425- for (i , expected ) in zip (list (range (1 , 5 )) + [4 ], lines + 2 * ["" ]):
2426- got = f .readline ()
2427- vereq (expected , got )
2428- vereq (f .lineno , i )
2429- vereq (f .ateof , (i > len (lines )))
2430- f .close ()
2431- finally :
2432- try :
2433- f .close ()
2434- except :
2435- pass
2436- try :
2437- import os
2438- os .unlink (TESTFN )
2439- except :
2440- pass
2392+ ## class CountedInput(file):
2393+ ## """Counts lines read by self.readline().
2394+
2395+ ## self.lineno is the 0-based ordinal of the last line read, up to
2396+ ## a maximum of one greater than the number of lines in the file.
2397+
2398+ ## self.ateof is true if and only if the final "" line has been read,
2399+ ## at which point self.lineno stops incrementing, and further calls
2400+ ## to readline() continue to return "".
2401+ ## """
2402+
2403+ ## lineno = 0
2404+ ## ateof = 0
2405+ ## def readline(self):
2406+ ## if self.ateof:
2407+ ## return ""
2408+ ## s = file.readline(self)
2409+ ## # Next line works too.
2410+ ## # s = super(CountedInput, self).readline()
2411+ ## self.lineno += 1
2412+ ## if s == "":
2413+ ## self.ateof = 1
2414+ ## return s
2415+
2416+ ## f = open(name=TESTFN, mode='w')
2417+ ## lines = ['a\n', 'b\n', 'c\n']
2418+ ## try:
2419+ ## f.writelines(lines)
2420+ ## f.close()
2421+ ## f = CountedInput(TESTFN)
2422+ ## for (i, expected) in zip(list(range(1, 5)) + [4], lines + 2 * [""]):
2423+ ## got = f.readline()
2424+ ## vereq(expected, got)
2425+ ## vereq(f.lineno, i)
2426+ ## vereq(f.ateof, (i > len(lines)))
2427+ ## f.close()
2428+ ## finally:
2429+ ## try:
2430+ ## f.close()
2431+ ## except:
2432+ ## pass
2433+ ## try:
2434+ ## import os
2435+ ## os.unlink(TESTFN)
2436+ ## except:
2437+ ## pass
24412438
24422439def keywords ():
24432440 if verbose :
@@ -2447,13 +2444,12 @@ def keywords():
24472444 vereq (int (x = 3 ), 3 )
24482445 vereq (complex (imag = 42 , real = 666 ), complex (666 , 42 ))
24492446 vereq (str (object = 500 ), '500' )
2450- vereq (str (string = 'abc' , errors = 'strict' ), 'abc' )
2447+ vereq (str (object = b 'abc' , errors = 'strict' ), 'abc' )
24512448 vereq (tuple (sequence = range (3 )), (0 , 1 , 2 ))
24522449 vereq (list (sequence = (0 , 1 , 2 )), list (range (3 )))
24532450 # note: as of Python 2.3, dict() no longer has an "items" keyword arg
24542451
2455- for constructor in (int , float , int , complex , str , str ,
2456- tuple , list , file ):
2452+ for constructor in (int , float , int , complex , str , str , tuple , list ):
24572453 try :
24582454 constructor (bogus_keyword_arg = 1 )
24592455 except TypeError :
@@ -2635,10 +2631,11 @@ def __ge__(self, other):
26352631
26362632def descrdoc ():
26372633 if verbose : print ("Testing descriptor doc strings..." )
2634+ from _fileio import _FileIO
26382635 def check (descr , what ):
26392636 vereq (descr .__doc__ , what )
2640- check (file .closed , "True if the file is closed" ) # getset descriptor
2641- check (file . name , "file name " ) # member descriptor
2637+ check (_FileIO .closed , "True if the file is closed" ) # getset descriptor
2638+ check (complex . real , "the real part of a complex number " ) # member descriptor
26422639
26432640def setclass ():
26442641 if verbose : print ("Testing __class__ assignment..." )
@@ -2930,6 +2927,7 @@ def pickleslots():
29302927 if verbose : print ("Testing pickling of classes with __slots__ ..." )
29312928 import pickle , pickle as cPickle
29322929 # Pickling of classes with __slots__ but without __getstate__ should fail
2930+ # (when using protocols 0 or 1)
29332931 global B , C , D , E
29342932 class B (object ):
29352933 pass
@@ -2939,25 +2937,25 @@ class C(base):
29392937 class D (C ):
29402938 pass
29412939 try :
2942- pickle .dumps (C ())
2940+ pickle .dumps (C (), 0 )
29432941 except TypeError :
29442942 pass
29452943 else :
29462944 raise TestFailed , "should fail: pickle C instance - %s" % base
29472945 try :
2948- cPickle .dumps (C ())
2946+ cPickle .dumps (C (), 0 )
29492947 except TypeError :
29502948 pass
29512949 else :
29522950 raise TestFailed , "should fail: cPickle C instance - %s" % base
29532951 try :
2954- pickle .dumps (C ())
2952+ pickle .dumps (C (), 0 )
29552953 except TypeError :
29562954 pass
29572955 else :
29582956 raise TestFailed , "should fail: pickle D instance - %s" % base
29592957 try :
2960- cPickle .dumps (D ())
2958+ cPickle .dumps (D (), 0 )
29612959 except TypeError :
29622960 pass
29632961 else :
@@ -3167,14 +3165,14 @@ class MyInt(int):
31673165
31683166def str_of_str_subclass ():
31693167 import binascii
3170- import cStringIO
3168+ import io
31713169
31723170 if verbose :
31733171 print ("Testing __str__ defined in subclass of str ..." )
31743172
31753173 class octetstring (str ):
31763174 def __str__ (self ):
3177- return binascii .b2a_hex (self )
3175+ return str ( binascii .b2a_hex (self ) )
31783176 def __repr__ (self ):
31793177 return self + " repr"
31803178
@@ -3188,7 +3186,7 @@ def __repr__(self):
31883186 vereq (o .__str__ (), '41' )
31893187 vereq (o .__repr__ (), 'A repr' )
31903188
3191- capture = cStringIO .StringIO ()
3189+ capture = io .StringIO ()
31923190 # Calling str() or not exercises different internal paths.
31933191 print (o , file = capture )
31943192 print (str (o ), file = capture )
0 commit comments