
    AHj3                    Z   U d dl mZ d dlZd dlmZ d dlmZ  ej                  e      5  d dl	m
Z
 ddd       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ddZy# 1 sw Y   [xY w# eef$ rZdZY dZ[dZ[ww xY w)    )annotationsN)cast)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	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d!dZed"d       Zedddddddddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d#d       Zdddddddddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d#dZ	ed$d       Z
d$d	Zd$d
Zd%dZed&d       Zej                   d'd       Zed&d       Zej                   d'd       Zed&d       Zej                   d'd       Zed&d       Zej                   d'd       Zed&d       Zej                   d'd       Zed&d       Zej                   d'd       Zed&d       Zej                   d'd       Zed&d       Zej                   d'd       Zed&d       Zej                   d'd       Zed&d       Zej                   d'd       Zd(d Zy))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_collapsec               n    t        j                         | _        | j                  |||||||||	|
|       y )Nr   )r   default_pyoptflagsupdateselfr   r   r   r   r   r   r   r   r   r   r   s               R/root/tools/cai/cai_env/lib/python3.12/site-packages/polars/lazyframe/opt_flags.py__init__zQueryOptFlags.__init__"   sG     &--/1 3 3)//!5) 3+' 	 	
    c                6    | j                  |       }||_        |S N)__new__r   )r"   
pyoptflagsoptflagss      r#   _from_pyoptflagszQueryOptFlags._from_pyoptflags@   s    <<%)r%   c                n    t               }|j                          |j                  | |||||||||	|
      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.noneF   sN      !?!!#1 3 3)//!5) 3+'  
 	
r%   c                   ||| _         ||| _        ||| _        ||| _        ||| _        ||| _        ||| _        |t        dd       |sd| _         |	|	| _        |
|
| _	        ||| _
        | S )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   r!   s               r#   r    zQueryOptFlags.updatef   s      )&8D#*':D$*':D$%"0D(%6D"(%6D"+(<D%%%4 
 "*/'*':D$&#2D $!.Dr%   c                 j    t               } | j                          d| j                  _        d| _        | S )r-   T)r   r.   r   eagerr   )r*   s    r#   _eagerzQueryOptFlags._eager   s2     !?!!#%)"'+$r%   c                \    t         j                  | j                  j                               S r'   r   r+   r   copyr"   s    r#   __copy__zQueryOptFlags.__copy__   "    --d.>.>.C.C.EFFr%   c                \    t         j                  | j                  j                               S r'   r6   r8   s    r#   __deepcopy__zQueryOptFlags.__deepcopy__   r:   r%   c                8    | j                   j                          y)zRemove selected optimizations.N)r   r.   r8   s    r#   r.   zQueryOptFlags.no_optimizations   s    ))+r%   c                .    | j                   j                  S )z3Only read columns that are used later in the query.r   r   r8   s    r#   r   z!QueryOptFlags.projection_pushdown        333r%   c                &    || j                   _        y r'   r?   r"   values     r#   r   z!QueryOptFlags.projection_pushdown       /4,r%   c                .    | j                   j                  S )z.Apply predicates/filters as early as possible.r   r   r8   s    r#   r   z QueryOptFlags.predicate_pushdown   s     222r%   c                &    || j                   _        y r'   rF   rB   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   r8   s    r#   r   z"QueryOptFlags.cluster_with_columns   s     444r%   c                &    || j                   _        y r'   rI   rB   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   r8   s    r#   r   z!QueryOptFlags.simplify_expression   r@   r%   c                &    || j                   _        y r'   rL   rB   s     r#   r   z!QueryOptFlags.simplify_expression   rD   r%   c                .    | j                   j                  S )zPushdown slices/limits.r   r   r8   s    r#   r   zQueryOptFlags.slice_pushdown   s     ...r%   c                &    || j                   _        y r'   rO   rB   s     r#   r   zQueryOptFlags.slice_pushdown   s    */'r%   c                .    | j                   j                  S )z/Elide duplicate plans and caches their outputs.r   r   r8   s    r#   r   zQueryOptFlags.comm_subplan_elim        111r%   c                &    || j                   _        y r'   rR   rB   s     r#   r   zQueryOptFlags.comm_subplan_elim       -2*r%   c                .    | j                   j                  S )z5Elide duplicate expressions and caches their outputs.r   r   r8   s    r#   r   zQueryOptFlags.comm_subexpr_elim   rS   r%   c                &    || j                   _        y r'   rW   rB   s     r#   r   zQueryOptFlags.comm_subexpr_elim   rU   r%   c                .    | j                   j                  S )z9Do not maintain order if the order would not be observed.r   r   r8   s    r#   r   z!QueryOptFlags.check_order_observe   r@   r%   c                &    || j                   _        y r'   rZ   rB   s     r#   r   z!QueryOptFlags.check_order_observe   rD   r%   c                .    | j                   j                  S )z]Replace simple projections with a faster inlined projection that skips the expression engine.r   r   r8   s    r#   r   zQueryOptFlags.fast_projection   s     ///r%   c                &    || j                   _        y r'   r]   rB   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   r8   s    r#   r   zQueryOptFlags.sort_collapse   s     ---r%   c                &    || j                   _        y r'   r`   rB   s     r#   r   zQueryOptFlags.sort_collapse   s    ).&r%   c                   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j                         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   r3   	streamingstripr8   s    r#   __str__z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   None | boolr   rh   r   rh   r   rh   r   rh   r   rh   r   rh   r   rh   r   rh   r   rh   r   rh   returnNone)r)   r   ri   r   )r   rh   r   rh   r   rh   r   rh   r   rh   r   rh   r   rh   r   rh   r   rh   r   rh   r   rh   ri   r   )ri   r   )ri   rj   )ri   bool)rC   rk   ri   rj   )ri   str)__name__
__module____qualname____doc__r$   classmethodr+   staticmethodr/   r    r4   r9   r<   r.   propertyr   setterr   r   r   r   r   r   r   r   r   rg    r%   r#   r   r      s     +/+/+/&*)-)-,0&*+/'+%)
 (
 )	

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

 $
 '
 '
 *
 $
 )
 %
 #
 

 
D +/+/+/&*)-)-,0&*+/'+%)- (- )	-
 )- $- '- '- *- $- )- %- #- 
-^  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_FLAGSru   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.c                     t        | ||       | S r'   )setattrf
field_namerC   s      r#   helperz%forward_old_opt_flags.<locals>.helper#  s    :u%r%   c                4    t        | j                  ||       | S r'   )ry   r   rz   s      r#   helper_hiddenz,forward_old_opt_flags.<locals>.helper_hidden'  s    z51r%   c                2    |rt         j                         S | S r'   )r   r/   r{   rC   s     r#   clear_optimizationsz2forward_old_opt_flags.<locals>.clear_optimizations+  s     %%''Hr%   c                2    |rt         j                         S | S r'   )r   r4   r   s     r#   r3   z$forward_old_opt_flags.<locals>.eager1  s     ''))Hr%   c                     | |      S r'   ru   )r{   vr   s     r#   <lambda>z'forward_old_opt_flags.<locals>.<lambda>8  s    (;Aq(A r%   c                     | |      S r'   ru   )r{   r   r3   s     r#   r   z'forward_old_opt_flags.<locals>.<lambda>9  s    uQ{ r%   c                     | d|      S )Nrc   ru   r{   r   r   s     r#   r   z'forward_old_opt_flags.<locals>.<lambda>:  s    mA&J r%   c                     | d|      S )Nrd   ru   r   s     r#   r   z'forward_old_opt_flags.<locals>.<lambda>;  s    M!\1$E r%   c                     | d|      S )Nr   ru   r{   r   r}   s     r#   r   z'forward_old_opt_flags.<locals>.<lambda><  s    6!5I1+M r%   c                     | d|      S )Nr   ru   r   s     r#   r   z'forward_old_opt_flags.<locals>.<lambda>=      F16KQ,O r%   c                     | d|      S )Nr   ru   r   s     r#   r   z'forward_old_opt_flags.<locals>.<lambda>>  r   r%   c                     | d|      S )Nr   ru   r   s     r#   r   z'forward_old_opt_flags.<locals>.<lambda>?      va1A1'E r%   c                     | d|      S )Nr   ru   r   s     r#   r   z'forward_old_opt_flags.<locals>.<lambda>@      &4G*K r%   c                     | d|      S )Nr   ru   r   s     r#   r   z'forward_old_opt_flags.<locals>.<lambda>A  r   r%   c                     | d|      S )Nr   ru   r   s     r#   r   z'forward_old_opt_flags.<locals>.<lambda>B  s    VA7Mq-Q r%   c                     | d|      S )Nr   ru   r   s     r#   r   z'forward_old_opt_flags.<locals>.<lambda>C  r   r%   c                     | d|      S )Nr   ru   r   s     r#   r   z'forward_old_opt_flags.<locals>.<lambda>D  s    VA/Da%H r%   )no_optimizationr4   rc   _type_checkr   r   r   r   r   r   r   r   _check_orderc                h     t               d fd       }t        j                         |_        |S )Nc                 D   t        d|j                  dt                    }|j                         }t	        |j                               D ]G  }j                  |      }|ddlm} d| d} ||t                |||j                  |            }I ||d<    | i |S )Nr   optimizationsr   )issue_warningzoptimization flag `zT` is deprecated. Please use `optimizations` parameter
(Deprecated in version 1.30.0))
r   getrv   r9   listkeyspolars._warningsr   DeprecationWarningpop)	argskwargsr*   keycbr   messageOLD_OPT_PARAMETERS_MAPPINGfunctions	          r#   wrapperz8forward_old_opt_flags.<locals>.decorate.<locals>.wrapperH  s    O=T!UH  ((*HFKKM* =/33C8>> 3C5  9N  OG!'+=>!(FJJsO<H= '/F?#T,V,,r%   )r   zP.argsr   zP.kwargsri   r   )r   inspect	signature__signature__)r   r   r   s   ` r#   decoratez'forward_old_opt_flags.<locals>.decorateG  s3    	x	- 
	-" !( 1 1( ;r%   )r{   r   r|   rl   rC   rk   ri   r   )r{   r   rC   rk   ri   r   )r   Callable[P, T]ri   r   ru   )r   r   r   r3   r}   r   s    @@@@@r#   forward_old_opt_flagsr      sU     B*JEMOOEKK QEH" , Or%   )ri   r   )
__future__r   
contextlibtypingr   polars._utils.deprecationr   suppressImportErrorpolars._plrr   r   	functoolsr   r   r	   collections.abcr
   r   polars._utils.variousr   r   r   r   __annotations__rv   	NameError_r   ru   r%   r#   <module>r      s    "   ?Z% '&'   )( 6#AA} }@ ' &!+o
=q' 'h 	Y ! !s#   B?B BB*B%%B*