Fix some py3k warnings in the standard library.

This commit is contained in:
Florent Xicluna 2010-03-07 12:14:25 +00:00
parent 2a4ab81633
commit 1f3b4e12e8
9 changed files with 45 additions and 40 deletions

View File

@ -839,8 +839,8 @@ class BytesIO(BufferedIOBase):
if self.closed: if self.closed:
raise ValueError("seek on closed file") raise ValueError("seek on closed file")
try: try:
pos = pos.__index__() pos.__index__
except AttributeError as err: except AttributeError:
raise TypeError("an integer is required") raise TypeError("an integer is required")
if whence == 0: if whence == 0:
if pos < 0: if pos < 0:
@ -864,7 +864,12 @@ class BytesIO(BufferedIOBase):
raise ValueError("truncate on closed file") raise ValueError("truncate on closed file")
if pos is None: if pos is None:
pos = self._pos pos = self._pos
elif pos < 0: else:
try:
pos.__index__
except AttributeError:
raise TypeError("an integer is required")
if pos < 0:
raise ValueError("negative truncate position %r" % (pos,)) raise ValueError("negative truncate position %r" % (pos,))
del self._buffer[pos:] del self._buffer[pos:]
return pos return pos
@ -1813,6 +1818,10 @@ class TextIOWrapper(TextIOBase):
if n is None: if n is None:
n = -1 n = -1
decoder = self._decoder or self._get_decoder() decoder = self._decoder or self._get_decoder()
try:
n.__index__
except AttributeError:
raise TypeError("an integer is required")
if n < 0: if n < 0:
# Read everything. # Read everything.
result = (self._get_decoded_chars() + result = (self._get_decoded_chars() +

View File

@ -564,6 +564,10 @@ c = TextCalendar()
firstweekday = c.getfirstweekday firstweekday = c.getfirstweekday
def setfirstweekday(firstweekday): def setfirstweekday(firstweekday):
try:
firstweekday.__index__
except AttributeError:
raise IllegalWeekdayError(firstweekday)
if not MONDAY <= firstweekday <= SUNDAY: if not MONDAY <= firstweekday <= SUNDAY:
raise IllegalWeekdayError(firstweekday) raise IllegalWeekdayError(firstweekday)
c.firstweekday = firstweekday c.firstweekday = firstweekday

View File

@ -132,7 +132,7 @@ class Callbacks(unittest.TestCase):
gc.collect() gc.collect()
live = [x for x in gc.get_objects() live = [x for x in gc.get_objects()
if isinstance(x, X)] if isinstance(x, X)]
self.failUnlessEqual(len(live), 0) self.assertEqual(len(live), 0)
try: try:
WINFUNCTYPE WINFUNCTYPE
@ -164,7 +164,7 @@ class SampleCallbacksTestCase(unittest.TestCase):
result = integrate(0.0, 1.0, CALLBACK(func), 10) result = integrate(0.0, 1.0, CALLBACK(func), 10)
diff = abs(result - 1./3.) diff = abs(result - 1./3.)
self.assertTrue(diff < 0.01, "%s not less than 0.01" % diff) self.assertLess(diff, 0.01, "%s not less than 0.01" % diff)
################################################################ ################################################################

View File

@ -406,7 +406,7 @@ def execute (func, args, msg=None, verbose=0, dry_run=0):
log.info(msg) log.info(msg)
if not dry_run: if not dry_run:
apply(func, args) func(*args)
def strtobool (val): def strtobool (val):

View File

@ -10,6 +10,7 @@ import stat
from os.path import abspath from os.path import abspath
import fnmatch import fnmatch
from warnings import warn from warnings import warn
import collections
try: try:
from pwd import getpwnam from pwd import getpwnam
@ -500,7 +501,7 @@ def register_archive_format(name, function, extra_args=None, description=''):
""" """
if extra_args is None: if extra_args is None:
extra_args = [] extra_args = []
if not callable(function): if not isinstance(function, collections.Callable):
raise TypeError('The %s object is not callable' % function) raise TypeError('The %s object is not callable' % function)
if not isinstance(extra_args, (tuple, list)): if not isinstance(extra_args, (tuple, list)):
raise TypeError('extra_args needs to be a sequence') raise TypeError('extra_args needs to be a sequence')

View File

@ -212,8 +212,6 @@ class CalendarTestCase(unittest.TestCase):
self.assertEqual(calendar.isleap(2003), 0) self.assertEqual(calendar.isleap(2003), 0)
def test_setfirstweekday(self): def test_setfirstweekday(self):
# Silence a py3k warning claiming to affect Lib/calendar.py
with test_support.check_warnings():
self.assertRaises(ValueError, calendar.setfirstweekday, 'flabber') self.assertRaises(ValueError, calendar.setfirstweekday, 'flabber')
self.assertRaises(ValueError, calendar.setfirstweekday, -1) self.assertRaises(ValueError, calendar.setfirstweekday, -1)
self.assertRaises(ValueError, calendar.setfirstweekday, 200) self.assertRaises(ValueError, calendar.setfirstweekday, 200)

View File

@ -133,8 +133,6 @@ class MemoryTestMixin:
pos = memio.tell() pos = memio.tell()
self.assertEqual(memio.truncate(None), pos) self.assertEqual(memio.truncate(None), pos)
self.assertEqual(memio.tell(), pos) self.assertEqual(memio.tell(), pos)
# Silence a py3k warning
with support.check_warnings():
self.assertRaises(TypeError, memio.truncate, '0') self.assertRaises(TypeError, memio.truncate, '0')
memio.close() memio.close()
self.assertRaises(ValueError, memio.truncate, 0) self.assertRaises(ValueError, memio.truncate, 0)
@ -172,8 +170,6 @@ class MemoryTestMixin:
self.assertEqual(type(memio.read()), type(buf)) self.assertEqual(type(memio.read()), type(buf))
memio.seek(0) memio.seek(0)
self.assertEqual(memio.read(None), buf) self.assertEqual(memio.read(None), buf)
# Silence a py3k warning
with support.check_warnings():
self.assertRaises(TypeError, memio.read, '') self.assertRaises(TypeError, memio.read, '')
memio.close() memio.close()
self.assertRaises(ValueError, memio.read) self.assertRaises(ValueError, memio.read)

View File

@ -774,26 +774,23 @@ class TestCase(object):
set(actual))`` but it works with sequences of unhashable objects as set(actual))`` but it works with sequences of unhashable objects as
well. well.
""" """
with warnings.catch_warnings():
if sys.py3kwarning:
# Silence Py3k warning raised during the sorting
for msg in ["dict inequality comparisons",
"builtin_function_or_method order comparisons",
"comparing unequal types"]:
warnings.filterwarnings("ignore", msg, DeprecationWarning)
try: try:
expected = set(expected_seq) expected = set(expected_seq)
actual = set(actual_seq) actual = set(actual_seq)
missing = list(expected.difference(actual)) missing = sorted(expected.difference(actual))
unexpected = list(actual.difference(expected)) unexpected = sorted(actual.difference(expected))
missing.sort()
unexpected.sort()
except TypeError: except TypeError:
# Fall back to slower list-compare if any of the objects are # Fall back to slower list-compare if any of the objects are
# not hashable. # not hashable.
expected = list(expected_seq) expected = sorted(expected_seq)
actual = list(actual_seq) actual = sorted(actual_seq)
with warnings.catch_warnings():
if sys.py3kwarning:
# Silence Py3k warning
warnings.filterwarnings("ignore",
"dict inequality comparisons "
"not supported", DeprecationWarning)
expected.sort()
actual.sort()
missing, unexpected = sorted_list_difference(expected, actual) missing, unexpected = sorted_list_difference(expected, actual)
errors = [] errors = []
if missing: if missing:

View File

@ -29,7 +29,7 @@ def _show_warning(message, category, filename, lineno, file=None, line=None):
file.write(formatwarning(message, category, filename, lineno, line)) file.write(formatwarning(message, category, filename, lineno, line))
except IOError: except IOError:
pass # the file (probably stderr) is invalid - this warning gets lost. pass # the file (probably stderr) is invalid - this warning gets lost.
# Keep a worrking version around in case the deprecation of the old API is # Keep a working version around in case the deprecation of the old API is
# triggered. # triggered.
showwarning = _show_warning showwarning = _show_warning