Λ
    θΛhθ  γ                  σt    d dl mZ d dlmZ d dlmZ erd dlmZ ddddZ	ddddZ
dd	Zdd
ZddZddZy)ι    )Ϊannotations)ΪTYPE_CHECKINGN)ΪExprT©Ϊignore_nullsc                σt    |st        j                  d«      S t        j                  | j                  | ¬«      S )u  
    Either return an expression representing all columns, or evaluate a bitwise AND operation.

    If no arguments are passed, this function is syntactic sugar for `col("*")`.
    Otherwise, this function is syntactic sugar for `col(names).all()`.

    Parameters
    ----------
    *names
        Name(s) of the columns to use in the aggregation.
    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

    See Also
    --------
    all_horizontal

    Examples
    --------
    Selecting all columns.

    >>> df = pl.DataFrame(
    ...     {
    ...         "a": [True, False, True],
    ...         "b": [False, False, False],
    ...     }
    ... )
    >>> df.select(pl.all().sum())
    shape: (1, 2)
    βββββββ¬ββββββ
    β a   β b   β
    β --- β --- β
    β u32 β u32 β
    βββββββͺββββββ‘
    β 2   β 0   β
    βββββββ΄ββββββ

    Evaluate bitwise AND for a column.

    >>> df.select(pl.all("a"))
    shape: (1, 1)
    βββββββββ
    β a     β
    β ---   β
    β bool  β
    βββββββββ‘
    β false β
    βββββββββ
    Ϊ*r   )ΪFΪcolΪall©r   Ϊnamess     ϊ/var/www/html/wine-match-dev/backend/winematch-backend/venv/lib/python3.12/site-packages/polars/functions/aggregation/vertical.pyr   r      s2    ρr άuuSzΠδ55%=ΧΡ¨,ΠΣ7Π7σ    c                σF    t        j                  | j                  | ¬«      S )uτ  
    Evaluate a bitwise OR operation.

    Syntactic sugar for `col(names).any()`.

    See Also
    --------
    any_horizontal

    Parameters
    ----------
    *names
        Name(s) of the columns to use in the aggregation.
    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(
    ...     {
    ...         "a": [True, False, True],
    ...         "b": [False, False, False],
    ...     }
    ... )
    >>> df.select(pl.any("a"))
    shape: (1, 1)
    ββββββββ
    β a    β
    β ---  β
    β bool β
    ββββββββ‘
    β true β
    ββββββββ
    r   )r
   r   Ϊanyr   s     r   r   r   J   s!    τT 55%=ΧΡ¨,ΠΣ7Π7r   c                 σB    t        j                  |  j                  «       S )uς  
    Get the maximum value.

    Syntactic sugar for `col(names).max()`.

    Parameters
    ----------
    *names
        Name(s) of the columns to use in the aggregation.

    See Also
    --------
    max_horizontal

    Examples
    --------
    Get the maximum value of a column.

    >>> df = pl.DataFrame(
    ...     {
    ...         "a": [1, 8, 3],
    ...         "b": [4, 5, 2],
    ...         "c": ["foo", "bar", "foo"],
    ...     }
    ... )
    >>> df.select(pl.max("a"))
    shape: (1, 1)
    βββββββ
    β a   β
    β --- β
    β i64 β
    βββββββ‘
    β 8   β
    βββββββ

    Get the maximum value of multiple columns.

    >>> df.select(pl.max("^a|b$"))
    shape: (1, 2)
    βββββββ¬ββββββ
    β a   β b   β
    β --- β --- β
    β i64 β i64 β
    βββββββͺββββββ‘
    β 8   β 5   β
    βββββββ΄ββββββ
    >>> df.select(pl.max("a", "b"))
    shape: (1, 2)
    βββββββ¬ββββββ
    β a   β b   β
    β --- β --- β
    β i64 β i64 β
    βββββββͺββββββ‘
    β 8   β 5   β
    βββββββ΄ββββββ
    )r
   r   Ϊmax©r   s    r   r   r   w   σ    τr 55%=ΧΡΣΠr   c                 σB    t        j                  |  j                  «       S )uς  
    Get the minimum value.

    Syntactic sugar for `col(names).min()`.

    Parameters
    ----------
    *names
        Name(s) of the columns to use in the aggregation.

    See Also
    --------
    min_horizontal

    Examples
    --------
    Get the minimum value of a column.

    >>> df = pl.DataFrame(
    ...     {
    ...         "a": [1, 8, 3],
    ...         "b": [4, 5, 2],
    ...         "c": ["foo", "bar", "foo"],
    ...     }
    ... )
    >>> df.select(pl.min("a"))
    shape: (1, 1)
    βββββββ
    β a   β
    β --- β
    β i64 β
    βββββββ‘
    β 1   β
    βββββββ

    Get the minimum value of multiple columns.

    >>> df.select(pl.min("^a|b$"))
    shape: (1, 2)
    βββββββ¬ββββββ
    β a   β b   β
    β --- β --- β
    β i64 β i64 β
    βββββββͺββββββ‘
    β 1   β 2   β
    βββββββ΄ββββββ
    >>> df.select(pl.min("a", "b"))
    shape: (1, 2)
    βββββββ¬ββββββ
    β a   β b   β
    β --- β --- β
    β i64 β i64 β
    βββββββͺββββββ‘
    β 1   β 2   β
    βββββββ΄ββββββ
    )r
   r   Ϊminr   s    r   r   r   ³   r   r   c                 σB    t        j                  |  j                  «       S )u  
    Sum all values.

    Syntactic sugar for `col(name).sum()`.

    Parameters
    ----------
    *names
        Name(s) of the columns to use in the aggregation.

    Notes
    -----
    If there are no non-null values, then the output is `0`.
    If you would prefer empty sums to return `None`, you can
    use `pl.when(pl.col(name).count()>0).then(pl.sum(name))` instead
    of `pl.sum(name)`.

    See Also
    --------
    sum_horizontal

    Examples
    --------
    Sum a column.

    >>> df = pl.DataFrame(
    ...     {
    ...         "a": [1, 2],
    ...         "b": [3, 4],
    ...         "c": [5, 6],
    ...     }
    ... )
    >>> df.select(pl.sum("a"))
    shape: (1, 1)
    βββββββ
    β a   β
    β --- β
    β i64 β
    βββββββ‘
    β 3   β
    βββββββ

    Sum multiple columns.

    >>> df.select(pl.sum("a", "c"))
    shape: (1, 2)
    βββββββ¬ββββββ
    β a   β c   β
    β --- β --- β
    β i64 β i64 β
    βββββββͺββββββ‘
    β 3   β 11  β
    βββββββ΄ββββββ
    >>> df.select(pl.sum("^.*[bc]$"))
    shape: (1, 2)
    βββββββ¬ββββββ
    β b   β c   β
    β --- β --- β
    β i64 β i64 β
    βββββββͺββββββ‘
    β 7   β 11  β
    βββββββ΄ββββββ
    )r
   r   Ϊsumr   s    r   r   r   ο   s    τ@ 55%=ΧΡΣΠr   c                 σB    t        j                  |  j                  «       S )uk  
    Cumulatively sum all values.

    Syntactic sugar for `col(names).cum_sum()`.

    Parameters
    ----------
    *names
        Name(s) of the columns to use in the aggregation.

    See Also
    --------
    cumsum_horizontal

    Examples
    --------
    >>> df = pl.DataFrame(
    ...     {
    ...         "a": [1, 2, 3],
    ...         "b": [4, 5, 6],
    ...     }
    ... )
    >>> df.select(pl.cum_sum("a"))
    shape: (3, 1)
    βββββββ
    β a   β
    β --- β
    β i64 β
    βββββββ‘
    β 1   β
    β 3   β
    β 6   β
    βββββββ
    )r
   r   Ϊcum_sumr   s    r   r   r   2  s    τF 55%=Χ Ρ Σ"Π"r   )r   Ϊstrr   ΪboolΪreturnr   )r   r   r   r   r   zExpr | bool | None)r   r   r   r   )Ϊ
__future__r   Ϊtypingr   Ϊpolars.functionsΪ	functionsr
   Ϊpolarsr   r   r   r   r   r   r   © r   r   ϊ<module>r&      sB   πέ "ε  ε αέπ +/υ <8π~ +/υ *8σZ9σx9σx@τF##r   