mirror of
https://github.com/python/cpython.git
synced 2024-11-26 03:14:27 +08:00
05e8be17fd
svn+ssh://pythondev@svn.python.org/python/trunk ........ r60990 | eric.smith | 2008-02-23 17:05:26 +0100 (Sat, 23 Feb 2008) | 1 line Removed duplicate Py_CHARMASK define. It's already defined in Python.h. ........ r60991 | andrew.kuchling | 2008-02-23 17:23:05 +0100 (Sat, 23 Feb 2008) | 4 lines #1330538: Improve comparison of xmlrpclib.DateTime and datetime instances. Remove automatic handling of datetime.date and datetime.time. This breaks backward compatibility, but python-dev discussion was strongly against this automatic conversion; see the bug for a link. ........ r60994 | andrew.kuchling | 2008-02-23 17:39:43 +0100 (Sat, 23 Feb 2008) | 1 line #835521: Add index entries for various pickle-protocol methods and attributes ........ r60995 | andrew.kuchling | 2008-02-23 18:10:46 +0100 (Sat, 23 Feb 2008) | 2 lines #1433694: minidom's .normalize() failed to set .nextSibling for last element. Fix by Malte Helmert ........ r61000 | christian.heimes | 2008-02-23 18:40:11 +0100 (Sat, 23 Feb 2008) | 1 line Patch #2167 from calvin: Remove unused imports ........ r61001 | christian.heimes | 2008-02-23 18:42:31 +0100 (Sat, 23 Feb 2008) | 1 line Patch #1957: syslogmodule: Release GIL when calling syslog(3) ........ r61002 | christian.heimes | 2008-02-23 18:52:07 +0100 (Sat, 23 Feb 2008) | 2 lines Issue #2051 and patch from Alexander Belopolsky: Permission for pyc and pyo files are inherited from the py file. ........
131 lines
2.5 KiB
Python
131 lines
2.5 KiB
Python
doctests = """
|
|
|
|
Unpack tuple
|
|
|
|
>>> t = (1, 2, 3)
|
|
>>> a, b, c = t
|
|
>>> a == 1 and b == 2 and c == 3
|
|
True
|
|
|
|
Unpack list
|
|
|
|
>>> l = [4, 5, 6]
|
|
>>> a, b, c = l
|
|
>>> a == 4 and b == 5 and c == 6
|
|
True
|
|
|
|
Unpack implied tuple
|
|
|
|
>>> a, b, c = 7, 8, 9
|
|
>>> a == 7 and b == 8 and c == 9
|
|
True
|
|
|
|
Unpack string... fun!
|
|
|
|
>>> a, b, c = 'one'
|
|
>>> a == 'o' and b == 'n' and c == 'e'
|
|
True
|
|
|
|
Unpack generic sequence
|
|
|
|
>>> class Seq:
|
|
... def __getitem__(self, i):
|
|
... if i >= 0 and i < 3: return i
|
|
... raise IndexError
|
|
...
|
|
>>> a, b, c = Seq()
|
|
>>> a == 0 and b == 1 and c == 2
|
|
True
|
|
|
|
Single element unpacking, with extra syntax
|
|
|
|
>>> st = (99,)
|
|
>>> sl = [100]
|
|
>>> a, = st
|
|
>>> a
|
|
99
|
|
>>> b, = sl
|
|
>>> b
|
|
100
|
|
|
|
Now for some failures
|
|
|
|
Unpacking non-sequence
|
|
|
|
>>> a, b, c = 7
|
|
Traceback (most recent call last):
|
|
...
|
|
TypeError: 'int' object is not iterable
|
|
|
|
Unpacking tuple of wrong size
|
|
|
|
>>> a, b = t
|
|
Traceback (most recent call last):
|
|
...
|
|
ValueError: too many values to unpack
|
|
|
|
Unpacking tuple of wrong size
|
|
|
|
>>> a, b = l
|
|
Traceback (most recent call last):
|
|
...
|
|
ValueError: too many values to unpack
|
|
|
|
Unpacking sequence too short
|
|
|
|
>>> a, b, c, d = Seq()
|
|
Traceback (most recent call last):
|
|
...
|
|
ValueError: need more than 3 values to unpack
|
|
|
|
Unpacking sequence too long
|
|
|
|
>>> a, b = Seq()
|
|
Traceback (most recent call last):
|
|
...
|
|
ValueError: too many values to unpack
|
|
|
|
Unpacking a sequence where the test for too long raises a different kind of
|
|
error
|
|
|
|
>>> class BozoError(Exception):
|
|
... pass
|
|
...
|
|
>>> class BadSeq:
|
|
... def __getitem__(self, i):
|
|
... if i >= 0 and i < 3:
|
|
... return i
|
|
... elif i == 3:
|
|
... raise BozoError
|
|
... else:
|
|
... raise IndexError
|
|
...
|
|
|
|
Trigger code while not expecting an IndexError (unpack sequence too long, wrong
|
|
error)
|
|
|
|
>>> a, b, c, d, e = BadSeq()
|
|
Traceback (most recent call last):
|
|
...
|
|
test.test_unpack.BozoError
|
|
|
|
Trigger code while expecting an IndexError (unpack sequence too short, wrong
|
|
error)
|
|
|
|
>>> a, b, c = BadSeq()
|
|
Traceback (most recent call last):
|
|
...
|
|
test.test_unpack.BozoError
|
|
|
|
"""
|
|
|
|
__test__ = {'doctests' : doctests}
|
|
|
|
def test_main(verbose=False):
|
|
from test import test_support
|
|
from test import test_unpack
|
|
test_support.run_doctest(test_unpack, verbose)
|
|
|
|
if __name__ == "__main__":
|
|
test_main(verbose=True)
|