B t `ã@sbddlZddlmZejdkr"eZdd„Zdd„ZejdkrNdd „Zd d „Z nd d „Zd d „Z dS)éN)Úmisc)ércCstg}t|ƒdkr0x^|dD]}| |g¡qWn@t|dd…ƒ}x.|dD]"}x|D]}| |g|¡qTWqJW|S)zK Function used by cross() to generate the cross-product of a tuple érN)ÚlenÚappendÚ _cross_exec)Ú set_tupleZ resulting_setÚvalÚtmp_setÚitem©r ú7/tmp/pip-unpacked-wheel-cqckmaqz/pyutilib/misc/cross.pyrs  rcCs,g}t|ƒ}x|D]}| t|ƒ¡qW|S)z8 Returns the cross-product of a tuple of values )rrÚtuple)rZ result_setr r r r r Úcross"s  rc gs tt|ƒ}dd„|Dƒ}x‚t|dd…ƒVxjtt|ƒdddƒD]P}y|| ¡||<PWqBtk rt||ƒ||<|| ¡||<YqBXqBWPqWdS)zŽ An iterator function that generates a cross product of a set. Derived from code developed by Steven Taschuk cSsg|] }| ¡‘qSr )Únext)Ú.0Úitr r r ú <szcross_iter..Nréÿÿÿÿ)ÚmapÚiterrÚxrangerrÚ StopIteration)ÚsetsÚwheelsÚdigitsÚir r r Ú cross_iter4s rc gsªtt|ƒ}dd„|Dƒ}t|ƒ}x„t t|dd…ƒ¡Vxft|dddƒD]P}y|| ¡||<PWqLtk ršt||ƒ||<|| ¡||<YqLXqLWPq"WdS)zh An iterator function that generates a cross product of a set, and flattens it. cSsg|] }| ¡‘qSr )r)rrr r r rOsz(flattened_cross_iter..Nrr) rrrrÚ flatten_tuplerrrr)rrrÚndigitsrr r r Úflattened_cross_iterIs r c gs¤ttt|ƒƒ}dd„|Dƒ}x‚t|dd…ƒVxjtt|ƒdddƒD]P}yt||ƒ||<PWqFtk r”t||ƒ||<t||ƒ||<YqFXqFWPqWdS)zŽ An iterator function that generates a cross product of a set. Derived from code developed by Steven Taschuk cSsg|] }t|ƒ‘qSr )r)rrr r r rgszcross_iter..Nrr)ÚlistrrrÚrangerrr)rrrrr r r r_sc gs®ttt|ƒƒ}dd„|Dƒ}t|ƒ}x„t t|dd…ƒ¡Vxft|dddƒD]P}yt||ƒ||<PWqPt k ržt||ƒ||<t||ƒ||<YqPXqPWPq&WdS)zh An iterator function that generates a cross product of a set, and flattens it. cSsg|] }t|ƒ‘qSr )r)rrr r r rzsz(flattened_cross_iter..Nrr) r!rrrrrrr"rr)rrrrrr r r r ts) ÚsysZ pyutilib.miscrÚ version_infor"rrrrr r r r r Ú s