
    j #                       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           n# 1 swxY w Y   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d0d!            Z	 	 	 d1ed#dd0d$Ze	 	 	 d-dddd.d%            Ze	 	 	 d-ddd/d&            Ze	 	 	 d-ddd0d'            Z	 	 	 d1ed#dd0d(Ze	 	 	 d-dddd2d)            Z e	 	 	 d-ddd3d*            Z e	 	 	 d-ddd4d+            Z 	 	 	 d1ed#dd4d,Z dS )5    )annotationsN)TYPE_CHECKINGoverload)	functions)parse_into_expression)	wrap_exprwrap_s)Int64)parse_into_datatype_expr)Literal)DataTypeExprExprSeries)IntoExprColumnPolarsIntegerType.dtypeeagerstartint | IntoExprColumnendint | IntoExprColumn | Nonestepintr    PolarsIntegerType | DataTypeExprr   Literal[False]returnr   c                   d S N r   r   r   r   r   s        e/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/polars/functions/range/int_range.pyaranger#      	     3    )r   Literal[True]r   c                   d S r   r    r!   s        r"   r#   r#   !   	     Sr%   boolExpr | Seriesc                   d S r   r    r!   s        r"   r#   r#   ,   	     Cr%      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                   d S r   r    r!   s        r"   r/   r/   j   r$   r%   c                   d S r   r    r!   s        r"   r/   r/   u   r(   r%   c                   d S 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        |                                          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   │
    └───────┴─────┴─────┘
    Nr   )r   
isinstancer   r	   plreager_int_range_pydatatype_exprr   r   r/   Fselect	to_series)	r   r   r   r   r   
dtype_exprstart_pyexpr
end_pyexprresults	            r"   r/   r/      s    V {)%00J% 
*S#"6"6 
5 
sD*2MNN
 
 	
 )//L&s++JlJj6QRR F  ,x))+++Mr%   c                   d S r   r    r!   s        r"   
int_rangesr@      r$   r%   c                   d S r   r    r!   s        r"   r@   r@      r(   r%   c                   d S r   r    r!   s        r"   r@   r@     r,   r%   c               ,   || }d} t          |          }t          |           }t          |          }t          |          }t          t          j        ||||j                            }	|r&t          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]    │
    └─────┴───────────┘
    Nr   )	r   r   r   r5   r@   r7   r8   r9   r:   )
r   r   r   r   r   r;   r<   r=   step_pyexprr>   s
             r"   r@   r@     s    | {)%00J(//L&s++J'--K*k:3N	
 	
 F  ,x))+++Mr%   )...)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   r*   )r   Nr-   )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   r*   )!
__future__r   
contextlibtypingr   r   polarsr   r8   polars._utils.parser   polars._utils.wrapr   r	   polars.datatypesr
   polars.datatypes._parser   suppressImportErrorpolars._plr_plrr5   r   r   r   r   polars._typingr   r   r#   r/   r@   r    r%   r"   <module>rR      s[   " " " " " "     * * * * * * * * ! ! ! ! ! ! 5 5 5 5 5 5 0 0 0 0 0 0 0 0 " " " " " " < < < < < <Z%%                  A1111111111@@@@@@@@ 
"%'*
 /2     
 
"%'*
 /2     
 
"%'*
 /2     
 #$'+0A
 /40A 0A 0A 0A 0A 0Af 
"%'*
 /2     
 
"%'*
 /2     
 
"%'*
 /2     
 #$'+^
 /4^ ^ ^ ^ ^ ^B 
"%'*!$
 /2     
 
"%'*!$
 /2     
 
"%'*!$
 /2     
 #$'+!"O
 /4O O O O O O O Os   AAA