mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	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. ........
		
			
				
	
	
		
			130 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			130 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)
 |