
    j 3                    l   U d dl mZ d dl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   d dl	Z	d dl
mZ d dlmZmZ er(d dlmZ d dlmZ d d	lmZ  ed
          Z ed          Z G d d          Zded<   	  e            Zn# eef$ rZdZY dZ[ndZ[ww xY wddZdS )    )annotationsN)issue_deprecation_warning)
PyOptFlags)wraps)TYPE_CHECKINGTypeVar)Callable)	ParamSpec)IdentityFunctionPTc                     e Zd ZdZddddddddddddd4dZed5d            Zeddddddddddddd6d            Zddddddddddddd6dZ	ed7d            Z
d7dZd7dZd8dZed9d            Zej        d:d            Zed9d             Zej        d:d!            Zed9d"            Zej        d:d#            Zed9d$            Zej        d:d%            Zed9d&            Zej        d:d'            Zed9d(            Zej        d:d)            Zed9d*            Zej        d:d+            Zed9d,            Zej        d:d-            Zed9d.            Zej        d:d/            Zed9d0            Zej        d:d1            Zd;d3ZdS )<QueryOptFlagsz
    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_projectionsort_collapser   None | boolr   r   r   r   r   r   r   r   r   r   returnNonec               v    t          j                    | _        |                     |||||||||	|
|           d S )Nr   )r   default_pyoptflagsupdateselfr   r   r   r   r   r   r   r   r   r   r   s               _/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/polars/lazyframe/opt_flags.py__init__zQueryOptFlags.__init__!   s[     &-//1 3 3)//!5) 3+' 	 	
 	
 	
 	
 	
    
pyoptflagsr   c                >    |                      |           }||_        |S N)__new__r!   )r$   r(   optflagss      r%   _from_pyoptflagszQueryOptFlags._from_pyoptflags?   s     <<%%)r'   c                    t                      }|                                 |                    | |||||||||	|
          S )'Create new empty set off optimizations.r   )r   no_optimizationsr"   )r   r   r   r   r   r   r   r   r   r   r   r,   s               r%   nonezQueryOptFlags.noneE   s[      !??!!###1 3 3)//!5) 3+'  
 
 	
r'   c                   ||| _         ||| _        ||| _        ||| _        ||| _        ||| _        ||| _        |t          dd           |sd| _         |	|	| _        |
|
| _	        ||| _
        | S )z&Update the current optimization flags.Nzcthe `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   r#   s               r%   r"   zQueryOptFlags.updatee   s      )&8D#*':D$*':D$%"0D(%6D"(%6D"+(<D%%%4    
 " 0*/'*':D$&#2D $!.Dr'   c                 p    t                      } |                                  d| j        _        d| _        | S )r/   T)r   r0   r!   eagerr   )r,   s    r%   _eagerzQueryOptFlags._eager   s7     !??!!###%)"'+$r'   c                d    t                               | j                                                  S r*   r   r-   r!   copyr$   s    r%   __copy__zQueryOptFlags.__copy__   %    --d.>.C.C.E.EFFFr'   c                d    t                               | j                                                  S r*   r8   r:   s    r%   __deepcopy__zQueryOptFlags.__deepcopy__   r<   r'   c                8    | j                                          dS )zRemove selected optimizations.N)r!   r0   r:   s    r%   r0   zQueryOptFlags.no_optimizations   s    ))+++++r'   boolc                    | j         j        S )z3Only read columns that are used later in the query.r!   r   r:   s    r%   r   z!QueryOptFlags.projection_pushdown        33r'   valuec                    || j         _        d S r*   rB   r$   rD   s     r%   r   z!QueryOptFlags.projection_pushdown       /4,,,r'   c                    | j         j        S )z.Apply predicates/filters as early as possible.r!   r   r:   s    r%   r   z QueryOptFlags.predicate_pushdown   s     22r'   c                    || j         _        d S r*   rI   rF   s     r%   r   z QueryOptFlags.predicate_pushdown   s    .3+++r'   c                    | j         j        S )z=Cluster sequential `with_columns` calls to independent calls.r!   r   r:   s    r%   r   z"QueryOptFlags.cluster_with_columns   s     44r'   c                    || j         _        d S r*   rL   rF   s     r%   r   z"QueryOptFlags.cluster_with_columns   s    05---r'   c                    | j         j        S )z9Run many expression optimization rules until fixed point.r!   r   r:   s    r%   r   z!QueryOptFlags.simplify_expression   rC   r'   c                    || j         _        d S r*   rO   rF   s     r%   r   z!QueryOptFlags.simplify_expression   rG   r'   c                    | j         j        S )zPushdown slices/limits.r!   r   r:   s    r%   r   zQueryOptFlags.slice_pushdown   s     ..r'   c                    || j         _        d S r*   rR   rF   s     r%   r   zQueryOptFlags.slice_pushdown   s    */'''r'   c                    | j         j        S )z/Elide duplicate plans and caches their outputs.r!   r   r:   s    r%   r   zQueryOptFlags.comm_subplan_elim        11r'   c                    || j         _        d S r*   rU   rF   s     r%   r   zQueryOptFlags.comm_subplan_elim       -2***r'   c                    | j         j        S )z5Elide duplicate expressions and caches their outputs.r!   r   r:   s    r%   r   zQueryOptFlags.comm_subexpr_elim   rV   r'   c                    || j         _        d S r*   rZ   rF   s     r%   r   zQueryOptFlags.comm_subexpr_elim   rX   r'   c                    | j         j        S )z9Do not maintain order if the order would not be observed.r!   r   r:   s    r%   r   z!QueryOptFlags.check_order_observe   rC   r'   c                    || j         _        d S r*   r]   rF   s     r%   r   z!QueryOptFlags.check_order_observe   rG   r'   c                    | j         j        S )z]Replace simple projections with a faster inlined projection that skips the expression engine.r!   r   r:   s    r%   r   zQueryOptFlags.fast_projection   s     //r'   c                    || j         _        d S r*   r`   rF   s     r%   r   zQueryOptFlags.fast_projection   s    +0(((r'   c                    | j         j        S )z7Collapse sequential sort nodes into a single sort node.r!   r   r:   s    r%   r   zQueryOptFlags.sort_collapse   s     --r'   c                    || j         _        d S r*   rc   rF   s     r%   r   zQueryOptFlags.sort_collapse   s    ).&&&r'   strc                4   d| j         j         d| j         j         d| j         d| j         d| j         d| j         d| j         d| j         d	| j	         d
| j
         d| j         d| j         d| j         j         d| j         j         d                                S )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
    sort_collapse: z

    eager: z
    streaming: z
}
        )r!   type_coercion
type_checkr   r   r   r   r   r   r   r   r   r   r5   	streamingstripr:   s    r%   __str__zQueryOptFlags.__str__  s"   $2  !, 
 0  2  2  (  .  .   4  2  *  &   "! "  *#  & EGG'	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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   )r   r   )r   r@   )rD   r@   r   r   )r   re   )__name__
__module____qualname____doc__r&   classmethodr-   staticmethodr1   r"   r6   r;   r>   r0   propertyr   setterr   r   r   r   r   r   r   r   r   rk    r'   r%   r   r      s/         +/+/+/&*)-)-,0&*+/'+%)
 
 
 
 
 
<    [
  +/+/+/&*)-)-,0&*+/'+%)
 
 
 
 
 \
D +/+/+/&*)-)-,0&*+/'+%)- - - - - -^    \G G G GG G G G, , , , 4 4 4 X4 5 5 5  5 3 3 3 X3 4 4 4 4 5 5 5 X5  6 6 6 ! 6 4 4 4 X4 5 5 5  5 / / / X/ 0 0 0 0 2 2 2 X2 3 3 3 3 2 2 2 X2 3 3 3 3 4 4 4 X4 5 5 5  5 0 0 0 X0 1 1 1 1 . . . X. / / / /     r'   r   DEFAULT_QUERY_OPT_FLAGSrt   r   r   c                     dddd	dd
ddfdfdfdfdfdfdfdfdfdfdfdfdfdddfd} | S ) z8Decorator to mark to forward the old optimization flags.fr   
field_namere   rD   r@   r   c                (    t          | ||           | S r*   )setattrrw   rx   rD   s      r%   helperz%forward_old_opt_flags.<locals>.helper"  s    :u%%%r'   c                2    t          | j        ||           | S r*   )rz   r!   r{   s      r%   helper_hiddenz,forward_old_opt_flags.<locals>.helper_hidden&  s    z5111r'   c                <    |rt                                           S | S r*   )r   r1   rw   rD   s     r%   clear_optimizationsz2forward_old_opt_flags.<locals>.clear_optimizations*  s!     	 %%'''Hr'   c                <    |rt                                           S | S r*   )r   r6   r   s     r%   r5   z$forward_old_opt_flags.<locals>.eager0  s!     	 '')))Hr'   c                     | |          S r*   rt   )rw   vr   s     r%   <lambda>z'forward_old_opt_flags.<locals>.<lambda>7  s    (;(;Aq(A(A r'   c                     | |          S r*   rt   )rw   r   r5   s     r%   r   z'forward_old_opt_flags.<locals>.<lambda>8  s    uuQ{{ r'   c                     | d|          S )Nrg   rt   rw   r   r~   s     r%   r   z'forward_old_opt_flags.<locals>.<lambda>9  s    mmA&J&J r'   c                     | d|          S )Nrh   rt   r   s     r%   r   z'forward_old_opt_flags.<locals>.<lambda>:  s    MM!\1$E$E r'   c                     | d|          S )Nr   rt   rw   r   r|   s     r%   r   z'forward_old_opt_flags.<locals>.<lambda>;  s    66!5I1+M+M r'   c                     | d|          S )Nr   rt   r   s     r%   r   z'forward_old_opt_flags.<locals>.<lambda><      FF16KQ,O,O r'   c                     | d|          S )Nr   rt   r   s     r%   r   z'forward_old_opt_flags.<locals>.<lambda>=  r   r'   c                     | d|          S )Nr   rt   r   s     r%   r   z'forward_old_opt_flags.<locals>.<lambda>>      vva1A1'E'E r'   c                     | d|          S )Nr   rt   r   s     r%   r   z'forward_old_opt_flags.<locals>.<lambda>?      &&4G*K*K r'   c                     | d|          S )Nr   rt   r   s     r%   r   z'forward_old_opt_flags.<locals>.<lambda>@  r   r'   c                     | d|          S )Nr   rt   r   s     r%   r   z'forward_old_opt_flags.<locals>.<lambda>A  s    VVA7Mq-Q-Q r'   c                     | d|          S )Nr   rt   r   s     r%   r   z'forward_old_opt_flags.<locals>.<lambda>B  r   r'   c                     | d|          S )Nr   rt   r   s     r%   r   z'forward_old_opt_flags.<locals>.<lambda>C  s    VVA/Da%H%H r'   )no_optimizationr6   rg   _type_checkr   r   r   r   r   r   r   r   _check_orderfunctionCallable[P, T]c                t     t                     d fd            }t          j                   |_        |S )	NargsP.argskwargsP.kwargsr   r   c                 j   |                     dt                    }|                                }t          |                                          D ]U}                     |          }|<ddlm} d| d} ||t                      |||                    |                    }V||d<    | i |S )Noptimizationsr   )issue_warningzoptimization flag `zT` is deprecated. Please use `optimizations` parameter
(Deprecated in version 1.30.0))	getru   r;   listkeyspolars._utils.variousr   DeprecationWarningpop)	r   r   r,   keycbr   messageOLD_OPT_PARAMETERS_MAPPINGr   s	          r%   wrapperz8forward_old_opt_flags.<locals>.decorate.<locals>.wrapperG  s    &,jj!8' 'H  ((**HFKKMM** = =/33C88>CCCCCC OC  O  O  OG!M'+=>>>!r(FJJsOO<<H&.F?#8T,V,,,r'   )r   r   r   r   r   r   )r   inspect	signature__signature__)r   r   r   s   ` r%   decoratez'forward_old_opt_flags.<locals>.decorateF  sQ    	x	- 	- 	- 	- 	- 	- 
	-" !( 1( ; ;r'   )rw   r   rx   re   rD   r@   r   r   )rw   r   rD   r@   r   r   )r   r   r   r   rt   )r   r   r   r5   r|   r~   s    @@@@@r%   forward_old_opt_flagsr     s(                BAAA****JJJJEEEEMMMMOOOOOOOOEEEEKKKKKKKK Q Q Q QEEEEHHHH" "      , Or'   )r   r   )
__future__r   
contextlibpolars._utils.deprecationr   suppressImportErrorpolars._plrr   r   	functoolsr   typingr   r   collections.abcr	   r
   r   r   r   r   r   __annotations__ru   	NameError_r   rt   r'   r%   <module>r      s   " " " " " " "     ? ? ? ? ? ?Z%% ' '&&&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '        ) ) ) ) ) ) ) ) ((((((      666666	#AA} } } } } } } }@ ' & & &!+mooY ! ! ! != = = = = =s$   599
B B-!B((B-