Merged revisions 79674 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r79674 | mark.dickinson | 2010-04-03 15:05:10 +0100 (Sat, 03 Apr 2010) | 3 lines

  Issue #8300:  Let struct.pack use __index__ to convert and pack non-integers.
  Based on a patch by Meador Inge.
........
This commit is contained in:
Mark Dickinson 2010-04-03 15:54:36 +00:00
parent 089b00cbc3
commit c593577a4a
4 changed files with 50 additions and 4 deletions

View file

@ -282,6 +282,23 @@ class StructTest(unittest.TestCase):
struct.pack, self.format,
NotAnInt)
# Objects with an '__index__' method should be allowed
# to pack as integers.
class Indexable(object):
def __init__(self, value):
self._value = value
def __index__(self):
return self._value
for obj in (Indexable(0), Indexable(10), Indexable(17),
Indexable(42), Indexable(100), Indexable(127)):
try:
struct.pack(format, obj)
except:
self.fail("integer code pack failed on object "
"with '__index__' method")
for code in integer_codes:
for byteorder in byteorders:
if (byteorder in ('', '@') and code in ('q', 'Q') and