
    Mh                    ^    S SK Jr  S SKJr  S SKrS SKJr  \(       a  S SKJ	r	  SS jr
S	S jrg)
    )annotations)TYPE_CHECKINGN)is_list_like)NumpyIndexTc                   Sn[        U 5      (       d  [        U5      eU  H  n[        U5      (       a  M  [        U5      e   [        U 5      S:X  a  / $ [        R                  " S U  5       [        R
                  S9n[        R                  " U5      n[        R                  " US:  5      (       a  [        S5      e[        R                  " US5      nSUS'   US   S:w  a	  US   U-  nO[        R                  " U5      n[        U 5       VVs/ s H>  u  pr[        [        R                  " X&U   5      [        R                  " XW   5      5      PM@     snn$ s  snnf )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  8   #    U  H  n[        U5      v   M     g 7f)N)len).0xs     J/var/www/html/env/lib/python3.13/site-packages/pandas/core/reshape/util.py	<genexpr>$cartesian_product.<locals>.<genexpr>.   s     *1As   )dtypez+Product space too large to allocate arrays!   )r   	TypeErrorr	   npfromiterintpcumprodany
ValueErrorroll
zeros_like	enumeratetile_compatrepeatprod)Xmsgr   lenXcumprodXabis           r   cartesian_productr&      s(   . 4C??nAC.   1v{	;;**"'':Dzz$H	vvhlFGG
!AAaD|qRL8# MM(# aL
 !DA	 	IIa1GGADM	
 !  s   AEc                    [        U [        R                  5      (       a  [        R                  " X5      $ [        R                  " [        R                  " [        U 5      5      U5      nU R                  U5      $ )zR
Index compat for np.tile.

Notes
-----
Does not support multi-dimensional `num`.
)
isinstancer   ndarraytilearanger	   take)arrnumtakers      r   r   r   H   sQ     #rzz""wws   GGBIIc#h'-E88E?    )returnzlist[np.ndarray])r-   r   r.   intr1   r   )
__future__r   typingr   numpyr   pandas.core.dtypes.commonr   pandas._typingr   r&   r    r0   r   <module>r9      s"    "    2*8vr0   