
    .h0                    n   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       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)issue_deprecation_warning)
PyOptFlags)wraps)TYPE_CHECKINGCallableTypeVar)   
   )	ParamSpecPTc                  4   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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              X/var/www/html/ai-service/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.noneE   sK     !?!!#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    s              r"   r   zQueryOptFlags.updatec   s     )&8D#*':D$*':D$%"0D(%6D"(%6D"+(<D%%%4 
 "*/'*':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&   r5   r7   s    r"   __deepcopy__zQueryOptFlags.__deepcopy__   r9   r$   c                8    | j                   j                          y)zRemove selected optimizations.N)r   r-   r7   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   r7   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   r7   s    r"   r   z QueryOptFlags.predicate_pushdown   s     222r$   c                &    || j                   _        y r&   rE   rA   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   r7   s    r"   r   z"QueryOptFlags.cluster_with_columns   s     444r$   c                &    || j                   _        y r&   rH   rA   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   r7   s    r"   r   z!QueryOptFlags.simplify_expression   r?   r$   c                &    || j                   _        y r&   rK   rA   s     r"   r   z!QueryOptFlags.simplify_expression   rC   r$   c                .    | j                   j                  S )zPushdown slices/limits.r   r   r7   s    r"   r   zQueryOptFlags.slice_pushdown   s     ...r$   c                &    || j                   _        y r&   rN   rA   s     r"   r   zQueryOptFlags.slice_pushdown   s    */'r$   c                .    | j                   j                  S )z/Elide duplicate plans and caches their outputs.r   r   r7   s    r"   r   zQueryOptFlags.comm_subplan_elim        111r$   c                &    || j                   _        y r&   rQ   rA   s     r"   r   zQueryOptFlags.comm_subplan_elim       -2*r$   c                .    | j                   j                  S )z5Elide duplicate expressions and caches their outputs.r   r   r7   s    r"   r   zQueryOptFlags.comm_subexpr_elim   rR   r$   c                &    || j                   _        y r&   rV   rA   s     r"   r   zQueryOptFlags.comm_subexpr_elim   rT   r$   c                .    | j                   j                  S )z9Do not maintain order if the order would not be observed.r   r   r7   s    r"   r   z!QueryOptFlags.check_order_observe   r?   r$   c                &    || j                   _        y r&   rY   rA   s     r"   r   z!QueryOptFlags.check_order_observe   rC   r$   c                .    | j                   j                  S )z]Replace simple projections with a faster inlined projection that skips the expression engine.r   r   r7   s    r"   r   zQueryOptFlags.fast_projection   s     ///r$   c                &    || j                   _        y r&   r\   rA   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                   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

    eager: z
    streaming: z
}
        )r   type_coercion
type_checkr   r   r   r   r   r   r   r   r   r2   	streamingstripr7   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   rd   r   rd   r   rd   r   rd   r   rd   r   rd   r   rd   r   rd   r   rd   returnNone)r(   r   re   r   )r   rd   r   rd   r   rd   r   rd   r   rd   r   rd   r   rd   r   rd   r   rd   r   rd   re   r   )re   r   )re   rf   )re   bool)rB   rg   re   rf   )re   str)__name__
__module____qualname____doc__r#   classmethodr*   staticmethodr.   r   r3   r8   r;   r-   propertyr   setterr   r   r   r   r   r   r   r   rc    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_FLAGSrq   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_namerB   s      r"   helperz%forward_old_opt_flags.<locals>.helper  s    :u%r$   c                4    t        | j                  ||       | S r&   )ru   r   rv   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.   rw   rB   s     r"   clear_optimizationsz2forward_old_opt_flags.<locals>.clear_optimizations  s     %%''Hr$   c                2    |rt         j                         S | S r&   )r   r3   r}   s     r"   r2   z$forward_old_opt_flags.<locals>.eager!  s     ''))Hr$   c                     | |      S r&   rq   )rw   vr~   s     r"   <lambda>z'forward_old_opt_flags.<locals>.<lambda>(  s    (;Aq(A r$   c                     | |      S r&   rq   )rw   r   r2   s     r"   r   z'forward_old_opt_flags.<locals>.<lambda>)  s    uQ{ r$   c                     | d|      S )Nr_   rq   rw   r   r{   s     r"   r   z'forward_old_opt_flags.<locals>.<lambda>*  s    mA&J r$   c                     | d|      S )Nr`   rq   r   s     r"   r   z'forward_old_opt_flags.<locals>.<lambda>+  s    M!\1$E r$   c                     | d|      S )Nr   rq   rw   r   ry   s     r"   r   z'forward_old_opt_flags.<locals>.<lambda>,  s    6!5I1+M r$   c                     | d|      S )Nr   rq   r   s     r"   r   z'forward_old_opt_flags.<locals>.<lambda>-      F16KQ,O r$   c                     | d|      S )Nr   rq   r   s     r"   r   z'forward_old_opt_flags.<locals>.<lambda>.  r   r$   c                     | d|      S )Nr   rq   r   s     r"   r   z'forward_old_opt_flags.<locals>.<lambda>/      va1A1'E r$   c                     | d|      S )Nr   rq   r   s     r"   r   z'forward_old_opt_flags.<locals>.<lambda>0      &4G*K r$   c                     | d|      S )Nr   rq   r   s     r"   r   z'forward_old_opt_flags.<locals>.<lambda>1  r   r$   c                     | d|      S )Nr   rq   r   s     r"   r   z'forward_old_opt_flags.<locals>.<lambda>2  s    VA7Mq-Q r$   c                     | d|      S )Nr   rq   r   s     r"   r   z'forward_old_opt_flags.<locals>.<lambda>3  r   r$   c                     | d|      S )Nr   rq   r   s     r"   r   z'forward_old_opt_flags.<locals>.<lambda>4  s    VA/Da%H r$   )no_optimizationr3   r_   _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))	getrr   r8   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>.wrapper8  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.kwargsre   r   )r   inspect	signature__signature__)r   r   r   s   ` r"   decoratez'forward_old_opt_flags.<locals>.decorate7  s3    	x	- 
	-" !( 1 1( ;r$   )rw   r   rx   rh   rB   rg   re   r   )rw   r   rB   rg   re   r   )r   Callable[P, T]re   r   rq   )r   r   r~   r2   ry   r{   s    @@@@@r"   forward_old_opt_flagsr     sU     B*JEMOOEKK QEH" , Or$   )re   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__rr   	NameError_r   rq   r$   r"   <module>r      s    "  ?Z% '&'   3 3
7"$/#AAl l^ ' &!+o
=S' 'J 	Y ! !s#   B	B! B!B4(B//B4