
    ij                    "   d Z ddlmZ ddlmZmZ ddlmZ ddlZddl	Z
ddlmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZ ddlmc mZ ddlmZ erddlmZmZ ddlm Z  ddl!m"Z" ddl#m$Z$ 	 	 ddZ%	 	 	 	 	 	 ddZ&ddZ'ddZ(e(d        Z)d Z*d Z+y)z!
Core eval alignment algorithms.
    )annotations)partialwraps)TYPE_CHECKINGN)
get_option)PerformanceWarning)find_stack_level)ABCDataFrame	ABCSeries)PandasObject)result_type_many)CallableSequence)F)NDFrame)Indexc                R   d }t        | j                  t        j                        r3t	        t        j
                  | j                  j                        }||fS t        | j                        }t        | j                  d      r t        || j                  j                        }||fS )N)dtypeaxes)
isinstancevaluenpndarrayr   
asanyarrayr   typehasattr_zip_axes_from_typer   )termr   typs      Z/app/cer_product_mecsu/.venv/lib/python3.12/site-packages/pandas/core/computation/align.py_align_core_single_unary_opr!   *   s}     %)D$**bjj)bmm4::+;+;< 9	 4::4::v&&sDJJOO<D9    c                f    t        | j                        D ci c]  \  }}|||    c}}S c c}}w N)	enumerate_AXIS_ORDERS)r   new_axesinames       r    r   r   :   s0     .7s7G7G-HI'!TD(1+IIIs   -c                &    t        d | D              S )zB
    Check a sequence of terms for instances of PandasObject.
    c              3  P   K   | ]  }t        |j                  t                 y wr$   )r   r   r   .0r   s     r    	<genexpr>z&_any_pandas_objects.<locals>.<genexpr>D   s     Fz$**l3Fs   $&)any)termss    r    _any_pandas_objectsr1   @   s     FFFFr"   c                .     t                fd       }|S )Nc                    t        |       dk(  rt        | d         S d | D        }t        |       s
t        | d fS  |       S )N   r   c              3  4   K   | ]  }|j                     y wr$   r   r,   s     r    r.   z9_filter_special_cases.<locals>.wrapper.<locals>.<genexpr>N   s     4dtzz4   )lenr!   r1   r   )r0   term_valuesfs     r    wrapperz&_filter_special_cases.<locals>.wrapperH   sL     u:?.uQx884e4 #5)#[1477xr"   )r   )r:   r;   s   ` r    _filter_special_casesr<   G   s     
1X  Nr"   c                    t               D cg c]  \  }}t        |j                  d      s|  }}}|D cg c]  } |   j                  j                   }}ddlm}  |t        t        ||d                  } |j                            j                  }|j                  }|j                  }	t        |	      }
|
dkD  } fd|D        D ]y  }t        |t              }|xr |}t        |j                        D ]I  \  }}|r|
dz
  |j                  }}n||}}|	|   j                  |      r3|	|   j!                  |      |	|<   K { |j#                         D ]Y  \  }}t        t%        |      |	d      D ]  \  }} |   j                  }t        |d	      s#t        |t              xr |
dkD  }|r|	|
dz
     n|}t        |j                  |         }t        |      }t'        j(                  t+        dt-        ||z
                    }t/        d
      rH|dk\  rC|dk\  r>d| d |   j0                  d|dd}t3        j4                  |t6        t9                      |j;                  ||      } |   j=                  |         |   j=                   |   j                  j>                         \ |tA        ||	      fS c c}}w c c}w )Nr   r   )SeriesT)strictr4   c              3  <   K   | ]  }|   j                     y wr$   r6   )r-   r(   r0   s     r    r.   z_align_core.<locals>.<genexpr>i   s     5Q%(..5s   Freindexperformance_warningsi'  zAlignment difference on axis z. is larger than an order of magnitude on term z, by more than z.4gz; performance may suffer.)category
stacklevel)axis)!r%   r   r   ndimpandasr>   dictzipidxmax_constructorr   r8   r   r   indexis_unionitemsranger   log10maxabsr   r)   warningswarnr   r	   rA   updatevaluesr   )r0   r(   r   
term_index	term_dimsr>   ndimsbiggestr   r   naxesgt_than_one_axisr   	is_seriesis_series_and_gt_one_axisrE   rO   axitmrF   ti	transpose	reindexerterm_axis_sizereindexer_sizeordmwobjs   `                           r    _align_corerj   Y   s   #,U#3S4wtzz67R!SJS.89q$$9I94J	$?@AE ELLN#))G


C<<DIEqy5*5 /ui0	$-$B2B!$UZZ0 	/KD%(!)U[[CC8<<$8>>#.R	/	/ ;;= /4uT{D? 	%KD%qBr9%&r95C%!)	/8DOe	!$RWWT]!3!$YxxAs>N+J'K LM56	&%/ 8v >>>CAhmm=N O((,Sz1JL 
 MM$6CSCU jjj6a$5	%8 	aa--.;/> #C...u T9s   KK Kc                   	 t        t        j                  |             } t        d | D              rt        d | D         j                  ddfS | D ch c]3  }t	        |j
                  t              s|j
                  j                  5 }}t!        |      dk(  r|j#                         nd}t%        |       \  }}|||fS # t        $ r t	        | j
                  t        t        f      rlt        | j
                        }t	        | j
                  t              r| j
                  j                  nd}|t        || j
                  j                        |fcY S t        j                  | j                        ddfcY S w xY wc c}w )z
    Align a set of terms.
    Nc              3  4   K   | ]  }|j                     y wr$   )	is_scalarr,   s     r    r.   zalign_terms.<locals>.<genexpr>   s     
,d4>>
,r7   c              3  4   K   | ]  }|j                     y wr$   r6   r,   s     r    r.   zalign_terms.<locals>.<genexpr>   s     !?$**!?r7   r4   )listcomflatten	TypeErrorr   r   r   r
   r   r)   r   r   r   result_typeallr   r8   poprj   )r0   r   r)   r   namesr   s         r    align_termsrw      s3   	6S[['( 
,e
,,!?!?@EEtTQQ */T*TZZ2STZZ__TETe*/599;tD E"ICd?%  6ekkI|#<=u{{#C'1%++y'I5;;##tD+C1A1ABDHH~~ejj)4556 Us$   B? E<2E<?BE9"E98E9c                h   	 | j                   } t        j                  |j                  |      }t        | t              s)t        | t              r| | |fd|i|S  | |f||d|S t        |d      r9| t        j                  k(  r&|t        j                  k7  r|j                  |      }|S |j                  |      }t        |j                        dk(  rMt        |      dk(  r?t        |t        j                        s%t        j                  |g      j                  |      }|S # t        $ r Y "w xY w)a  
    Reconstruct an object given its type, raw value, and possibly empty
    (None) axes.

    Parameters
    ----------
    typ : object
        A type
    obj : object
        The value to use in the type constructor
    axes : dict
        The axes to use to construct the resulting pandas object

    Returns
    -------
    ret : typ
        An object of type ``typ`` with the value `obj` and possible axes
        `axes`.
    r   )r   r)   r   r4   )r   AttributeErrorr   rs   r   r   r   
issubclassr   r   bool_r8   shaper   arrayastype)r   ri   r   r   r)   res_t	ret_values          r    reconstruct_objectr      s   (hh NN399e,Ec7#
3(E<s0%040037e$7$77 uf#/erxx6GJJsO	  JJsO	
 		NaCAy"**5)-44U;I3  s   D$ $	D10D1)returnz7tuple[partial | type[NDFrame], dict[str, Index] | None])r   ztype[NDFrame]r'   zSequence[Index]r   zdict[str, Index])r   bool)r   zCallable[[F], F]),__doc__
__future__r   	functoolsr   r   typingr   rT   numpyr   pandas._config.configr   pandas.errorsr   pandas.util._exceptionsr	   pandas.core.dtypes.genericr
   r   pandas.core.baser   pandas.core.commoncorecommonrp   pandas.core.computation.commonr   collections.abcr   r   pandas._typingr   pandas.core.genericr   pandas.core.indexes.apir   r!   r   r1   r<   rj   rw   r    r"   r    <module>r      s    # !   , , 4
 *     ;
 !+-< J	J"1JJG$ ;/ ;/|8/r"   