
    I j4T                       S r SSKJr  SSKrSSKJrJr  SSKJr  SSK	J
r
JrJrJrJr  SSKrSSKJr  SSKJrJr  SS	KJr  SS
KJr  SSKJs  Jr  SSKJrJ r J!r"  SSK#J$r$  SSK%J&r&  SSK'J(r(  SSK)J*r*  SSK+J,r,  SSK-J.r.J/r/  \
(       a  SSK0J1r1J2r2   " S S\"Rf                  5      r4 " S S\ Rj                  5      r5 " S S\55      r6 " S S\ Rn                  5      r7 " S S\75      r8 " S S\85      r9 " S S \75      r: " S! S"\:5      r; " S# S$\ Rx                  5      r< " S% S&\&5      r=S' r> " S( S)\R~                  5      r@ " S* S+5      rAS-S, jrBg).z/manage PyTables query interface via Expressions    )annotationsN)DecimalInvalidOperation)partial)TYPE_CHECKINGAnyClassVarSelfcast)lib)	Timedelta	Timestamp)UndefinedVariableError)is_list_like)expropsscope)ensure_decoded)BaseExprVisitor)is_term)extract_array)Index)pprint_thingpprint_thing_encoded)TimeUnitnptc                  P   ^  \ rS rSr% SrS\S'      S     SU 4S jjjrSrU =r$ )PyTablesScope6   )
queryablesdict[str, Any]r    c                H   > [         TU ]  US-   X#S9  U=(       d    0 U l        g )N   )global_dict
local_dict)super__init__r    )selflevelr$   r%   r    	__class__s        q/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/pandas/core/computation/pytables.pyr'   PyTablesScope.__init__;   s'     	S$*    )NNN)r)   intr    dict[str, Any] | NonereturnNone)	__name__
__module____qualname____firstlineno__	__slots____annotations__r'   __static_attributes____classcell__r*   s   @r+   r   r   6   s?    I
 ,0++
 *+ 
+ +r-   r   c                  \   ^  \ rS rSr% S\S'   S	S jrS	S
U 4S jjjrS r\S 5       r	Sr
U =r$ )TermF   r   envc                h    [        U[        5      (       a  U nO[        n[        R	                  U5      $ N)
isinstancestrConstantobject__new__)clsnamer>   sideencodingklasss         r+   rE   Term.__new__I   s(    dC  EE~~e$$r-   c                "   > [         TU ]  XX4S9  g N)rH   rI   )r&   r'   r(   rG   r>   rH   rI   r*   s        r+   r'   Term.__init__P   s    Ar-   c                8   U R                   S:X  aJ  U R                  U R                  R                  ;  a  [	        SU R                  < S35      eU R                  $  U R                  R                  U R                  SS9$ ! [         a    U R                  s $ f = f)Nleftzname z is not definedF)is_local)rH   rG   r>   r    	NameErrorresolver   r(   s    r+   _resolve_nameTerm._resolve_nameS   s    99yy 3 33%		}O DEE99	88##DII#>>% 	99	s   #B   BBc                    U R                   $ r@   )_valuerU   s    r+   value
Term.valueb   s    {{r-    NNr>   r   r0   r1   )r2   r3   r4   r5   r7   rE   r'   rV   propertyrZ   r8   r9   r:   s   @r+   r<   r<   F   s3    	%B B  r-   r<   c                  6   ^  \ rS rSrSSU 4S jjjrS rSrU =r$ )rC   g   c                l   > [        U[        5      (       d   [        U5      5       e[        TU ]  XX4S9  g rM   )rA   r   typer&   r'   rN   s        r+   r'   Constant.__init__h   s1    #}--8tCy8-Ar-   c                    U R                   $ r@   )_namerU   s    r+   rV   Constant._resolve_namel   s    zzr-   r\   r]   r^   )r2   r3   r4   r5   r'   rV   r8   r9   r:   s   @r+   rC   rC   g   s    B B r-   rC   c                     ^  \ rS rSr% SrS\S'   S\S'   S\S'   SU 4S	 jjrSS
 jrS rS r	\
SS j5       r\
SS j5       r\
S 5       r\
S 5       r\
S 5       rSS jrSS jrSS jrSrU =r$ )BinOpp      rB   opr!   r    z
str | None	conditionc                L   > [         TU ]  XU5        X@l        XPl        S U l        g r@   )r&   r'   r    rI   rm   )r(   rl   lhsrhsr    rI   r*   s         r+   r'   BinOp.__init__w   s#    #&$ r-   c                    g r@   r\   rU   s    r+   _disallow_scalar_only_bool_ops$BinOp._disallow_scalar_only_bool_ops}       r-   c                b  ^ ^ UU 4S jnT R                   T R                  pC[        U5      (       a/  [        U5      (       a  U" UR                  UR                  5      nU$ [        U5      (       d4  [        U5      (       a$  U" UR	                  T5      UR                  5      nU$ [        U5      (       a4  [        U5      (       d$  U" UR                  UR	                  T5      5      nU$ [        U5      (       d7  [        U5      (       d'  U" UR	                  T5      UR	                  T5      5      nW$ )Nc                  > U c  U$ Uc  U $ Tn[        U [        5      (       aA  [        U[        5      (       a  [        nOz[        X5      (       a  U $ [        X5      (       a  U$ OU[        U [        5      (       a@  [        U[        5      (       a  [        nO$[        X5      (       a  U $ [        X5      (       a  U$ U" TR
                  XTR                  TR                  S9R                  5       $ )z5create and return a new specialized BinOp from myself)r    rI   )	rA   ConditionBinOpJointConditionBinOpFilterBinOpJointFilterBinOprl   r    rI   evaluate)rQ   rightkrJ   r(   s      r+   prBinOp.prune.<locals>.pr   s    |A$//e^44+A((K)) L * D+..e[11(A((K)) L4==hjr-   )ro   rp   r   rZ   prune)r(   rJ   r   rQ   r}   ress   ``    r+   r   BinOp.prune   s    	8 hhe4==WU^^TZZ-C 
 75>>TZZ&4C 
 T]]75>>TZZU!34C 
 $--75>>TZZ&E(:;C
r-   c                    [        U5      (       d  U/n[        U[        R                  5      (       a  UR	                  5       nU$ )zinplace conform rhs)r   rA   npndarrayravel)r(   rp   s     r+   conformBinOp.conform   s5    C  %Cc2::&&))+C
r-   c                4    U R                   U R                  ;   $ )z$return True if this is a valid field)ro   r    rU   s    r+   is_validBinOp.is_valid   s     xx4??**r-   c                P    U R                   R                  U R                  5      SL$ )z`
return True if this is a valid column name for generation (e.g. an
actual column in the table)
N)r    getro   rU   s    r+   is_in_tableBinOp.is_in_table   s"     ""488,D88r-   c                b    [        U R                  R                  U R                  5      SS5      $ )zthe kind of my fieldkindNgetattrr    r   ro   rU   s    r+   r   
BinOp.kind   &     t**4884fdCCr-   c                b    [        U R                  R                  U R                  5      SS5      $ )zthe meta of my fieldmetaNr   rU   s    r+   r   
BinOp.meta   r   r-   c                b    [        U R                  R                  U R                  5      SS5      $ )zthe metadata of my fieldmetadataNr   rU   s    r+   r   BinOp.metadata   s&     t**4884j$GGr-   c                x    UR                  U R                  5      nSU R                   SU R                   SU S3$ )z2create and return the op string for this TermValue( ))tostringrI   ro   rl   )r(   vvals      r+   generateBinOp.generate   s7    jj'488*AdggYauA..r-   c           	     L  ^  U 4S jn[        T R                  5      n[        T R                  5      nUS:X  d  U(       a  UR                  S5      (       a  [	        U[
        [        45      (       a  U" U5      n[        U5      nSnSU;   a!  [        SUR                  S5      S   SS 5      n[        U5      R                  U5      nUR                  b  UR                  S	5      n[        XR                  U5      $ UR                  S
5      (       a  SnSU;   a!  [        SUR                  S5      S   SS 5      n[	        U[        5      (       a  [!        U5      nOL["        R$                  " U5      (       d  ["        R&                  " U5      (       a  [!        USS9nO[!        U5      nUR                  U5      R                  n[        [        U5      X5      $ US:X  aC  [)        T R*                  SS9nX;  a  SnO[,        R.                  " Xa:H  5      S   n[        XwS5      $ US:X  a0   [1        U5      n[        UR3                  SS95      n[        XU5      $ US:X  a  [        U5      n[        XU5      $ US:X  aN  [	        U[        5      (       a"  UR7                  5       R9                  5       S;  nO[;        U5      n[        XU5      $ [	        U[        5      (       a  [        X" U5      S5      $ [=        SU S[?        U5       SU S35      e! [4         a    [        U5         Nf = f)zV
convert the expression that is in the term to something that is
accepted by pytables
c                \   > TR                   b  [        U TR                   S9$ [        U 5      $ )N)rI   )rI   r   r   )rZ   r(   s    r+   	stringify&BinOp.convert_value.<locals>.stringify   s)    }}(+EDMMJJ&&r-   datetime
datetime64ns[r   NUTC	timedeltas)unitcategoryT)extract_numpyr   integerROUND_HALF_EVEN)roundingfloatbool)	falsefnonnone0z[]z{} stringzCannot compare z	 of type z to z column) r   r   r   
startswithrA   r.   r   r   splitr   as_unittz
tz_convert	TermValuerY   rB   r   r   
is_integeris_floatr   r   r   flatnonzeror   to_integral_exactr   striplowerr   	TypeErrorrc   )	r(   conv_valr   r   r   r   r   resultv_decs	   `        r+   convert_valueBinOp.convert_value   s   	'
 dii(dii(:$4??<+H+H(S%L11$X.%h/H!Dd{J

3(;CR(@A *2248H{{&#..u5X==__[))Dd{J

3(;CR(@A(C(($X.))S\\(-C-C$XC8$X.''-44HS]H;;Z$T]]$GH' (<=a@VY77YT) u66@Q6RSX66W_XHX66V^(C((#>>+113 
< 
  >X66#&&Xy':HEE!(9T(^4DDgV = $   h s   &L L#"L#c                    g r@   r\   rU   s    r+   convert_valuesBinOp.convert_values&  ru   r-   )rm   rI   r    )rl   rB   r    r!   r0   r1   r0   r1   r0   r   r0   rB   )r0   r   )r2   r3   r4   r5   _max_selectorsr7   r'   rs   r   r   r_   r   r   r   r   r   r   r   r   r8   r9   r:   s   @r+   ri   ri   p   s    NG(T + + 9 9 D D D D H H/
Qf r-   ri   c                  V    \ rS rSr% SrS\S'   SS jrSS jrS rSS jr	SSS	 jjr
S
rg)rz   i*  Nztuple[Any, Any, Index] | Nonefilterc                v    U R                   c  g[        SU R                   S    SU R                   S    S35      $ )NzFilter: Not Initializedz[Filter : [r   z] -> [r#   ])r   r   rU   s    r+   __repr__FilterBinOp.__repr__-  s;    ;;,k$++a.)9A?OqQRRr-   c                    U R                   b1  U R                   S   U R                  SS9U R                   S   4U l         U $ )zinvert the filterr   T)invert   )r   generate_filter_oprU   s    r+   r   FilterBinOp.invert2  sC    ;;"A''t'4ADK
 r-   c                    U R                   /$ )zreturn the actual filter formatr   rU   s    r+   formatFilterBinOp.format<  s    }r-   c                   U R                   (       d  [        SU  S35      eU R                  U R                  5      n[	        U5      nU R
                  (       aY  U R                  S;   aH  [        U5      U R                  :  a/  U R                  5       nU R                  U[        U5      4U l        U $ g U R                  S;   a/  U R                  5       nU R                  U[        U5      4U l        U $ [        SU  S35      e)Nquery term is not valid [r   ==!=z7passing a filterable condition to a non-table indexer [)r   
ValueErrorr   rp   listr   rl   lenr   r   ro   r   r   r   )r(   rp   values	filter_ops       r+   r|   FilterBinOp.evaluateA  s    }}8a@AAll488$cww,&3v;9L9L+L 335	#xxE&MB 77l"//1I88Yf>DK 	 I$qQ r-   c                j    U R                   S:X  a  U(       a  U R                   S:X  a
  U(       a  S $ S $ )Nr   r   c                &    U R                  U5      ) $ r@   isinaxisvalss     r+   <lambda>0FilterBinOp.generate_filter_op.<locals>.<lambda>_  s    tyy&6r-   c                $    U R                  U5      $ r@   r   r   s     r+   r   r   a  s    diior-   )rl   )r(   r   s     r+   r   FilterBinOp.generate_filter_op]  s'    GGtOF4F6655r-   r   r   r0   r
   r0   zSelf | None)F)r   r   )r2   r3   r4   r5   r   r7   r   r   r   r|   r   r8   r\   r-   r+   rz   rz   *  s,    ,0F)0S

86 6r-   rz   c                  $    \ rS rSrS rSS jrSrg)r{   id  c                    [        S5      e)Nz unable to collapse Joint FiltersNotImplementedErrorrU   s    r+   r   JointFilterBinOp.formate  s    !"DEEr-   c                    U $ r@   r\   rU   s    r+   r|   JointFilterBinOp.evaluatei  s    r-   r\   Nr   )r2   r3   r4   r5   r   r|   r8   r\   r-   r+   r{   r{   d  s    Fr-   r{   c                  4    \ rS rSrSS jrS rS rS	S jrSrg)
rx   im  c                4    [        SU R                   S35      $ )Nz[Condition : [z]])r   rm   rU   s    r+   r   ConditionBinOp.__repr__n  s    nT^^,<B?@@r-   c                    [        S5      e)zinvert the conditionz6cannot use an invert condition when passing to numexprr  rU   s    r+   r   ConditionBinOp.invertq  s    
 "D
 	
r-   c                    U R                   $ )zreturn the actual ne formatrm   rU   s    r+   r   ConditionBinOp.formatz  s    ~~r-   c                   U R                   (       d  [        SU  S35      eU R                  (       d  g U R                  U R                  5      nU Vs/ s H  o R                  U5      PM     nnU R                  S;   aV  [        U5      U R                  ::  a<  U Vs/ s H  o R                  U5      PM     nnSSR                  U5       S3U l        U $ g U R                  US   5      U l        U $ s  snf s  snf )Nr   r   r   r   z | r   r   )r   r   r   r   rp   r   rl   r   r   r   joinrm   )r(   rp   r   r   vss        r+   r|   ConditionBinOp.evaluate  s    }}8a@AA ll488$145A$$Q'5 77l"6{d1110671mmA&7#$UZZ^$4A!6 	 !]]6!95DN 6 8s   C/C4r  Nr   r  )	r2   r3   r4   r5   r   r   r   r|   r8   r\   r-   r+   rx   rx   m  s    A

r-   rx   c                      \ rS rSrSS jrSrg)ry   i  c                    SU R                   R                   SU R                   SU R                  R                   S3U l        U $ )Nr   r   r   )ro   rm   rl   rp   rU   s    r+   r|   JointConditionBinOp.evaluate  s=    TXX//0$''!DHH<N<N;OqQr-   r  Nr   )r2   r3   r4   r5   r|   r8   r\   r-   r+   ry   ry     s    r-   ry   c                      \ rS rSrS rSrg)UnaryOpi  c                L   U R                   S:w  a  [        S5      eU R                  nUR                  U5      nUbi  [	        U[
        5      (       a  UR                  c7  [	        U[
        5      (       d2  [	        U[        5      (       a  UR                  b  UR                  5       $ g )N~z$UnaryOp only support invert type ops)
rl   r  operandr   
issubclassrx   rm   rz   r   r   )r(   rJ   r  s      r+   r   UnaryOp.prune  s    77c>%&LMM,,--&~..73D3D3Pun55uk22NN. >>##r-   r\   N)r2   r3   r4   r5   r   r8   r\   r-   r+   r  r    s    r-   r  c                  |   ^  \ rS rSr% \rS\S'   \rS\S'   SU 4S jjr	SS jr
S rS	 rSS
 jrS rS rS rSrU =r$ )PyTablesExprVisitori  zClassVar[type[ops.Term]]
const_typezClassVar[type[Term]]	term_typec                   >^ [         TU ]  XU5        U R                   H)  nU R                  U   n[	        U SU 3U4U4S jj5        M+     g )Nvisit_c                &   > [        [        U40 TD6$ r@   )r   ri   )nodebin_opkwargss     r+   r   .PyTablesExprVisitor.__init__.<locals>.<lambda>  s    GE6,LV,Lr-   )r&   r'   
binary_opsbinary_op_nodes_mapsetattr)r(   r>   engineparserr(  r'  bin_noder*   s       `  r+   r'   PyTablesExprVisitor.__init__  sK    f-ooF//7H
#$*L &r-   c                   [        UR                  [        R                  [        R                  45      (       a%  [        SU R                  UR                  5      5      $ [        UR                  [        R                  5      (       a@  U R                  U R                  UR                  5      R                  * U R                  5      $ [        UR                  [        R                  5      (       a  [        S5      eg )Nr  zUnary addition not supported)rA   rl   astNotInvertr  visitr  USubr!  rZ   r>   UAddr  r(   r&  r(  s      r+   visit_UnaryOp!PyTablesExprVisitor.visit_UnaryOp  s    dgg4553

4<< 899**??DJJt||$<$B$B#BDHHMM**%&DEEr-   c                L    U R                  UR                  5      R                  $ r@   )r5  rZ   r8  s      r+   visit_IndexPyTablesExprVisitor.visit_Index  s    zz$**%+++r-   c                    [         R                  " [         R                  " 5       /UR                  S   UR                  /S9nU R                  U5      $ )Nr   )r   rQ   comparators)r2  CompareEqtargetsrZ   r5  )r(   r&  r(  cmprs       r+   visit_Assign PyTablesExprVisitor.visit_Assign  s>    {{
atzzl
 zz$r-   c                t   U R                  UR                  5      nU R                  UR                  5      n UR                  n[	        U[
        5      (       a  UR                  n U R                  X4   U R                  5      $ ! [         a     NLf = f! [         a  n[        SU< SU< 35      UeS nAff = f)Nzcannot subscript z with )
r5  rZ   sliceAttributeErrorrA   r<   r!  r>   r   r   )r(   r&  r(  rZ   slobjerrs         r+   visit_Subscript#PyTablesExprVisitor.visit_Subscript  s     

4::&

4::&	KKE eT""KKE	T??5<::  		  	T0	yIJPSS	Ts)   B &B 
BB
B7B22B7c                   UR                   nUR                  n[        UR                  5      nU[        R
                  :X  aD  U R                  U5      n UR                  n U R                  [        Xc5      U R                  5      $ [        SUR                   35      e! [         a     NJf = f! [         a6    [        U[        R                  5      (       a  UR                  U:X  a  Us $  Ngf = f)NzInvalid Attribute context )attrrZ   rc   ctxr2  Loadr5  rH  r"  r   r>   rA   Nameidr   r2   )r(   r&  r(  rN  rZ   rO  resolveds          r+   visit_Attribute#PyTablesExprVisitor.visit_Attribute  s    yy

488n#((?zz%(H#>>$~~gh&=txxHH 5cll^DEE " 
 " $eSXX..588t3C#O$s$   B !$B. 
B+*B+.;C.-C.c                n    [        U[        R                  5      (       a  [        R                  " 5       $ U$ r@   )rA   r2  InrA  )r(   rl   s     r+   translate_In PyTablesExprVisitor.translate_In  s#    %b#&&11svvx9r9r-   c                R    U R                  UR                  5      UR                  X#4$ r@   )r5  rl   )r(   r&  rQ   r}   s       r+   _rewrite_membership_op*PyTablesExprVisitor._rewrite_membership_op  s     zz$''"DGGT88r-   r\   r   )r0   zops.Term | UnaryOp | None)r0   zops.Term)r2   r3   r4   r5   rC   r!  r7   r<   r"  r'   r9  r<  rD  rK  rT  rX  r[  r8   r9   r:   s   @r+   r   r     sH    +3J(3&*I#*, T&F0:9 9r-   r   c                r    [        U [        [        45      (       d  [        U 5      (       d  [	        S5      eU $ )ag  
Validate that the where statement is of the right type.

The type may either be String, Expr, or list-like of Exprs.

Parameters
----------
w : String term expression, Expr, or list-like of Exprs.

Returns
-------
where : The original where clause if the check was successful.

Raises
------
TypeError : An invalid data type was passed in for w (e.g. dict).
zLwhere must be passed as a string, PyTablesExpr, or list-like of PyTablesExpr)rA   PyTablesExprrB   r   r   )ws    r+   _validate_wherer`    s7    $ q<-..,q//+
 	

 Hr-   c                  f    \ rS rSr% SrS\S'   S\S'   S\S'      S     SS
 jjrSS jrS rSr	g	)r^  i#  ae  
Hold a pytables-like expression, comprised of possibly multiple 'terms'.

Parameters
----------
where : string term expression, PyTablesExpr, or list-like of PyTablesExprs
queryables : a "kinds" map (dict of column name -> kind), or None if column
    is non-indexable
encoding : an encoding that will encode the query terms

Returns
-------
a PyTablesExpr object

Examples
--------
'index>=date'
"columns=['A', 'D']"
'columns=A'
'columns==A'
"~(columns=['A','B'])"
'index>df.index[3] & string="bar"'
'(index>df.index[3] & index<=df.index[6]) | string="bar"'
"ts>=Timestamp('2012-02-01')"
"major_axis>=20130101"
zPyTablesExprVisitor | None_visitorr   r>   rB   r   Nc                L   [        U5      nX0l        S U l        S U l        S U l        S U l        S n[        U[        5      (       a#  UR                  R                  nUR                  nO[        U5      (       a  [        U5      n[        U5       H?  u  px[        U[        5      (       a  UR                  R                  nM2  [        U5      X'   MA     SR                  [        R                   " U5       Vs/ s H	  nSU S3PM     sn5      nOUnX`l
        [#        US-   US9U l        Ubw  [        U R                  [$        5      (       aW  U R                  R&                  R)                  U5        [+        U R                  USSUS9U l        U R-                  5       U l        g g g s  snf )Nz & r   r   r#   )r%   pytables)r    r.  r-  rI   )r`  rI   rm   r   termsrb  rA   r^  r>   r   r   r   r   	enumerater  comflattenr   rB   r    updater   parse)	r(   wherer    rI   scope_levelr%   _whereidxr_  s	            r+   r'   PyTablesExpr.__init__C  s`     & 
 <@
e\**JZZF%  KE#E*a..!"J!0!3EJ	 +
 ZZ3;;u3E F3Ea1QCq3E FGF F	 qZH!jC&@&@HH&&z2/%!!!DM DJ 'A! !Gs   4F!c                p    U R                   b  [        U R                   5      $ [        U R                  5      $ r@   )re  r   r   rU   s    r+   r   PyTablesExpr.__repr__s  s*    ::!

++DII&&r-   c                    U R                   R                  [        5      U l         U R                   R                  [        5      U l        U R                  U R                  4$ ! [         a"  n[        SU R                   SU  S35      UeSnAff = f! [         a"  n[        SU R                   SU  S35      UeSnAff = f)z2create and return the numexpr condition and filterzcannot process expression [z], [z] is not a valid conditionNz] is not a valid filter)	re  r   rx   rm   rH  r   r   rz   r   )r(   rJ  s     r+   r|   PyTablesExpr.evaluatex  s    	!ZZ--n=DN	****;7DK ~~t{{**  	-dii[TF C+ + 	  	-dii[TF C( ( 	s.   $A# $B #
B-B

B
B>B99B>)rb  rm   rI   r>   r   r   re  )NNr   )r    r/   rl  r.   r0   r1   r   )
r2   r3   r4   r5   __doc__r7   r'   r   r|   r8   r\   r-   r+   r^  r^  #  sS    6 )(	
I
 -1.& *.&
 .& 
.&`'
+r-   r^  c                  ,    \ rS rSrSrSS jrSS jrSrg)	r   i  z<hold a term value the we use to construct a condition/filterc                `    [        U[        5      (       d   U5       eXl        X l        X0l        g r@   )rA   rB   rZ   	convertedr   )r(   rZ   rw  r   s       r+   r'   TermValue.__init__  s)    $$$*d*$
"	r-   c                    U R                   S:X  a(  Ub  [        U R                  5      $ SU R                   S3$ U R                   S:X  a  [        U R                  5      $ [        U R                  5      $ )z6quote the string if not encoded else encode and returnr   "r   )r   rB   rw  repr)r(   rI   s     r+   r   TermValue.tostring  sc    99 #4>>**t~~&a((YY'! ''4>>""r-   )rw  r   rZ   N)r   rB   r0   r1   r   )r2   r3   r4   r5   rt  r'   r   r8   r\   r-   r+   r   r     s    F
#r-   r   c                   ^  [        T [        5      (       d  g[        R                  [        R                  -   S-   n[        U 4S jU 5       5      $ )z7loose checking if s is a pytables-acceptable expressionF)=c              3  ,   >#    U  H	  oT;   v   M     g 7fr@   r\   ).0rl   r   s     r+   	<genexpr>#maybe_expression.<locals>.<genexpr>  s     ,2Qws   )rA   rB   r   r*  	unary_opsany)r   
operationss   ` r+   maybe_expressionr    sC    a$//2E2O2OORXXJ ,,,,r-   r   )Crt  
__future__r   r2  decimalr   r   	functoolsr   typingr   r   r	   r
   r   numpyr   pandas._libsr   pandas._libs.tslibsr   r   pandas.errorsr   pandas.core.dtypes.commonr   pandas.core.commoncorecommonrg  pandas.core.computationr   r   r   _scopepandas.core.computation.commonr   pandas.core.computation.exprr   pandas.core.computation.opsr   pandas.core.constructionr   pandas.core.indexes.baser   pandas.io.formats.printingr   r   pandas._typingr   r   Scoper   r<   rC   ri   rz   r{   rx   ry   r  r   r`  Exprr^  r   r  r\   r-   r+   <module>r     s   5 " 
     1 2     
 : 8 / 2 *
 +FLL + 388 Bt wCII wt76% 76t{ *U *Z. ckk (P9/ P9f6f+499 f+R# #,-r-   