
    h                        S SK Jr  S SKrS SKJr  S SKJrJr  S SKJ	r
  S SKJr  S SKJr  S SKJr  \R"                  " \5         S SKJr  SSS5        \(       a  S S	KJr  S S
KJr  S SKJrJr  S SKJrJr  \   SSSS.           SS jjj5       r\   SSS.           SS jjj5       r\   SSS.           SS jjj5       r   SSSS.           SS jjjr\   SSSS.           SS jjj5       r\   SSS.           SS jjj5       r\   SSS.           SS jjj5       r   SSSS.           SS jjjrg! , (       d  f       GN= f)    )annotationsN)time)TYPE_CHECKINGoverload)	functions)parse_into_expression)	wrap_expr)parse_interval_argument)	timedelta)Literal)ExprSeries)ClosedIntervalIntoExprColumn.)closedeagerc                   g N startendintervalr   r   s        [/home/james-whalen/.local/lib/python3.13/site-packages/polars/functions/range/time_range.py
time_ranger               )r   c                   g r   r   r   s        r   r   r   "        r   c                   g r   r   r   s        r   r   r   -        r   bothFc               ^   [        U5      nS H  nXR;   d  M
  SU< 3n[        U5      e   U c  [        SSS5      n Uc  [        SSSS5      n[        U 5      n[        U5      n[	        [
        R                  " XxX#5      5      n	U(       a$  [        R                  " U	5      R                  5       $ U	$ )ax  
Generate a time range.

Parameters
----------
start
    Lower bound of the time range.
    If omitted, defaults to `time(0,0,0,0)`.
end
    Upper bound of the time range.
    If omitted, defaults to `time(23,59,59,999999)`.
interval
    Interval of the range periods, specified as a Python `timedelta` object
    or using the Polars duration string language (see "Notes" section below).
closed : {'both', 'left', 'right', 'none'}
    Define which sides of the range are closed (inclusive).
eager
    Evaluate immediately and return a `Series`.
    If set to `False` (default), return an expression instead.

Returns
-------
Expr or Series
    Column of data type `:class:Time`.

Notes
-----
`interval` is created according to the following string language:

- 1ns   (1 nanosecond)
- 1us   (1 microsecond)
- 1ms   (1 millisecond)
- 1s    (1 second)
- 1m    (1 minute)
- 1h    (1 hour)
- 1d    (1 calendar day)
- 1w    (1 calendar week)
- 1mo   (1 calendar month)
- 1q    (1 calendar quarter)
- 1y    (1 calendar year)

Or combine them:
"3d12h4m25s" # 3 days, 12 hours, 4 minutes, and 25 seconds

By "calendar day", we mean the corresponding time on the next day (which may
not be 24 hours, due to daylight savings). Similarly for "calendar week",
"calendar month", "calendar quarter", and "calendar year".

See Also
--------
time_ranges : Create a column of time ranges.

Examples
--------
>>> from datetime import time, timedelta
>>> pl.time_range(
...     start=time(14, 0),
...     interval=timedelta(hours=3, minutes=15),
...     eager=True,
... ).alias("time")
shape: (4,)
Series: 'time' [time]
[
    14:00:00
    17:15:00
    20:30:00
    23:45:00
]
ymowd,invalid interval unit for time_range: found r      ;   ?B )
r
   
ValueErrorr   r   r	   plrr   Fselect	to_series
r   r   r   r   r   unitmsgstart_pyexpr
end_pyexprresults
             r   r   r   8   s    Z 'x0H%@ICS/! &
 }Q1
{2r2v&(/L&s+Js~~lQRFxx))++Mr   c                   g r   r   r   s        r   time_rangesr9      r   r   c                   g r   r   r   s        r   r9   r9      r   r   c                   g r   r   r   s        r   r9   r9      r!   r   c               ^   [        U5      nS H  nXR;   d  M
  SU< 3n[        U5      e   U c  [        SSS5      n Uc  [        SSSS5      n[        U 5      n[        U5      n[	        [
        R                  " XxX#5      5      n	U(       a$  [        R                  " U	5      R                  5       $ U	$ )u	  
Create a column of time ranges.

Parameters
----------
start
    Lower bound of the time range.
    If omitted, defaults to `time(0, 0, 0, 0)`.
end
    Upper bound of the time range.
    If omitted, defaults to `time(23, 59, 59, 999999)`.
interval
    Interval of the range periods, specified as a Python `timedelta` object
    or using the Polars duration string language (see "Notes" section below).
closed : {'both', 'left', 'right', 'none'}
    Define which sides of the range are closed (inclusive).
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(Time)`.

Notes
-----
`interval` is created according to the following string language:

- 1ns   (1 nanosecond)
- 1us   (1 microsecond)
- 1ms   (1 millisecond)
- 1s    (1 second)
- 1m    (1 minute)
- 1h    (1 hour)
- 1d    (1 calendar day)
- 1w    (1 calendar week)
- 1mo   (1 calendar month)
- 1q    (1 calendar quarter)
- 1y    (1 calendar year)

Or combine them:
"3d12h4m25s" # 3 days, 12 hours, 4 minutes, and 25 seconds

By "calendar day", we mean the corresponding time on the next day (which may
not be 24 hours, due to daylight savings). Similarly for "calendar week",
"calendar month", "calendar quarter", and "calendar year".

See Also
--------
time_range : Generate a single time range.

Examples
--------
>>> from datetime import time
>>> df = pl.DataFrame(
...     {
...         "start": [time(9, 0), time(10, 0)],
...         "end": time(11, 0),
...     }
... )
>>> df.with_columns(time_range=pl.time_ranges("start", "end"))
shape: (2, 3)
┌──────────┬──────────┬────────────────────────────────┐
│ start    ┆ end      ┆ time_range                     │
│ ---      ┆ ---      ┆ ---                            │
│ time     ┆ time     ┆ list[time]                     │
╞══════════╪══════════╪════════════════════════════════╡
│ 09:00:00 ┆ 11:00:00 ┆ [09:00:00, 10:00:00, 11:00:00] │
│ 10:00:00 ┆ 11:00:00 ┆ [10:00:00, 11:00:00]           │
└──────────┴──────────┴────────────────────────────────┘
r$   r)   r   r*   r+   r,   )
r
   r-   r   r   r	   r.   r9   r/   r0   r1   r2   s
             r   r9   r9      s    ` 'x0H%@ICS/! &
 }Q1
{2r2v&(/L&s+Js|RSFxx))++Mr   )...)r   time | IntoExprColumn | Noner   r=   r   str | timedeltar   r   r   zLiteral[False]returnr   )r   r=   r   r=   r   r>   r   r   r   zLiteral[True]r?   r   )r   r=   r   r=   r   r>   r   r   r   boolr?   zSeries | Expr)NN1h)
__future__r   
contextlibdatetimer   typingr   r   polarsr   r/   polars._utils.parser   polars._utils.wrapr	   polars.functions.range._utilsr
   suppressImportErrorpolars._plr_plrr.   r   r   r   r   polars._typingr   r   r   r9   r   r   r   <module>rO      sI   "   * ! 5 ( A% & "#= 
*-(+ #
 !'	% 
   
 
 
*-(+ #
 !'	% 
    
 
*-(+ #
 !'	% 
    
 +/(, $`
 $`'`	%` `
 ` ` `F 
*-(+ #
 !'	% 
   
 
 
*-(+ #
 !'	% 
    
 
*-(+ #
 !'	% 
    
 +/(, $c
 $c'c	%c c
 c c ca &%s   E  
E/