§
    è‘ju˜  ã                  ó”   — d dl mZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ erd dlmZ d dlmZ d d	lmZmZ  G d
„ d¦  «        ZdS )é    )Úannotations)ÚSequence)ÚTYPE_CHECKING)Ú	functions)Úparse_into_expression)Ú	wrap_expr)ÚCallable)ÚExpr)ÚIntoExprÚIntoExprColumnc                  ót  — e Zd ZdZdZdOd„ZdPd„Z	 dQd
dœdRd„ZdSd
dœdTd„ZdSd
dœdTd„Z	dPd„Z
dPd„ZdPd„ZdUdVd„ZdUdVd„ZdPd„ZdPd „Zd
d!œdWd#„ZdPd$„ZdPd%„Zd&d'œdXd)„Zd&d'œdXd*„Zd
d
d+œdYd.„ZdPd/„ZdPd0„ZdPd1„Zd
d2œdZd6„ZdPd7„ZdPd8„Zd&d'œd[d;„Zd&d&d<œd\d?„Zd&d@œd]dD„Zd^dF„Z 	 dQd_dI„Z!dUd`dJ„Z"d
dKœdadM„Z#dbdN„Z$d	S )cÚExprArrayNameSpacez(Namespace for array related expressions.ÚarrÚexprr
   ÚreturnÚNonec                ó   — |j         | _         d S ©N)Ú_pyexpr©Úselfr   s     úV/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/polars/expr/array.pyÚ__init__zExprArrayNameSpace.__init__   s   € Ø”|ˆŒˆˆó    c                óN   — t          | j                             ¦   «         ¦  «        S )uò  
        Return the number of elements in each array.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     data={"a": [[1, 2], [4, 3]]},
        ...     schema={"a": pl.Array(pl.Int64, 2)},
        ... )
        >>> df.select(pl.col("a").arr.len())
        shape: (2, 1)
        â”Œâ”€â”€â”€â”€â”€â”
        â”‚ a   â”‚
        â”‚ --- â”‚
        â”‚ u32 â”‚
        â•žâ•â•â•â•â•â•¡
        â”‚ 2   â”‚
        â”‚ 2   â”‚
        â””â”€â”€â”€â”€â”€â”˜
        )r   r   Úarr_len©r   s    r   ÚlenzExprArrayNameSpace.len   ó    € õ* ˜œ×-Ò-Ñ/Ô/Ñ0Ô0Ð0r   NF©Úas_arrayÚoffsetúint | str | ExprÚlengthúint | str | Expr | Noner!   Úboolc               ó˜   — t          |¦  «        }|t          |¦  «        nd}t          | j                             |||¦  «        ¦  «        S )uù  
        Slice every subarray.

        Parameters
        ----------
        offset
            Start index. Negative indexing is supported.
        length
            Length of the slice. If set to `None` (default), the slice is taken to the
            end of the list.
        as_array
            Return result as a fixed-length `Array`, otherwise as a `List`.
            If true `length` and `offset` must be constant values.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     data={"a": [[1, 2], [4, 3]]},
        ...     schema={"a": pl.Array(pl.Int64, 2)},
        ... )
        >>> df.select(pl.col("a").arr.slice(0, 1))
        shape: (2, 1)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a         â”‚
        â”‚ ---       â”‚
        â”‚ list[i64] â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [1]       â”‚
        â”‚ [4]       â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        >>> df = pl.DataFrame(
        ...     data={"a": [[1, 2], [4, 3]]},
        ...     schema={"a": pl.Array(pl.Int64, 2)},
        ... )
        >>> df.select(pl.col("a").arr.slice(0, 1, as_array=True))
        shape: (2, 1)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”‚
        â”‚ ---           â”‚
        â”‚ array[i64, 1] â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [1]           â”‚
        â”‚ [4]           â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        N)r   r   r   Ú	arr_slice)r   r"   r$   r!   Úoffset_pyexprÚlength_pyexprs         r   ÚslicezExprArrayNameSpace.slice0   sM   € õh .¨fÑ5Ô5ˆØ9?Ð9KÕ-¨fÑ5Ô5Ð5ÐQUˆÝ˜œ×/Ò/°¸}ÈhÑWÔWÑXÔXÐXr   é   Únc               ó2   — |                       d||¬¦  «        S )up  
        Get the first `n` elements of the sub-arrays.

        Parameters
        ----------
        n
            Number of values to return for each sublist.
        as_array
            Return result as a fixed-length `Array`, otherwise as a `List`.
            If true `n` must be a constant value.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     data={"a": [[1, 2], [4, 3]]},
        ...     schema={"a": pl.Array(pl.Int64, 2)},
        ... )
        >>> df.select(pl.col("a").arr.head(1))
        shape: (2, 1)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a         â”‚
        â”‚ ---       â”‚
        â”‚ list[i64] â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [1]       â”‚
        â”‚ [4]       â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        >>> df = pl.DataFrame(
        ...     data={"a": [[1, 2], [4, 3]]},
        ...     schema={"a": pl.Array(pl.Int64, 2)},
        ... )
        >>> df.select(pl.col("a").arr.head(1, as_array=True))
        shape: (2, 1)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”‚
        â”‚ ---           â”‚
        â”‚ array[i64, 1] â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [1]           â”‚
        â”‚ [4]           â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        r   r    )r+   )r   r-   r!   s      r   ÚheadzExprArrayNameSpace.headh   s   € ðV zŠz˜!˜Q¨ˆzÑ2Ô2Ð2r   c               óp   — t          |¦  «        }t          | j                             ||¦  «        ¦  «        S )un  
        Slice the last `n` values of every sublist.

        Parameters
        ----------
        n
            Number of values to return for each sublist.
        as_array
            Return result as a fixed-length `Array`, otherwise as a `List`.
            If true `n` must be a constant value.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     data={"a": [[1, 2], [4, 3]]},
        ...     schema={"a": pl.Array(pl.Int64, 2)},
        ... )
        >>> df.select(pl.col("a").arr.tail(1))
        shape: (2, 1)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a         â”‚
        â”‚ ---       â”‚
        â”‚ list[i64] â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [2]       â”‚
        â”‚ [3]       â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        >>> df = pl.DataFrame(
        ...     data={"a": [[1, 2], [4, 3]]},
        ...     schema={"a": pl.Array(pl.Int64, 2)},
        ... )
        >>> df.select(pl.col("a").arr.tail(1, as_array=True))
        shape: (2, 1)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”‚
        â”‚ ---           â”‚
        â”‚ array[i64, 1] â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [2]           â”‚
        â”‚ [3]           â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        )r   r   r   Úarr_tail)r   r-   r!   Ún_pyexprs       r   ÚtailzExprArrayNameSpace.tail•   s2   € õV )¨Ñ+Ô+ˆÝ˜œ×.Ò.¨x¸ÑBÔBÑCÔCÐCr   c                óN   — t          | j                             ¦   «         ¦  «        S )uï  
        Compute the min values of the sub-arrays.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     data={"a": [[1, 2], [4, 3]]},
        ...     schema={"a": pl.Array(pl.Int64, 2)},
        ... )
        >>> df.select(pl.col("a").arr.min())
        shape: (2, 1)
        â”Œâ”€â”€â”€â”€â”€â”
        â”‚ a   â”‚
        â”‚ --- â”‚
        â”‚ i64 â”‚
        â•žâ•â•â•â•â•â•¡
        â”‚ 1   â”‚
        â”‚ 3   â”‚
        â””â”€â”€â”€â”€â”€â”˜
        )r   r   Úarr_minr   s    r   ÚminzExprArrayNameSpace.minÃ   r   r   c                óN   — t          | j                             ¦   «         ¦  «        S )uï  
        Compute the max values of the sub-arrays.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     data={"a": [[1, 2], [4, 3]]},
        ...     schema={"a": pl.Array(pl.Int64, 2)},
        ... )
        >>> df.select(pl.col("a").arr.max())
        shape: (2, 1)
        â”Œâ”€â”€â”€â”€â”€â”
        â”‚ a   â”‚
        â”‚ --- â”‚
        â”‚ i64 â”‚
        â•žâ•â•â•â•â•â•¡
        â”‚ 2   â”‚
        â”‚ 4   â”‚
        â””â”€â”€â”€â”€â”€â”˜
        )r   r   Úarr_maxr   s    r   ÚmaxzExprArrayNameSpace.maxÚ   r   r   c                óN   — t          | j                             ¦   «         ¦  «        S )uï  
        Compute the sum values of the sub-arrays.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     data={"a": [[1, 2], [4, 3]]},
        ...     schema={"a": pl.Array(pl.Int64, 2)},
        ... )
        >>> df.select(pl.col("a").arr.sum())
        shape: (2, 1)
        â”Œâ”€â”€â”€â”€â”€â”
        â”‚ a   â”‚
        â”‚ --- â”‚
        â”‚ i64 â”‚
        â•žâ•â•â•â•â•â•¡
        â”‚ 3   â”‚
        â”‚ 7   â”‚
        â””â”€â”€â”€â”€â”€â”˜
        )r   r   Úarr_sumr   s    r   ÚsumzExprArrayNameSpace.sumñ   r   r   é   ÚddofÚintc                óP   — t          | j                             |¦  «        ¦  «        S )u<  
        Compute the std of the values of the sub-arrays.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     data={"a": [[1, 2], [4, 3]]},
        ...     schema={"a": pl.Array(pl.Int64, 2)},
        ... )
        >>> df.select(pl.col("a").arr.std())
        shape: (2, 1)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a        â”‚
        â”‚ ---      â”‚
        â”‚ f64      â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ 0.707107 â”‚
        â”‚ 0.707107 â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        )r   r   Úarr_std©r   r>   s     r   ÚstdzExprArrayNameSpace.std  ó"   € õ* ˜œ×-Ò-¨dÑ3Ô3Ñ4Ô4Ð4r   c                óP   — t          | j                             |¦  «        ¦  «        S )uö  
        Compute the var of the values of the sub-arrays.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     data={"a": [[1, 2], [4, 3]]},
        ...     schema={"a": pl.Array(pl.Int64, 2)},
        ... )
        >>> df.select(pl.col("a").arr.var())
        shape: (2, 1)
        â”Œâ”€â”€â”€â”€â”€â”
        â”‚ a   â”‚
        â”‚ --- â”‚
        â”‚ f64 â”‚
        â•žâ•â•â•â•â•â•¡
        â”‚ 0.5 â”‚
        â”‚ 0.5 â”‚
        â””â”€â”€â”€â”€â”€â”˜
        )r   r   Úarr_varrB   s     r   ÚvarzExprArrayNameSpace.var  rD   r   c                óN   — t          | j                             ¦   «         ¦  «        S )uÿ  
        Compute the mean of the values of the sub-arrays.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     data={"a": [[1, 2, 3], [1, 1, 16]]},
        ...     schema={"a": pl.Array(pl.Int64, 3)},
        ... )
        >>> df.select(pl.col("a").arr.mean())
        shape: (2, 1)
        â”Œâ”€â”€â”€â”€â”€â”
        â”‚ a   â”‚
        â”‚ --- â”‚
        â”‚ f64 â”‚
        â•žâ•â•â•â•â•â•¡
        â”‚ 2.0 â”‚
        â”‚ 6.0 â”‚
        â””â”€â”€â”€â”€â”€â”˜
        )r   r   Úarr_meanr   s    r   ÚmeanzExprArrayNameSpace.mean6  s    € õ* ˜œ×.Ò.Ñ0Ô0Ñ1Ô1Ð1r   c                óN   — t          | j                             ¦   «         ¦  «        S )uü  
        Compute the median of the values of the sub-arrays.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     data={"a": [[1, 2], [4, 3]]},
        ...     schema={"a": pl.Array(pl.Int64, 2)},
        ... )
        >>> df.select(pl.col("a").arr.median())
        shape: (2, 1)
        â”Œâ”€â”€â”€â”€â”€â”
        â”‚ a   â”‚
        â”‚ --- â”‚
        â”‚ f64 â”‚
        â•žâ•â•â•â•â•â•¡
        â”‚ 1.5 â”‚
        â”‚ 3.5 â”‚
        â””â”€â”€â”€â”€â”€â”˜
        )r   r   Ú
arr_medianr   s    r   ÚmedianzExprArrayNameSpace.medianM  s    € õ* ˜œ×0Ò0Ñ2Ô2Ñ3Ô3Ð3r   )Úmaintain_orderrN   c               óP   — t          | j                             |¦  «        ¦  «        S )uÇ  
        Get the unique/distinct values in the array.

        Parameters
        ----------
        maintain_order
            Maintain order of data. This requires more work.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     {
        ...         "a": [[1, 1, 2]],
        ...     },
        ...     schema={"a": pl.Array(pl.Int64, 3)},
        ... )
        >>> df.select(pl.col("a").arr.unique())
        shape: (1, 1)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a         â”‚
        â”‚ ---       â”‚
        â”‚ list[i64] â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [1, 2]    â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        )r   r   Ú
arr_unique)r   rN   s     r   ÚuniquezExprArrayNameSpace.uniqued  s"   € õ6 ˜œ×0Ò0°Ñ@Ô@ÑAÔAÐAr   c                óN   — t          | j                             ¦   «         ¦  «        S )uh  
        Count the number of unique values in every sub-arrays.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     {
        ...         "a": [[1, 1, 2], [2, 3, 4]],
        ...     },
        ...     schema={"a": pl.Array(pl.Int64, 3)},
        ... )
        >>> df.with_columns(n_unique=pl.col("a").arr.n_unique())
        shape: (2, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”† n_unique â”‚
        â”‚ ---           â”† ---      â”‚
        â”‚ array[i64, 3] â”† u32      â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [1, 1, 2]     â”† 2        â”‚
        â”‚ [2, 3, 4]     â”† 3        â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        )r   r   Úarr_n_uniquer   s    r   Ún_uniquezExprArrayNameSpace.n_unique  s    € õ. ˜œ×2Ò2Ñ4Ô4Ñ5Ô5Ð5r   c                óN   — t          | j                             ¦   «         ¦  «        S )u¹  
        Convert an Array column into a List column with the same inner data type.

        Returns
        -------
        Expr
            Expression of data type :class:`List`.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     data={"a": [[1, 2], [3, 4]]},
        ...     schema={"a": pl.Array(pl.Int8, 2)},
        ... )
        >>> df.select(pl.col("a").arr.to_list())
        shape: (2, 1)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a        â”‚
        â”‚ ---      â”‚
        â”‚ list[i8] â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [1, 2]   â”‚
        â”‚ [3, 4]   â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        )r   r   Úarr_to_listr   s    r   Úto_listzExprArrayNameSpace.to_listš  s    € õ4 ˜œ×1Ò1Ñ3Ô3Ñ4Ô4Ð4r   T©Úignore_nullsrY   c               óv   — |                       t          j        ¦   «                              |¬¦  «        ¦  «        S )uT  
        Evaluate whether any boolean value is true for every subarray.

        Parameters
        ----------
        ignore_nulls
            * If set to `True` (default), null values are ignored. If there
              are no non-null values, the output is `False`.
            * If set to `False`, `Kleene logic`_ is used to deal with nulls:
              if the column contains any null values and no `True` values,
              the output is null.

            .. _Kleene logic: https://en.wikipedia.org/wiki/Three-valued_logic

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     data={
        ...         "a": [
        ...             [True, True],
        ...             [False, True],
        ...             [False, False],
        ...             [None, None],
        ...             None,
        ...         ]
        ...     },
        ...     schema={"a": pl.Array(pl.Boolean, 2)},
        ... )
        >>> df.with_columns(any=pl.col("a").arr.any())
        shape: (5, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a              â”† any   â”‚
        â”‚ ---            â”† ---   â”‚
        â”‚ array[bool, 2] â”† bool  â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•¡
        â”‚ [true, true]   â”† true  â”‚
        â”‚ [false, true]  â”† true  â”‚
        â”‚ [false, false] â”† false â”‚
        â”‚ [null, null]   â”† false â”‚
        â”‚ null           â”† null  â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”˜
        rX   )ÚaggÚFÚelementÚany©r   rY   s     r   r^   zExprArrayNameSpace.any¶  ó+   € ðV xŠxœ	™œŸš°\˜ÑBÔBÑCÔCÐCr   c               óv   — |                       t          j        ¦   «                              |¬¦  «        ¦  «        S )uV  
        Evaluate whether all boolean values are true for every subarray.

        Parameters
        ----------
        ignore_nulls
            * If set to `True` (default), null values are ignored. If there
              are no non-null values, the output is `True`.
            * If set to `False`, `Kleene logic`_ is used to deal with nulls:
              if the column contains any null values and no `False` values,
              the output is null.

            .. _Kleene logic: https://en.wikipedia.org/wiki/Three-valued_logic

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     data={
        ...         "a": [
        ...             [True, True],
        ...             [False, True],
        ...             [False, False],
        ...             [None, None],
        ...             None,
        ...         ]
        ...     },
        ...     schema={"a": pl.Array(pl.Boolean, 2)},
        ... )
        >>> df.with_columns(all=pl.col("a").arr.all())
        shape: (5, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a              â”† all   â”‚
        â”‚ ---            â”† ---   â”‚
        â”‚ array[bool, 2] â”† bool  â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•¡
        â”‚ [true, true]   â”† true  â”‚
        â”‚ [false, true]  â”† false â”‚
        â”‚ [false, false] â”† false â”‚
        â”‚ [null, null]   â”† true  â”‚
        â”‚ null           â”† null  â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”˜
        rX   )r[   r\   r]   Úallr_   s     r   rb   zExprArrayNameSpace.allã  r`   r   )Ú
descendingÚ
nulls_lastrc   rd   c               óR   — t          | j                             ||¦  «        ¦  «        S )u¸  
        Sort the arrays in this column.

        Parameters
        ----------
        descending
            Sort in descending order.
        nulls_last
            Place null values last.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     {
        ...         "a": [[3, 2, 1], [9, 1, 2]],
        ...     },
        ...     schema={"a": pl.Array(pl.Int64, 3)},
        ... )
        >>> df.with_columns(sort=pl.col("a").arr.sort())
        shape: (2, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”† sort          â”‚
        â”‚ ---           â”† ---           â”‚
        â”‚ array[i64, 3] â”† array[i64, 3] â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [3, 2, 1]     â”† [1, 2, 3]     â”‚
        â”‚ [9, 1, 2]     â”† [1, 2, 9]     â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        >>> df.with_columns(sort=pl.col("a").arr.sort(descending=True))
        shape: (2, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”† sort          â”‚
        â”‚ ---           â”† ---           â”‚
        â”‚ array[i64, 3] â”† array[i64, 3] â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [3, 2, 1]     â”† [3, 2, 1]     â”‚
        â”‚ [9, 1, 2]     â”† [9, 2, 1]     â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        )r   r   Úarr_sort)r   rc   rd   s      r   ÚsortzExprArrayNameSpace.sort  s%   € õP ˜œ×.Ò.¨z¸:ÑFÔFÑGÔGÐGr   c                óN   — t          | j                             ¦   «         ¦  «        S )u˜  
        Reverse the arrays in this column.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     {
        ...         "a": [[3, 2, 1], [9, 1, 2]],
        ...     },
        ...     schema={"a": pl.Array(pl.Int64, 3)},
        ... )
        >>> df.with_columns(reverse=pl.col("a").arr.reverse())
        shape: (2, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”† reverse       â”‚
        â”‚ ---           â”† ---           â”‚
        â”‚ array[i64, 3] â”† array[i64, 3] â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [3, 2, 1]     â”† [1, 2, 3]     â”‚
        â”‚ [9, 1, 2]     â”† [2, 1, 9]     â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        )r   r   Úarr_reverser   s    r   ÚreversezExprArrayNameSpace.reverse:  s    € õ. ˜œ×1Ò1Ñ3Ô3Ñ4Ô4Ð4r   c                óN   — t          | j                             ¦   «         ¦  «        S )uô  
        Retrieve the index of the minimal value in every sub-array.

        Returns
        -------
        Expr
            Expression of data type :class:`UInt32` or :class:`UInt64`
            (depending on compilation).

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     {
        ...         "a": [[1, 2], [2, 1]],
        ...     },
        ...     schema={"a": pl.Array(pl.Int64, 2)},
        ... )
        >>> df.with_columns(arg_min=pl.col("a").arr.arg_min())
        shape: (2, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”† arg_min â”‚
        â”‚ ---           â”† ---     â”‚
        â”‚ array[i64, 2] â”† u32     â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•â•â•¡
        â”‚ [1, 2]        â”† 0       â”‚
        â”‚ [2, 1]        â”† 1       â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        )r   r   Úarr_arg_minr   s    r   Úarg_minzExprArrayNameSpace.arg_minS  ó    € õ: ˜œ×1Ò1Ñ3Ô3Ñ4Ô4Ð4r   c                óN   — t          | j                             ¦   «         ¦  «        S )uô  
        Retrieve the index of the maximum value in every sub-array.

        Returns
        -------
        Expr
            Expression of data type :class:`UInt32` or :class:`UInt64`
            (depending on compilation).

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     {
        ...         "a": [[1, 2], [2, 1]],
        ...     },
        ...     schema={"a": pl.Array(pl.Int64, 2)},
        ... )
        >>> df.with_columns(arg_max=pl.col("a").arr.arg_max())
        shape: (2, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”† arg_max â”‚
        â”‚ ---           â”† ---     â”‚
        â”‚ array[i64, 2] â”† u32     â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•â•â•¡
        â”‚ [1, 2]        â”† 1       â”‚
        â”‚ [2, 1]        â”† 0       â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        )r   r   Úarr_arg_maxr   s    r   Úarg_maxzExprArrayNameSpace.arg_maxr  rn   r   ©Únull_on_oobÚindexúint | IntoExprColumnrs   c               óp   — t          |¦  «        }t          | j                             ||¦  «        ¦  «        S )uk  
        Get the value by index in the sub-arrays.

        So index `0` would return the first item of every sublist
        and index `-1` would return the last item of every sublist
        if an index is out of bounds, it will return a `None`.

        Parameters
        ----------
        index
            Index to return per sub-array
        null_on_oob
            Behavior if an index is out of bounds:
            True -> set as null
            False -> raise an error

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     {"arr": [[1, 2, 3], [4, 5, 6], [7, 8, 9]], "idx": [1, -2, 0]},
        ...     schema={"arr": pl.Array(pl.Int32, 3), "idx": pl.Int32},
        ... )
        >>> df.with_columns(get=pl.col("arr").arr.get("idx", null_on_oob=True))
        shape: (3, 3)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”
        â”‚ arr           â”† idx â”† get â”‚
        â”‚ ---           â”† --- â”† --- â”‚
        â”‚ array[i32, 3] â”† i32 â”† i32 â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•ªâ•â•â•â•â•â•¡
        â”‚ [1, 2, 3]     â”† 1   â”† 2   â”‚
        â”‚ [4, 5, 6]     â”† -2  â”† 5   â”‚
        â”‚ [7, 8, 9]     â”† 0   â”† 7   â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”˜
        )r   r   r   Úarr_get)r   rt   rs   Úindex_pyexprs       r   ÚgetzExprArrayNameSpace.get‘  s2   € õF -¨UÑ3Ô3ˆÝ˜œ×-Ò-¨l¸KÑHÔHÑIÔIÐIr   c                ó0   — |                       dd¬¦  «        S )u4  
        Get the first value of the sub-arrays.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     {"a": [[1, 2, 3], [4, 5, 6], [7, 8, 9]]},
        ...     schema={"a": pl.Array(pl.Int32, 3)},
        ... )
        >>> df.with_columns(first=pl.col("a").arr.first())
        shape: (3, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”† first â”‚
        â”‚ ---           â”† ---   â”‚
        â”‚ array[i32, 3] â”† i32   â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•¡
        â”‚ [1, 2, 3]     â”† 1     â”‚
        â”‚ [4, 5, 6]     â”† 4     â”‚
        â”‚ [7, 8, 9]     â”† 7     â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”˜
        r   Trr   ©ry   r   s    r   ÚfirstzExprArrayNameSpace.first·  s   € ð, xŠx˜ tˆxÑ,Ô,Ð,r   c                ó0   — |                       dd¬¦  «        S )u"  
        Get the last value of the sub-arrays.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     {"a": [[1, 2, 3], [4, 5, 6], [7, 9, 8]]},
        ...     schema={"a": pl.Array(pl.Int32, 3)},
        ... )
        >>> df.with_columns(last=pl.col("a").arr.last())
        shape: (3, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”† last â”‚
        â”‚ ---           â”† ---  â”‚
        â”‚ array[i32, 3] â”† i32  â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•¡
        â”‚ [1, 2, 3]     â”† 3    â”‚
        â”‚ [4, 5, 6]     â”† 6    â”‚
        â”‚ [7, 9, 8]     â”† 8    â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”˜
        éÿÿÿÿTrr   r{   r   s    r   ÚlastzExprArrayNameSpace.lastÏ  s   € ð, xŠx˜¨ˆxÑ-Ô-Ð-r   Ú	separatorr   c               ót   — t          |d¬¦  «        }t          | j                             ||¦  «        ¦  «        S )u  
        Join all string items in a sub-array and place a separator between them.

        This errors if inner type of array `!= String`.

        Parameters
        ----------
        separator
            string to separate the items with
        ignore_nulls
            Ignore null values (default).

            If set to ``False``, null values will be propagated.
            If the sub-list contains any null values, the output is ``None``.

        Returns
        -------
        Expr
            Expression of data type :class:`String`.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     {"s": [["a", "b"], ["x", "y"]], "separator": ["*", "_"]},
        ...     schema={
        ...         "s": pl.Array(pl.String, 2),
        ...         "separator": pl.String,
        ...     },
        ... )
        >>> df.with_columns(join=pl.col("s").arr.join(pl.col("separator")))
        shape: (2, 3)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”
        â”‚ s             â”† separator â”† join â”‚
        â”‚ ---           â”† ---       â”† ---  â”‚
        â”‚ array[str, 2] â”† str       â”† str  â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•¡
        â”‚ ["a", "b"]    â”† *         â”† a*b  â”‚
        â”‚ ["x", "y"]    â”† _         â”† x_y  â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”˜
        T©Ú
str_as_lit)r   r   r   Úarr_join)r   r€   rY   Úseparator_pyexprs       r   ÚjoinzExprArrayNameSpace.joinç  s9   € õR 1°ÀtÐLÑLÔLÐÝ˜œ×.Ò.Ð/?ÀÑNÔNÑOÔOÐOr   ©Úempty_as_nullÚ
keep_nullsrˆ   r‰   c               óT   — t          | j                             ||¬¦  «        ¦  «        S )uj  
        Returns a column with a separate row for every array element.

        Parameters
        ----------
        empty_as_null
            Explode an empty array into a `null`.
        keep_nulls
            Explode a `null` array into a `null`.

        Returns
        -------
        Expr
            Expression with the data type of the array elements.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     {"a": [[1, 2, 3], [4, 5, 6]]}, schema={"a": pl.Array(pl.Int64, 3)}
        ... )
        >>> df.select(pl.col("a").arr.explode())
        shape: (6, 1)
        â”Œâ”€â”€â”€â”€â”€â”
        â”‚ a   â”‚
        â”‚ --- â”‚
        â”‚ i64 â”‚
        â•žâ•â•â•â•â•â•¡
        â”‚ 1   â”‚
        â”‚ 2   â”‚
        â”‚ 3   â”‚
        â”‚ 4   â”‚
        â”‚ 5   â”‚
        â”‚ 6   â”‚
        â””â”€â”€â”€â”€â”€â”˜
        r‡   )r   r   Úarr_explode)r   rˆ   r‰   s      r   ÚexplodezExprArrayNameSpace.explode  s/   € õH ØŒL×$Ò$°=ÈZÐ$ÑXÔXñ
ô 
ð 	
r   )Únulls_equalÚitemr   r   c               ót   — t          |d¬¦  «        }t          | j                             ||¦  «        ¦  «        S )u¾  
        Check if sub-arrays contain the given item.

        Parameters
        ----------
        item
            Item that will be checked for membership
        nulls_equal : bool, default True
            If True, treat null as a distinct value. Null values will not propagate.

        Returns
        -------
        Expr
            Expression of data type :class:`Boolean`.

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     {"a": [["a", "b"], ["x", "y"], ["a", "c"]]},
        ...     schema={"a": pl.Array(pl.String, 2)},
        ... )
        >>> df.with_columns(contains=pl.col("a").arr.contains("a"))
        shape: (3, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”† contains â”‚
        â”‚ ---           â”† ---      â”‚
        â”‚ array[str, 2] â”† bool     â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ ["a", "b"]    â”† true     â”‚
        â”‚ ["x", "y"]    â”† false    â”‚
        â”‚ ["a", "c"]    â”† true     â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        Tr‚   )r   r   r   Úarr_contains)r   rŽ   r   Úitem_pyexprs       r   ÚcontainszExprArrayNameSpace.contains;  s7   € õD ,¨D¸TÐBÑBÔBˆÝ˜œ×2Ò2°;ÀÑLÔLÑMÔMÐMr   r]   c                ór   — t          |d¬¦  «        }t          | j                             |¦  «        ¦  «        S )u2  
        Count how often the value produced by `element` occurs.

        Parameters
        ----------
        element
            An expression that produces a single value

        Examples
        --------
        >>> df = pl.DataFrame(
        ...     {"a": [[1, 2], [1, 1], [2, 2]]}, schema={"a": pl.Array(pl.Int64, 2)}
        ... )
        >>> df.with_columns(number_of_twos=pl.col("a").arr.count_matches(2))
        shape: (3, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”† number_of_twos â”‚
        â”‚ ---           â”† ---            â”‚
        â”‚ array[i64, 2] â”† u32            â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [1, 2]        â”† 1              â”‚
        â”‚ [1, 1]        â”† 0              â”‚
        â”‚ [2, 2]        â”† 2              â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        Tr‚   )r   r   r   Úarr_count_matches)r   r]   Úelement_pyexprs      r   Úcount_matchesz ExprArrayNameSpace.count_matches`  s4   € õ4 /¨wÀ4ÐHÑHÔHˆÝ˜œ×7Ò7¸ÑGÔGÑHÔHÐHr   Úfieldsú+Sequence[str] | Callable[[int], str] | Nonec                ó  — t          |t          ¦  «        rPt          |¦  «        }| j                             d¦  «        }t          |¦  «        j                             |¦  «        S | j                             |¦  «        }t          |¦  «        S )uÆ  
        Convert the Series of type `Array` to a Series of type `Struct`.

        Parameters
        ----------
        fields
            If the name and number of the desired fields is known in advance
            a list of field names can be given, which will be assigned by index.
            Otherwise, to dynamically assign field names, a custom function can be
            used; if neither are set, fields will be `field_0, field_1 .. field_n`.

        Examples
        --------
        Convert array to struct with default field name assignment:

        >>> df = pl.DataFrame(
        ...     {"n": [[0, 1, 2], [3, 4, 5]]}, schema={"n": pl.Array(pl.Int8, 3)}
        ... )
        >>> df.with_columns(struct=pl.col("n").arr.to_struct())
        shape: (2, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ n            â”† struct    â”‚
        â”‚ ---          â”† ---       â”‚
        â”‚ array[i8, 3] â”† struct[3] â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [0, 1, 2]    â”† {0,1,2}   â”‚
        â”‚ [3, 4, 5]    â”† {3,4,5}   â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜

        Convert array to struct with field name assignment by function/index:

        >>> df = pl.DataFrame(
        ...     {"n": [[0, 1, 2], [3, 4, 5]]}, schema={"n": pl.Array(pl.Int8, 3)}
        ... )
        >>> df.select(pl.col("n").arr.to_struct(fields=lambda idx: f"n{idx}")).rows(
        ...     named=True
        ... )
        [{'n': {'n0': 0, 'n1': 1, 'n2': 2}}, {'n': {'n0': 3, 'n1': 4, 'n2': 5}}]

        Convert array to struct with field name assignment by
        index from a list of names:

        >>> df.select(pl.col("n").arr.to_struct(fields=["c1", "c2", "c3"])).rows(
        ...     named=True
        ... )
        [{'n': {'c1': 0, 'c2': 1, 'c3': 2}}, {'n': {'c1': 3, 'c2': 4, 'c3': 5}}]
        N)Ú
isinstancer   Úlistr   Úarr_to_structr   ÚstructÚrename_fields)r   r—   Úfield_namesÚpyexprs       r   Ú	to_structzExprArrayNameSpace.to_struct}  sy   € õd fhÑ'Ô'ð 	%Ý˜v™,œ,ˆKØ”\×/Ò/°Ñ5Ô5ˆFÝ˜VÑ$Ô$Ô+×9Ò9¸+ÑFÔFÐFà”\×/Ò/°Ñ7Ô7ˆFÝ˜VÑ$Ô$Ð$r   c                ón   — t          |¦  «        }t          | j                             |¦  «        ¦  «        S )u  
        Shift array values by the given number of indices.

        Parameters
        ----------
        n
            Number of indices to shift forward. If a negative value is passed, values
            are shifted in the opposite direction instead.

        Notes
        -----
        This method is similar to the `LAG` operation in SQL when the value for `n`
        is positive. With a negative value for `n`, it is similar to `LEAD`.

        Examples
        --------
        By default, array values are shifted forward by one index.

        >>> df = pl.DataFrame(
        ...     {"a": [[1, 2, 3], [4, 5, 6]]}, schema={"a": pl.Array(pl.Int64, 3)}
        ... )
        >>> df.with_columns(shift=pl.col("a").arr.shift())
        shape: (2, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”† shift         â”‚
        â”‚ ---           â”† ---           â”‚
        â”‚ array[i64, 3] â”† array[i64, 3] â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [1, 2, 3]     â”† [null, 1, 2]  â”‚
        â”‚ [4, 5, 6]     â”† [null, 4, 5]  â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜

        Pass a negative value to shift in the opposite direction instead.

        >>> df.with_columns(shift=pl.col("a").arr.shift(-2))
        shape: (2, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”† shift           â”‚
        â”‚ ---           â”† ---             â”‚
        â”‚ array[i64, 3] â”† array[i64, 3]   â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [1, 2, 3]     â”† [3, null, null] â”‚
        â”‚ [4, 5, 6]     â”† [6, null, null] â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        )r   r   r   Ú	arr_shift)r   r-   r2   s      r   ÚshiftzExprArrayNameSpace.shift·  s0   € õ\ )¨Ñ+Ô+ˆÝ˜œ×/Ò/°Ñ9Ô9Ñ:Ô:Ð:r   ©Úas_listr¦   c               ó^   — t          | j                             |j        |¬¦  «        ¦  «        S )u  
        Run any polars expression against the arrays' elements.

        Parameters
        ----------
        expr
            Expression to run. Note that you can select an element with `pl.element()`
        as_list
            Collect the resulting data as a list. This allows for expressions which
            output a variable amount of data.

        Examples
        --------
        >>> df = pl.DataFrame({"a": [1, 8, 3], "b": [4, 5, 2]})
        >>> df.with_columns(rank=pl.concat_arr("a", "b").arr.eval(pl.element().rank()))
        shape: (3, 3)
        â”Œâ”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a   â”† b   â”† rank          â”‚
        â”‚ --- â”† --- â”† ---           â”‚
        â”‚ i64 â”† i64 â”† array[f64, 2] â”‚
        â•žâ•â•â•â•â•â•ªâ•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ 1   â”† 4   â”† [1.0, 2.0]    â”‚
        â”‚ 8   â”† 5   â”† [2.0, 1.0]    â”‚
        â”‚ 3   â”† 2   â”† [2.0, 1.0]    â”‚
        â””â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜

        See Also
        --------
        polars.Expr.arr.agg: Evaluate any expression and automatically explode.
        polars.Expr.list.eval: Same for the List datatype.
        r¥   )r   r   Úarr_eval)r   r   r¦   s      r   ÚevalzExprArrayNameSpace.evalè  s*   € õ@ ˜œ×.Ò.¨t¬|ÀWÐ.ÑMÔMÑNÔNÐNr   c                óZ   — t          | j                             |j        ¦  «        ¦  «        S )uh  
        Run any polars aggregation expression against the arrays' elements.

        Parameters
        ----------
        expr
            Expression to run. Note that you can select an element with `pl.element()`.

        Examples
        --------
        >>> df = pl.Series(
        ...     "a", [[1, None], [42, 13], [None, None]], pl.Array(pl.Int64, 2)
        ... ).to_frame()
        >>> df.with_columns(null_count=pl.col.a.arr.agg(pl.element().null_count()))
        shape: (3, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”† null_count â”‚
        â”‚ ---           â”† ---        â”‚
        â”‚ array[i64, 2] â”† u32        â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [1, null]     â”† 1          â”‚
        â”‚ [42, 13]      â”† 0          â”‚
        â”‚ [null, null]  â”† 2          â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
        >>> df.with_columns(no_nulls=pl.col.a.arr.agg(pl.element().drop_nulls()))
        shape: (3, 2)
        â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¬â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
        â”‚ a             â”† no_nulls  â”‚
        â”‚ ---           â”† ---       â”‚
        â”‚ array[i64, 2] â”† list[i64] â”‚
        â•žâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•ªâ•â•â•â•â•â•â•â•â•â•â•â•¡
        â”‚ [1, null]     â”† [1]       â”‚
        â”‚ [42, 13]      â”† [42, 13]  â”‚
        â”‚ [null, null]  â”† []        â”‚
        â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”´â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜

        See Also
        --------
        polars.Expr.arr.eval: Evaluate any expression without automatic explode.
        polars.Expr.list.agg: Same for the List datatype.
        )r   r   Úarr_aggr   s     r   r[   zExprArrayNameSpace.agg
  s%   € õT ˜œ×-Ò-¨d¬lÑ;Ô;Ñ<Ô<Ð<r   )r   r
   r   r   )r   r
   r   )r"   r#   r$   r%   r!   r&   r   r
   )r,   )r-   r#   r!   r&   r   r
   )r=   )r>   r?   r   r
   )rN   r&   r   r
   )rY   r&   r   r
   )rc   r&   rd   r&   r   r
   )rt   ru   rs   r&   r   r
   )r€   r   rY   r&   r   r
   )rˆ   r&   r‰   r&   r   r
   )rŽ   r   r   r&   r   r
   )r]   r   r   r
   )r—   r˜   r   r
   )r-   ru   r   r
   )r   r
   r¦   r&   r   r
   )r   r
   r   r
   )%Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	_accessorr   r   r+   r/   r3   r6   r9   r<   rC   rG   rJ   rM   rQ   rT   rW   r^   rb   rg   rj   rm   rq   ry   r|   r   r†   rŒ   r’   r–   r¡   r¤   r©   r[   © r   r   r   r      sÔ  € € € € € Ø2Ð2à€Ið$ð $ð $ð $ð1ð 1ð 1ð 1ð4 +/ð6Yð
 ð6Yð 6Yð 6Yð 6Yð 6Yð 6Yðp+3Àð +3ð +3ð +3ð +3ð +3ð +3ðZ,DÀð ,Dð ,Dð ,Dð ,Dð ,Dð ,Dð\1ð 1ð 1ð 1ð.1ð 1ð 1ð 1ð.1ð 1ð 1ð 1ð.5ð 5ð 5ð 5ð 5ð.5ð 5ð 5ð 5ð 5ð.2ð 2ð 2ð 2ð.4ð 4ð 4ð 4ð. 05ð Bð Bð Bð Bð Bð Bð:6ð 6ð 6ð 6ð25ð 5ð 5ð 5ð8 +/ð +Dð +Dð +Dð +Dð +Dð +DðZ +/ð +Dð +Dð +Dð +Dð +Dð +DðZ */À5ð (Hð (Hð (Hð (Hð (Hð (HðT5ð 5ð 5ð 5ð25ð 5ð 5ð 5ð>5ð 5ð 5ð 5ð> GLð $Jð $Jð $Jð $Jð $Jð $JðL-ð -ð -ð -ð0.ð .ð .ð .ð0 GKð *Pð *Pð *Pð *Pð *Pð *PðX 04Èð &
ð &
ð &
ð &
ð &
ð &
ðP ?Cð #Nð #Nð #Nð #Nð #Nð #NðJIð Ið Ið Ið< EIð8%ð 8%ð 8%ð 8%ð 8%ðt/;ð /;ð /;ð /;ð /;ðb 38ð  Oð  Oð  Oð  Oð  Oð  OðD*=ð *=ð *=ð *=ð *=ð *=r   r   N)Ú
__future__r   Úcollections.abcr   Útypingr   Úpolarsr   r\   Úpolars._utils.parser   Úpolars._utils.wrapr   r	   r
   Úpolars._typingr   r   r   r±   r   r   ú<module>r¹      sñ   ðØ "Ð "Ð "Ð "Ð "Ð "à $Ð $Ð $Ð $Ð $Ð $Ø  Ð  Ð  Ð  Ð  Ð  à !Ð !Ð !Ð !Ð !Ð !Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø (Ð (Ð (Ð (Ð (Ð (àð 8Ø(Ð(Ð(Ð(Ð(Ð(àÐÐÐÐÐØ7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ðc=ð c=ð c=ð c=ð c=ñ c=ô c=ð c=ð c=ð c=r   