
    ˀh"                    n   d dl mZ d dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZ  ej$                  e      5  d dlmZ ddd       erd d	lmZ d d
lmZmZmZ d dlmZmZ e	 	 	 dddd	 	 	 	 	 	 	 	 	 	 	 dd       Ze	 	 	 ddd	 	 	 	 	 	 	 	 	 	 	 dd       Ze	 	 	 ddd	 	 	 	 	 	 	 	 	 	 	 dd       Z	 	 	 d edd	 	 	 	 	 	 	 	 	 	 	 ddZe	 	 	 dddd	 	 	 	 	 	 	 	 	 	 	 dd       Ze	 	 	 ddd	 	 	 	 	 	 	 	 	 	 	 dd       Ze	 	 	 ddd	 	 	 	 	 	 	 	 	 	 	 dd       Z	 	 	 d edd	 	 	 	 	 	 	 	 	 	 	 ddZe	 	 	 dddd	 	 	 	 	 	 	 	 	 	 	 d!d       Ze	 	 	 ddd	 	 	 	 	 	 	 	 	 	 	 d"d       Ze	 	 	 ddd	 	 	 	 	 	 	 	 	 	 	 d#d       Z	 	 	 d edd	 	 	 	 	 	 	 	 	 	 	 d#dZy# 1 sw Y   `xY w)$    )annotationsN)TYPE_CHECKINGoverload)	functions)parse_into_expression)	wrap_exprwrap_s)Int64)parse_into_datatype_expr)Literal)DataTypeExprExprSeries)IntoExprColumnPolarsIntegerType.dtypeeagerc                    y N startendstepr   r   s        |/var/www/html/wine-match-dev/backend/winematch-backend/venv/lib/python3.12/site-packages/polars/functions/range/int_range.pyaranger               )r   c                    y r   r   r   s        r   r   r   !        r   c                    y r   r   r   s        r   r   r   ,        r   Fc               "    t        | ||||      S )aS  
    Generate a range of integers.

    Alias for :func:`int_range`.

    Parameters
    ----------
    start
        Lower bound of the range (inclusive).
    end
        Upper bound of the range (exclusive).
    step
        Step size of the range.
    dtype
        Data type of the range. Defaults to `Int64`.
    eager
        Evaluate immediately and return a `Series`.
        If set to `False` (default), return an expression instead.

    Returns
    -------
    Expr or Series
        Column of integer data type `dtype`.

    See Also
    --------
    int_range : Generate a range of integers.
    int_ranges : Generate a range of integers for each row of the input columns.

    Examples
    --------
    >>> pl.arange(0, 3, eager=True)
    shape: (3,)
    Series: 'literal' [i64]
    [
            0
            1
            2
    ]
    r   )	int_ranger   s        r   r   r   7   s    ` UCU%@@r   c                    y r   r   r   s        r   r%   r%   j   r   r   c                    y r   r   r   s        r   r%   r%   u   r!   r   c                    y r   r   r   s        r   r%   r%      r#   r   c                  || }d} t        |      }t        | t              r=t        |t              r-|r+t        t	        j
                  | |||j                              S t        |       } t        |      }t        t	        j                  | |||j                              }|r#t        j                  |      j                         S |S )u  
    Generate a range of integers.

    Parameters
    ----------
    start
        Start of the range (inclusive). Defaults to 0.
    end
        End of the range (exclusive). If set to `None` (default),
        the value of `start` is used and `start` is set to `0`.
    step
        Step size of the range.
    dtype
        Data type of the range.
    eager
        Evaluate immediately and return a `Series`.
        If set to `False` (default), return an expression instead.

    Returns
    -------
    Expr or Series
        Column of integer data type `dtype`.

    See Also
    --------
    int_ranges : Generate a range of integers for each row of the input columns.

    Examples
    --------
    >>> pl.int_range(0, 3, eager=True)
    shape: (3,)
    Series: 'literal' [i64]
    [
            0
            1
            2
    ]

    `end` can be omitted for a shorter syntax.

    >>> pl.int_range(3, eager=True)
    shape: (3,)
    Series: 'literal' [i64]
    [
            0
            1
            2
    ]

    Generate an index column by using `int_range` in conjunction with :func:`len`.

    >>> df = pl.DataFrame({"a": [1, 3, 5], "b": [2, 4, 6]})
    >>> df.select(
    ...     pl.int_range(pl.len(), dtype=pl.UInt32).alias("index"),
    ...     pl.all(),
    ... )
    shape: (3, 3)
    ┌───────┬─────┬─────┐
    │ index ┆ a   ┆ b   │
    │ ---   ┆ --- ┆ --- │
    │ u32   ┆ i64 ┆ i64 │
    ╞═══════╪═════╪═════╡
    │ 0     ┆ 1   ┆ 2   │
    │ 1     ┆ 3   ┆ 4   │
    │ 2     ┆ 5   ┆ 6   │
    └───────┴─────┴─────┘
    r   )r   
isinstanceintr	   plreager_int_range_pydatatype_exprr   r   r%   Fselect	to_seriesr   r   r   r   r   
dtype_exprresults          r   r%   r%      s    V {)%0J%*S#"65sD*2M2MN
 	
 "%(E

$Cs}}UCz7R7RSTFxx))++Mr   c                    y r   r   r   s        r   
int_rangesr6      r   r   c                    y r   r   r   s        r   r6   r6      r!   r   c                    y r   r   r   s        r   r6   r6      r#   r   c               
   || }d} t        |      }t        |       } t        |      }t        |      }t        t        j                  | |||j
                              }|r#t        j                  |      j                         S |S )u  
    Generate a range of integers for each row of the input columns.

    Parameters
    ----------
    start
        Start of the range (inclusive). Defaults to 0.
    end
        End of the range (exclusive). If set to `None` (default),
        the value of `start` is used and `start` is set to `0`.
    step
        Step size of the range.
    dtype
        Integer data type of the ranges. Defaults to `Int64`.
    eager
        Evaluate immediately and return a `Series`.
        If set to `False` (default), return an expression instead.

    Returns
    -------
    Expr or Series
        Column of data type `List(dtype)`.

    See Also
    --------
    int_range : Generate a single range of integers.

    Examples
    --------
    >>> df = pl.DataFrame({"start": [1, -1], "end": [3, 2]})
    >>> df.with_columns(int_range=pl.int_ranges("start", "end"))
    shape: (2, 3)
    ┌───────┬─────┬────────────┐
    │ start ┆ end ┆ int_range  │
    │ ---   ┆ --- ┆ ---        │
    │ i64   ┆ i64 ┆ list[i64]  │
    ╞═══════╪═════╪════════════╡
    │ 1     ┆ 3   ┆ [1, 2]     │
    │ -1    ┆ 2   ┆ [-1, 0, 1] │
    └───────┴─────┴────────────┘

    `end` can be omitted for a shorter syntax.

    >>> df.select("end", int_range=pl.int_ranges("end"))
    shape: (2, 2)
    ┌─────┬───────────┐
    │ end ┆ int_range │
    │ --- ┆ ---       │
    │ i64 ┆ list[i64] │
    ╞═════╪═══════════╡
    │ 3   ┆ [0, 1, 2] │
    │ 2   ┆ [0, 1]    │
    └─────┴───────────┘
    r   )	r   r   r   r,   r6   r.   r/   r0   r1   r2   s          r   r6   r6     s{    | {)%0J!%(E

$C &Ds~~eS$
8S8STUFxx))++Mr   )...)r   int | IntoExprColumnr   int | IntoExprColumn | Noner   r+   r    PolarsIntegerType | DataTypeExprr   Literal[False]returnr   )r   r:   r   r;   r   r+   r   r<   r   Literal[True]r>   r   )r   r:   r   r;   r   r+   r   r<   r   boolr>   Expr | Series)r   N   )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;   r   r:   r   r<   r   r@   r>   rA   ) 
__future__r   
contextlibtypingr   r   polarsr   r/   polars._utils.parser   polars._utils.wrapr   r	   polars.datatypesr
   polars.datatypes._parser   suppressImportErrorpolars.polarsr,   r   r   r   r   polars._typingr   r   r   r%   r6   r   r   r   <module>rO      s   "  * ! 5 0 " <Z%    11@ 
"%'*
 /2	$ 
 ,  
 
 
"%'*
 /2	$ 
 ,   
 
"%'*
 /2	$ 
 ,   
 #$'+0A
 /40A0A	$0A 0A
 ,0A 0A 0Af 
"%'*
 /2	$ 
 ,  
 
 
"%'*
 /2	$ 
 ,   
 
"%'*
 /2	$ 
 ,   
 #$'+\
 /4\\	$\ \
 ,\ \ \~ 
"%'*!$
 /2	$ 
 ,  
 
 
"%'*!$
 /2	$ 
 ,   
 
"%'*!$
 /2	$ 
 ,   
 #$'+!"K
 /4KK	$K K
 ,K K K   s   F**F4