
    h0                       % S SK Jr  S SKrS SKJr  \R
                  " \5         S SKJr  SSS5        S SK	r	S SK
Jr  S SKJrJrJr  \(       a1  S SKr\R"                  S:  a  S SKJr  OS SKJr  \" S	5      r\" S
5      r " S S5      rS\S'    \" 5       rSS jrg! , (       d  f       Nw= f! \\4 a  rSr SrCN&SrCff = f)    )annotationsN)issue_deprecation_warning)
PyOptFlags)wraps)TYPE_CHECKINGCallableTypeVar)   
   )	ParamSpecPTc                  x   \ rS rSrSrSSSSSSSSSSS.
                     S!S jjr\S"S j5       r\SSSSSSSSSSS.
                     S#S jj5       r	SSSSSSSSSSS.
                     S#S jjr
\S$S	 j5       rS$S
 jrS$S jrS%S jr\S&S j5       r\R"                  S'S j5       r\S&S j5       r\R"                  S'S j5       r\S&S j5       r\R"                  S'S j5       r\S&S j5       r\R"                  S'S j5       r\S&S j5       r\R"                  S'S j5       r\S&S j5       r\R"                  S'S j5       r\S&S j5       r\R"                  S'S j5       r\S&S j5       r\R"                  S'S j5       r\S&S j5       r\R"                  S'S j5       rS(S jrS rg))QueryOptFlags   z
The set of the optimizations considered during query optimization.

.. warning::
    This functionality is considered **unstable**. It may be changed
    at any point without it being considered a breaking change.
N
predicate_pushdownprojection_pushdownsimplify_expressionslice_pushdowncomm_subplan_elimcomm_subexpr_elimcluster_with_columnscollapse_joinscheck_order_observefast_projectionc       
        h    [         R                  " 5       U l        U R                  UUUUUUUUU	U
S9
  g )Nr   )r   default_pyoptflagsupdateselfr   r   r   r   r   r   r   r   r   r   s              T/home/james-whalen/.local/lib/python3.13/site-packages/polars/lazyframe/opt_flags.py__init__QueryOptFlags.__init__#   sD     &--/1 3 3)//!5) 3+ 	 	
    c                4    U R                  U 5      nXl        U$ N)__new__r   )r"   
pyoptflagsoptflagss      r#   _from_pyoptflagsQueryOptFlags._from_pyoptflags?   s    <<%)r&   c        
        f    [        5       n
U
R                  5         U
R                  U UUUUUUUUU	S9
$ )'Create new empty set off optimizations.r   )r   no_optimizationsr    )r   r   r   r   r   r   r   r   r   r   r+   s              r#   noneQueryOptFlags.noneE   sK     !?!!#1 3 3)//!5) 3+  
 	
r&   c       
            Ub  Xl         Ub  X l        Ub  X0l        Ub  X@l        Ub  XPl        Ub  X`l        Ub  Xpl        Ub  [        SSS9  U(       d  SU l         U	b  Xl        U
b  Xl	        U $ )z&Update the current optimization flags.zcthe `collapse_joins` parameter for `QueryOptFlags` is deprecated. Use `predicate_pushdown` instead.z1.33.1)versionF)
r   r   r   r   r   r   r   r   r   r   r!   s              r#   r    QueryOptFlags.updatec   s     )&8#*':$*':$%"0(%6"(%6"+(<%%%4 
 "*/'*':$&#2 r&   c                 j    [        5       n U R                  5         SU R                  l        SU l        U $ )r/   T)r   r0   r   eagerr   )r+   s    r#   _eagerQueryOptFlags._eager   s2     !?!!#%)"'+$r&   c                \    [         R                  U R                  R                  5       5      $ r(   r   r,   r   copyr"   s    r#   __copy__QueryOptFlags.__copy__   "    --d.>.>.C.C.EFFr&   c                \    [         R                  U R                  R                  5       5      $ r(   r;   r=   s    r#   __deepcopy__QueryOptFlags.__deepcopy__   r@   r&   c                8    U R                   R                  5         g)zRemove selected optimizations.N)r   r0   r=   s    r#   r0   QueryOptFlags.no_optimizations   s    ))+r&   c                .    U R                   R                  $ )z3Only read columns that are used later in the query.r   r   r=   s    r#   r   !QueryOptFlags.projection_pushdown        333r&   c                $    XR                   l        g r(   rG   r"   values     r#   r   rH          /4,r&   c                .    U R                   R                  $ )z.Apply predicates/filters as early as possible.r   r   r=   s    r#   r    QueryOptFlags.predicate_pushdown   s     222r&   c                $    XR                   l        g r(   rO   rK   s     r#   r   rP      s    .3+r&   c                .    U R                   R                  $ )z=Cluster sequential `with_columns` calls to independent calls.r   r   r=   s    r#   r   "QueryOptFlags.cluster_with_columns   s     444r&   c                $    XR                   l        g r(   rS   rK   s     r#   r   rT      s    05-r&   c                .    U R                   R                  $ )z9Run many expression optimization rules until fixed point.r   r   r=   s    r#   r   !QueryOptFlags.simplify_expression   rI   r&   c                $    XR                   l        g r(   rW   rK   s     r#   r   rX      rM   r&   c                .    U R                   R                  $ )zPushdown slices/limits.r   r   r=   s    r#   r   QueryOptFlags.slice_pushdown   s     ...r&   c                $    XR                   l        g r(   r[   rK   s     r#   r   r\      s    */'r&   c                .    U R                   R                  $ )z/Elide duplicate plans and caches their outputs.r   r   r=   s    r#   r   QueryOptFlags.comm_subplan_elim        111r&   c                $    XR                   l        g r(   r_   rK   s     r#   r   r`          -2*r&   c                .    U R                   R                  $ )z5Elide duplicate expressions and caches their outputs.r   r   r=   s    r#   r   QueryOptFlags.comm_subexpr_elim   ra   r&   c                $    XR                   l        g r(   re   rK   s     r#   r   rf      rc   r&   c                .    U R                   R                  $ )z9Do not maintain order if the order would not be observed.r   r   r=   s    r#   r   !QueryOptFlags.check_order_observe   rI   r&   c                $    XR                   l        g r(   ri   rK   s     r#   r   rj      rM   r&   c                .    U R                   R                  $ )z]Replace simple projections with a faster inlined projection that skips the expression engine.r   r   r=   s    r#   r   QueryOptFlags.fast_projection   s     ///r&   c                $    XR                   l        g r(   rm   rK   s     r#   r   rn      s    +0(r&   c                   SU R                   R                   SU R                   R                   SU R                   SU R                   SU R
                   SU R                   SU R                   SU R                   S	U R                   S
U R                   SU R                   SU R                   R                   SU R                   R                   S3R                  5       $ )Nz$
QueryOptFlags {
    type_coercion: z
    type_check: z

    predicate_pushdown: z
    projection_pushdown: z
    simplify_expression: z
    slice_pushdown: z
    comm_subplan_elim: z
    comm_subexpr_elim: z
    cluster_with_columns: z
    check_order_observe: z
    fast_projection: z

    eager: z
    streaming: z
}
        )r   type_coercion
type_checkr   r   r   r   r   r   r   r   r   r7   	streamingstripr=   s    r#   __str__QueryOptFlags.__str__   s   $$223 4!!,,- .001 2223 4223 4(() *../ 0../ 0445 6223 4**+ ,""# $  **+ ,	!$ EG%	r&   )
r   r   r   r   r   r   r   r   r   r   )r   None | boolr   rw   r   rw   r   rw   r   rw   r   rw   r   rw   r   rw   r   rw   r   rw   returnNone)r*   r   rx   r   )r   rw   r   rw   r   rw   r   rw   r   rw   r   rw   r   rw   r   rw   r   rw   r   rw   rx   r   )rx   r   )rx   ry   )rx   bool)rL   rz   rx   ry   )rx   str)__name__
__module____qualname____firstlineno____doc__r$   classmethodr,   staticmethodr1   r    r8   r>   rB   r0   propertyr   setterr   r   r   r   r   r   r   r   ru   __static_attributes__ r&   r#   r   r      s    +/+/+/&*)-)-,0&*+/'+
 (
 )	

 )
 $
 '
 '
 *
 $
 )
 %
 

8  
  +/+/+/&*)-)-,0&*+/'+
'
 )
 )	

 $
 '
 '
 *
 $
 )
 %
 

 
@ +/+/+/&*)-)-,0&*+/'+* (* )	*
 )* $* '* '* ** $* )* %* 
*X  GG, 4 4 5  5 3 3 4 4 5 5   6 !6 4 4 5  5 / / 0 0 2 2 3 3 2 2 3 3 4 4 5  5 0 0 1 1r&   r   DEFAULT_QUERY_OPT_FLAGSr   c                    ^^^^^ SS jmSS jmSS jmSS jmU4S jU4S jU4S jU4S jU4S	 jU4S
 jU4S jU4S jU4S jU4S jU4S jU4S jU4S jS.mSU4S jjn U $ )z8Decorator to mark to forward the old optimization flags.c                    [        XU5        U $ r(   )setattrf
field_namerL   s      r#   helper%forward_old_opt_flags.<locals>.helper  s    u%r&   c                2    [        U R                  X5        U $ r(   )r   r   r   s      r#   helper_hidden,forward_old_opt_flags.<locals>.helper_hidden  s    z1r&   c                <    U(       a  [         R                  5       $ U $ r(   )r   r1   r   rL   s     r#   clear_optimizations2forward_old_opt_flags.<locals>.clear_optimizations  s     %%''Hr&   c                <    U(       a  [         R                  5       $ U $ r(   )r   r8   r   s     r#   r7   $forward_old_opt_flags.<locals>.eager!  s     ''))Hr&   c                   > T" X5      $ r(   r   )r   vr   s     r#   <lambda>'forward_old_opt_flags.<locals>.<lambda>(  s    (;A(Ar&   c                   > T" X5      $ r(   r   )r   r   r7   s     r#   r   r   )  s	    uQ{r&   c                   > T" U SU5      $ )Nrq   r   r   r   r   s     r#   r   r   *  s    mA&Jr&   c                   > T" U SU5      $ )Nrr   r   r   s     r#   r   r   +  s    M!\1$Er&   c                   > T" U SU5      $ )Nr   r   r   r   r   s     r#   r   r   ,  s    6!5I1+Mr&   c                   > T" U SU5      $ )Nr   r   r   s     r#   r   r   -      F16KQ,Or&   c                   > T" U SU5      $ )Nr   r   r   s     r#   r   r   .  r   r&   c                   > T" U SU5      $ )Nr   r   r   s     r#   r   r   /      va1A1'Er&   c                   > T" U SU5      $ )Nr   r   r   s     r#   r   r   0      &4G*Kr&   c                   > T" U SU5      $ )Nr   r   r   s     r#   r   r   1  r   r&   c                   > T" U SU5      $ )Nr   r   r   s     r#   r   r   2  s    VA7Mq-Qr&   c                   > T" U SU5      $ )Nr   r   r   s     r#   r   r   3  r   r&   c                   > T" U SU5      $ )Nr   r   r   s     r#   r   r   4  s    VA/Da%Hr&   )no_optimizationr8   rq   _type_checkr   r   r   r   r   r   r   r   _check_orderc                n   >^  [        T 5      SUU 4S jj5       n[        R                  " T 5      Ul        U$ )Nc                 4  > UR                  S[        5      nUR                  5       n[        UR	                  5       5       HI  nTR                  U5      nUc  M  SSKJn  SU S3nU" U[        5        U" X!R                  U5      5      nMK     X!S'   T" U 0 UD6$ )Noptimizationsr   )issue_warningzoptimization flag `zT` is deprecated. Please use `optimizations` parameter
(Deprecated in version 1.30.0))	getr   r>   listkeyspolars._utils.variousr   DeprecationWarningpop)	argskwargsr+   keycbr   messageOLD_OPT_PARAMETERS_MAPPINGfunctions	          r#   wrapper8forward_old_opt_flags.<locals>.decorate.<locals>.wrapper8  s    &,jj!8'H  ((*HFKKM*/33C8>C 3C5  9N  OG!'+=>!(JJsO<H + '/?#T,V,,r&   )r   zP.argsr   zP.kwargsrx   r   )r   inspect	signature__signature__)r   r   r   s   ` r#   decorate'forward_old_opt_flags.<locals>.decorate7  s3    	x	- 
	-" !( 1 1( ;r&   )r   r   r   r{   rL   rz   rx   r   )r   r   rL   rz   rx   r   )r   Callable[P, T]rx   r   r   )r   r   r   r7   r   r   s    @@@@@r#   forward_old_opt_flagsr     sU     B*JEMOOEKK QEH" , Or&   )rx   z*Callable[[Callable[P, T]], Callable[P, T]])
__future__r   
contextlibpolars._utils.deprecationr   suppressImportErrorpolars._plrr   r   	functoolsr   typingr   r   r	   sysversion_infor   typing_extensionsr   r   r   __annotations__r   	NameError_r   r   r&   r#   <module>r      s    "  ?%& &   3 3
7"$/#AAl l^ ' &!+o
=S &%J 	Y ! !s#   BB- 
B*-C5B<<C