ctypedef fused sequence: list tuple object def unpack_one(sequence it): """ >>> items = [1] >>> unpack_one(items) 1 >>> unpack_one(iter(items)) 1 >>> unpack_one(list(items)) 1 >>> unpack_one(tuple(items)) 1 """ a, = it return a def unpack_two(sequence it): """ >>> items = [1,2] >>> unpack_two(items) (1, 2) >>> unpack_two(iter(items)) (1, 2) >>> unpack_two(list(items)) (1, 2) >>> unpack_two(tuple(items)) (1, 2) """ a,b = it return a,b def unpack_two_int(sequence it): """ >>> items = [1,2] >>> unpack_two_int(items) (1, 2) >>> unpack_two_int(iter(items)) (1, 2) >>> unpack_two_int(list(items)) (1, 2) >>> unpack_two_int(tuple(items)) (1, 2) >>> items = [1, object()] >>> unpack_two_int(items) # doctest: +ELLIPSIS Traceback (most recent call last): TypeError: ...int... >>> unpack_two_int(iter(items)) # doctest: +ELLIPSIS Traceback (most recent call last): TypeError: ...int... >>> unpack_two_int(list(items)) # doctest: +ELLIPSIS Traceback (most recent call last): TypeError: ...int... >>> unpack_two_int(tuple(items)) # doctest: +ELLIPSIS Traceback (most recent call last): TypeError: ...int... """ cdef int b a,b = it return a,b def unpack_many(sequence it): """ >>> items = range(1,13) >>> unpack_many(items) (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) >>> unpack_many(iter(items)) (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) >>> unpack_many(list(items)) (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) >>> unpack_many(tuple(items)) (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) """ a,b,c,d,e,f,g,h,i,j,k,l = it return a,b,c,d,e,f,g,h,i,j,k,l def unpack_many_int(sequence it): """ >>> items = range(1,13) >>> unpack_many_int(items) (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) >>> unpack_many_int(iter(items)) (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) >>> unpack_many_int(list(items)) (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) >>> unpack_many_int(tuple(items)) (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) >>> items = range(1,10) >>> unpack_many_int(items) Traceback (most recent call last): ValueError: need more than 9 values to unpack >>> unpack_many_int(iter(items)) Traceback (most recent call last): ValueError: need more than 9 values to unpack >>> unpack_many_int(list(items)) Traceback (most recent call last): ValueError: need more than 9 values to unpack >>> unpack_many_int(tuple(items)) Traceback (most recent call last): ValueError: need more than 9 values to unpack """ cdef int b cdef long f cdef Py_ssize_t h a,b,c,d,e,f,g,h,i,j,k,l = it return a,b,c,d,e,f,g,h,i,j,k,l