§
    Ñ! hÞ  ã                  óR   — d dl mZ d dlmZ d dlZd dlmZ erd dlm	Z	 dd„Z
dd„ZdS )é    )Úannotations)ÚTYPE_CHECKINGN)Úis_list_like)ÚNumpyIndexTÚreturnúlist[np.ndarray]c                óD  ‡‡— d}t          | ¦  «        st          |¦  «        ‚| D ] }t          |¦  «        st          |¦  «        ‚Œ!t          | ¦  «        dk    rg S t          j        d„ | D ¦   «         t          j        ¬¦  «        }t          j        |¦  «        }t          j        |dk     ¦  «        rt          d¦  «        ‚t          j	        |d¦  «        Šd‰d<   |d         dk    r|d         |z  Šnt          j
        |¦  «        Šˆˆfd„t          | ¦  «        D ¦   «         S )	añ  
    Numpy version of itertools.product.
    Sometimes faster (for large inputs)...

    Parameters
    ----------
    X : list-like of list-likes

    Returns
    -------
    product : list of ndarrays

    Examples
    --------
    >>> cartesian_product([list('ABC'), [1, 2]])
    [array(['A', 'A', 'B', 'B', 'C', 'C'], dtype='<U1'), array([1, 2, 1, 2, 1, 2])]

    See Also
    --------
    itertools.product : Cartesian product of input iterables.  Equivalent to
        nested for-loops.
    z'Input must be a list-like of list-likesr   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S )N)Úlen)Ú.0Úxs     úRc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\pandas/core/reshape/util.pyú	<genexpr>z$cartesian_product.<locals>.<genexpr>.   s(   è è € Ð*Ð* 1�˜A™œÐ*Ð*Ð*Ð*Ð*Ð*ó    )Údtypez+Product space too large to allocate arrays!é   éÿÿÿÿc           	     ó˜   •— g | ]F\  }}t          t          j        |‰|         ¦  «        t          j        ‰|         ¦  «        ¦  «        ‘ŒGS © )Útile_compatÚnpÚrepeatÚprod)r   Úir   ÚaÚbs      €€r   ú
<listcomp>z%cartesian_product.<locals>.<listcomp>?   s[   ø€ ð ð ð ñ
 ˆAˆqõ	 	ÝŒI�a˜˜1œÑÔÝŒG�A�a”D‰MŒMñ	
ô 	
ðð ð r   )r   Ú	TypeErrorr   r   ÚfromiterÚintpÚcumprodÚanyÚ
ValueErrorÚrollÚ
zeros_likeÚ	enumerate)ÚXÚmsgr   ÚlenXÚcumprodXr   r   s        @@r   Úcartesian_productr+      sE  øø€ ð. 4€CÝ˜‰?Œ?ð Ý˜‰nŒnÐØð !ð !ˆÝ˜A‰Œð 	!Ý˜C‘.”.Ð ð	!õ ˆ1�v„v�‚{€{Øˆ	åŒ;Ð*Ð*¨Ð*Ñ*Ô*µ"´'Ð:Ñ:Ô:€DÝŒz˜$ÑÔ€Hå	„vˆh˜ŠlÑÔð HÝÐFÑGÔGÐGå
Œ�˜!ÑÔ€AØ€A€a�Dà�„|�qÒÐØ�RŒL˜8Ñ#ˆˆõ ŒM˜(Ñ#Ô#ˆðð ð ð ð õ
 ˜a‘L”Lðñ ô ð r   Úarrr   ÚnumÚintc                óò   — t          | t          j        ¦  «        rt          j        | |¦  «        S t          j        t          j        t          | ¦  «        ¦  «        |¦  «        }|                      |¦  «        S )zf
    Index compat for np.tile.

    Notes
    -----
    Does not support multi-dimensional `num`.
    )Ú
isinstancer   ÚndarrayÚtileÚaranger   Útake)r,   r-   Útakers      r   r   r   H   s]   € õ �#•r”zÑ"Ô"ð !ÝŒw�s˜CÑ Ô Ð õ ŒG•B”I�c #™hœhÑ'Ô'¨Ñ-Ô-€EØ�8Š8�E‰?Œ?Ðr   )r   r   )r,   r   r-   r.   r   r   )Ú
__future__r   Útypingr   Únumpyr   Úpandas.core.dtypes.commonr   Úpandas._typingr   r+   r   r   r   r   ú<module>r;      s”   ðØ "Ð "Ð "Ð "Ð "Ð "à  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð à 2Ð 2Ð 2Ð 2Ð 2Ð 2àð +Ø*Ð*Ð*Ð*Ð*Ð*ð8ð 8ð 8ð 8ðvð ð ð ð ð r   