
    ˀh0                    b   U d dl mZ d dl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mZ er0d dlZej                  dk\  rd dl
mZ n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   kxY w# eef$ rZdZY dZ[dZ[ww xY w)    )annotationsN)
PyOptFlags)wraps)TYPE_CHECKINGCallableTypeVar)   
   )	ParamSpecPTc                  l   e Zd ZdZ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       Z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_projectionc       
        l    t        j                         | _        | j                  |||||||||	|

       y )Nr   )r   default_pyoptflagsupdateselfr   r   r   r   r   r   r   r   r   r   s              v/var/www/html/wine-match-dev/backend/winematch-backend/venv/lib/python3.12/site-packages/polars/lazyframe/opt_flags.py__init__zQueryOptFlags.__init__!   sD     &--/1 3 3)//!5) 3+ 	 	
    c                6    | j                  |       }||_        |S N)__new__r   )r    
pyoptflagsoptflagss      r!   _from_pyoptflagszQueryOptFlags._from_pyoptflags=   s    <<%)r#   c        
        l    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(   s              r!   nonezQueryOptFlags.noneC   sK     !?!!#1 3 3)//!5) 3+  
 	
r#   c       
            ||| _         ||| _        ||| _        ||| _        ||| _        ||| _        ||| _        ||| _        |	|	| _        |
|
| _	        | S )z&Update the current optimization flags.r   r   s              r!   r   zQueryOptFlags.updatea   s     )&8D#*':D$*':D$%"0D(%6D"(%6D"+(<D%%"0D*':D$&#2D 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%   r3   r5   s    r!   __deepcopy__zQueryOptFlags.__deepcopy__   r7   r#   c                8    | j                   j                          y)zRemove selected optimizations.N)r   r,   r5   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   r5   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   r5   s    r!   r   z QueryOptFlags.predicate_pushdown   s     222r#   c                &    || j                   _        y r%   rC   r?   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   r5   s    r!   r   z"QueryOptFlags.cluster_with_columns   s     444r#   c                &    || j                   _        y r%   rF   r?   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   r5   s    r!   r   z!QueryOptFlags.simplify_expression   r=   r#   c                &    || j                   _        y r%   rI   r?   s     r!   r   z!QueryOptFlags.simplify_expression   rA   r#   c                .    | j                   j                  S )zPushdown slices/limits.r   r   r5   s    r!   r   zQueryOptFlags.slice_pushdown        ...r#   c                &    || j                   _        y r%   rL   r?   s     r!   r   zQueryOptFlags.slice_pushdown       */'r#   c                .    | j                   j                  S )z/Elide duplicate plans and caches their outputs.r   r   r5   s    r!   r   zQueryOptFlags.comm_subplan_elim        111r#   c                &    || j                   _        y r%   rQ   r?   s     r!   r   zQueryOptFlags.comm_subplan_elim       -2*r#   c                .    | j                   j                  S )z5Elide duplicate expressions and caches their outputs.r   r   r5   s    r!   r   zQueryOptFlags.comm_subexpr_elim   rR   r#   c                &    || j                   _        y r%   rV   r?   s     r!   r   zQueryOptFlags.comm_subexpr_elim   rT   r#   c                .    | j                   j                  S )z5Collapse slower joins with filters into faster joins.r   r   r5   s    r!   r   zQueryOptFlags.collapse_joins   rM   r#   c                &    || j                   _        y r%   rY   r?   s     r!   r   zQueryOptFlags.collapse_joins   rO   r#   c                .    | j                   j                  S )z9Do not maintain order if the order would not be observed.r   r   r5   s    r!   r   z!QueryOptFlags.check_order_observe   r=   r#   c                &    || j                   _        y r%   r\   r?   s     r!   r   z!QueryOptFlags.check_order_observe   rA   r#   c                .    | j                   j                  S )z]Replace simple projections with a faster inlined projection that skips the expression engine.r   r   r5   s    r!   r   zQueryOptFlags.fast_projection   s     ///r#   c                &    || j                   _        y r%   r_   r?   s     r!   r   zQueryOptFlags.fast_projection   s    +0(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
    collapse_joins: 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   r   r0   	streamingstripr5   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   rg   r   rg   r   rg   r   rg   r   rg   r   rg   r   rg   r   rg   r   rg   returnNone)r'   r   rh   r   )r   rg   r   rg   r   rg   r   rg   r   rg   r   rg   r   rg   r   rg   r   rg   r   rg   rh   r   )rh   r   )rh   ri   )rh   bool)r@   rj   rh   ri   )rh   str)__name__
__module____qualname____doc__r"   classmethodr)   staticmethodr-   r   r1   r6   r9   r,   propertyr   setterr   r   r   r   r   r   r   r   r   rf    r#   r!   r   r      s    +/+/+/&*)-)-,0&*+/'+
 (
 )	

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

 $
 '
 '
 *
 $
 )
 %
 

 
@ +/+/+/&*)-)-,0&*+/'+$ ($ )	$
 )$ $$ '$ '$ *$ $$ )$ %$ 
$L  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 / / 0 0 4 4 5  5 0 0 1 1r#   r   DEFAULT_QUERY_OPT_FLAGSrt   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_namer@   s      r!   helperz%forward_old_opt_flags.<locals>.helper  s    :u%r#   c                4    t        | j                  ||       | S r%   )rx   r   ry   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-   rz   r@   s     r!   clear_optimizationsz2forward_old_opt_flags.<locals>.clear_optimizations  s     %%''Hr#   c                2    |rt         j                         S | S r%   )r   r1   r   s     r!   r0   z$forward_old_opt_flags.<locals>.eager#  s     ''))Hr#   c                     | |      S r%   rt   )rz   vr   s     r!   <lambda>z'forward_old_opt_flags.<locals>.<lambda>*  s    (;Aq(A r#   c                     | |      S r%   rt   )rz   r   r0   s     r!   r   z'forward_old_opt_flags.<locals>.<lambda>+  s    uQ{ r#   c                     | d|      S )Nrb   rt   rz   r   r~   s     r!   r   z'forward_old_opt_flags.<locals>.<lambda>,  s    mA&J r#   c                     | d|      S )Nrc   rt   r   s     r!   r   z'forward_old_opt_flags.<locals>.<lambda>-  s    M!\1$E r#   c                     | d|      S )Nr   rt   rz   r   r|   s     r!   r   z'forward_old_opt_flags.<locals>.<lambda>.  s    6!5I1+M r#   c                     | d|      S )Nr   rt   r   s     r!   r   z'forward_old_opt_flags.<locals>.<lambda>/      F16KQ,O r#   c                     | d|      S )Nr   rt   r   s     r!   r   z'forward_old_opt_flags.<locals>.<lambda>0  r   r#   c                     | d|      S )Nr   rt   r   s     r!   r   z'forward_old_opt_flags.<locals>.<lambda>1      va1A1'E r#   c                     | d|      S )Nr   rt   r   s     r!   r   z'forward_old_opt_flags.<locals>.<lambda>2      &4G*K r#   c                     | d|      S )Nr   rt   r   s     r!   r   z'forward_old_opt_flags.<locals>.<lambda>3  r   r#   c                     | d|      S )Nr   rt   r   s     r!   r   z'forward_old_opt_flags.<locals>.<lambda>4  s    VA7Mq-Q r#   c                     | d|      S )Nr   rt   r   s     r!   r   z'forward_old_opt_flags.<locals>.<lambda>5  r   r#   c                     | d|      S )Nr   rt   r   s     r!   r   z'forward_old_opt_flags.<locals>.<lambda>6  s    VA/Da%H r#   )no_optimizationr1   rb   _type_checkr   r   r   r   r   r   r   r   _check_orderc                h     t               d fd       }t        j                         |_        |S )Nc                 0   |j                  dt              }|j                         }t        |j	                               D ]G  }j                  |      }|ddlm} d| d} ||t                |||j                  |            }I ||d<    | i |S )Noptimizationsr   )issue_warningzoptimization flag `zT` is deprecated. Please use `optimizations` parameter
(Deprecated in version 1.30.0))	getru   r6   listkeyspolars._utils.variousr   DeprecationWarningpop)	argskwargsr(   keycbr   messageOLD_OPT_PARAMETERS_MAPPINGfunctions	          r!   wrapperz8forward_old_opt_flags.<locals>.decorate.<locals>.wrapper:  s    &,jj!8'H  ((*HFKKM* =/33C8>C 3C5  9N  OG!'+=>!(FJJsO<H= '/F?#T,V,,r#   )r   zP.argsr   zP.kwargsrh   r   )r   inspect	signature__signature__)r   r   r   s   ` r!   decoratez'forward_old_opt_flags.<locals>.decorate9  s3    	x	- 
	-" !( 1 1( ;r#   )rz   r   r{   rk   r@   rj   rh   r   )rz   r   r@   rj   rh   r   )r   Callable[P, T]rh   r   rt   )r   r   r   r0   r|   r~   s    @@@@@r!   forward_old_opt_flagsr     sU     B*JEMOOEKK QEH" , Or#   )rh   z*Callable[[Callable[P, T]], Callable[P, T]])
__future__r   
contextlibsuppressImportErrorpolars.polarsr   r   	functoolsr   typingr   r   r   sysversion_infor   typing_extensionsr   r   r   __annotations__ru   	NameError_r   rt   r#   r!   <module>r      s    " Z% )()   3 3
7"$/#AAp pf ' &!+o
=[) )R 	Y ! !s#   BB BB."B))B.