
    Owg                       d Z ddlmZ ddlmZmZ ddlmZ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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 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_CHECKINGCallableN)PerformanceWarning)find_stack_level)ABCDataFrame	ABCSeries)PandasObject)result_type_many)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      T/var/www/horilla/myenv/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   7   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>A   s     Fz$**l3Fs   $&)any)termss    r   _any_pandas_objectsr0   =   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>K   s     4dtzz4   )lenr    r0   r   )r/   term_valuesfs     r   wrapperz&_filter_special_cases.<locals>.wrapperE   sL     u:?.uQx884e4 #5)#[1477xr!   )r   )r9   r:   s   ` r   _filter_special_casesr;   D   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        ||                  } |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 ]V  \  }}t        t%        |      |	      D ]  \  }} |   j                  }t        |d      s#t        |t              xr |
dkD  }|r|	|
dz
     n|}t        |j                  |         }t        |      }t'        j(                  t+        dt-        ||z
                    }|dk\  rL|dk\  rGd| d	t/         |   j0                         d
|dd}t3        j4                  |t6        t9                      |j;                  ||d      } |   j=                  |         |   j=                   |   j                  j>                         Y |tA        ||	      fS c c}}w c c}w )Nr   r   )Seriesr3   c              3  <   K   | ]  }|   j                     y wr#   r5   )r,   r'   r/   s     r   r-   z_align_core.<locals>.<genexpr>f   s     5Q%(..5s   reindexi'  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
stacklevelF)axiscopy)!r$   r   r   ndimpandasr=   dictzipidxmax_constructorr   r7   r   r   indexis_unionitemsranger   log10maxabsreprr(   warningswarnr   r	   r?   updatevaluesr   )r/   r'   r   
term_index	term_dimsr=   ndimsbiggestr   r   naxesgt_than_one_axisr   	is_seriesis_series_and_gt_one_axisrB   rM   axitmrD   ti	transpose	reindexerterm_axis_sizereindexer_sizeordmwobjs   `                           r   _align_coreri   V   s   #,U#3S4wtzz67R!SJS.89q$$9I94J	234E ELLN#))G


C<<DIEqy5*5 /ui0	$-$B2B!$UZZ0 	/KD%(!)U[[CC8<<$8>>#.R	/	/ ;;= /4uT{D1 	%KD%qBr9%&r95C%!)	/8DOe	!$RWWT]!3!$YxxAs>N+J'K LM195!87v >>>B58==>Q=R S((,Sz1JL 
 MM$6CSCU jjEjBa$-	%0 	aa--.3/6 #C...m T9s   KK Kc                   	 t        t        j                  |             } t        d | D              rt        d | D         j                  dfS t        |       \  }}||fS # t        $ r} t	        | j
                  t        t        f      r9t        | j
                        }|t        || j
                  j                        fcY S t        j                  | j                        dfcY S w xY 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>>
,r6   c              3  4   K   | ]  }|j                     y wr#   r5   r+   s     r   r-   zalign_terms.<locals>.<genexpr>   s     !?$**!?r6   )listcomflatten	TypeErrorr   r   r   r
   r   r   r   r   result_typeallr   ri   )r/   r   r   s      r   align_termsrt      s    0S[['( 
,e
,,!?!?@EEtKK E"IC9  0ekkI|#<=u{{#C+C1A1ABBB~~ejj)4//0s   A A C%!C%$C%c                X   	 | j                   } t        j                  |j                  |      }t        | t              st        | t              r | |fd|i|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   r3   )r   AttributeErrorr   rr   r   r   r   
issubclassr   r   bool_astyper7   shaper   array)r   rh   r   r   res_t	ret_values         r   reconstruct_objectr~      s    (hh NN399e,Ec7#
3(E3,e,t,, uf#/erxx6GJJsO	  HOOE*	
 		NaCAy"**5)-44U;I/  s   D 	D)(D))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   r   rS   numpyr   pandas.errorsr   pandas.util._exceptionsr	   pandas.core.dtypes.genericr
   r   pandas.core.baser   pandas.core.commoncorecommonro   pandas.core.computation.commonr   collections.abcr   pandas._typingr   pandas.core.genericr   pandas.core.indexes.apir   r    r   r0   r;   ri   rt   r~    r!   r   <module>r      s    #   , 4
 *     ;( +-< J	J"1JJG$ 7/ 7/t.-r!   