
    `Vg                    @    d dl mZ d dlZd dlmZ d dlmZ ddZddZ	y)	    )annotationsN)NumpyIndexT)is_list_likec                   d}t        |       st        |      | D ]  }t        |      r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k7  r	|d   |z  }nt        j                  |      }t        |       D cg c]>  \  }}t        t        j                  |||         t        j                  ||               @ c}}S c c}}w )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  2   K   | ]  }t        |        y w)N)len).0xs     Y/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/pandas/core/reshape/util.py	<genexpr>z$cartesian_product.<locals>.<genexpr>+   s     *1A*s   )dtypez+Product space too large to allocate arrays!   )r   	TypeErrorr   npfromiterintp
cumproductany
ValueErrorroll
zeros_like	enumeratetile_compatrepeatproduct)Xmsgr
   lenXcumprodXabis           r   cartesian_productr$   
   s&   . 4C?n !AC. ! 1v{	;;**"'':D}}T"H	vvhlFGG
!AAaD|qRL8# MM(# aL
 Aq	 	IIa1JJqt	
  s   9AE c                    t        | t        j                        rt        j                  | |      S t        j                  t        j                  t        |             |      }| j                  |      S )zf
    Index compat for np.tile.

    Notes
    -----
    Does not support multi-dimensional `num`.
    )
isinstancer   ndarraytilearanger   take)arrnumtakers      r   r   r   E   sP     #rzz"wwsC   GGBIIc#h'-E88E?    )returnzlist[np.ndarray])r+   r   r,   intr/   r   )

__future__r   numpyr   pandas._typingr   pandas.core.dtypes.commonr   r$   r    r.   r   <module>r6      s    "  & 28vr.   