
    Eg                       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)dS )#z!
Core eval alignment algorithms.
    )annotations)partialwraps)TYPE_CHECKINGCallableN)PerformanceWarning)find_stack_level)ABCDataFrame	ABCSeries)PandasObject)result_type_many)Sequence)F)NDFrame)Indexreturn7tuple[partial | type[NDFrame], dict[str, Index] | None]c                   d }t          | j        t          j                  r&t	          t          j        | j        j                  }nCt          | 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      R/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/core/computation/align.py_align_core_single_unary_opr"   '   sz     %)D$*bj)) =bm4:+;<<<4:4:v&& 	=&sDJO<<D9    r    type[NDFrame]new_axesSequence[Index]dict[str, Index]c                D    fdt          | j                  D             S )Nc                (    i | ]\  }}||         S  r*   ).0inamer%   s      r!   
<dictcomp>z'_zip_axes_from_type.<locals>.<dictcomp>:   s#    III'!TD(1+IIIr#   )	enumerate_AXIS_ORDERS)r    r%   s    `r!   r   r   7   s+     JIIIYs7G-H-HIIIIr#   boolc                4    t          d | D                       S )zB
    Check a sequence of terms for instances of PandasObject.
    c              3  J   K   | ]}t          |j        t                    V  d S N)r   r   r   r+   r   s     r!   	<genexpr>z&_any_pandas_objects.<locals>.<genexpr>A   s.      FFz$*l33FFFFFFr#   )any)termss    r!   _any_pandas_objectsr9   =   s!     FFFFFFFFr#   Callable[[F], F]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  $   K   | ]}|j         V  d S r4   r   r5   s     r!   r6   z9_filter_special_cases.<locals>.wrapper.<locals>.<genexpr>K   s$      44dtz444444r#   )lenr"   r9   r   )r8   term_valuesfs     r!   wrapperz&_filter_special_cases.<locals>.wrapperE   sh     u::??.uQx88844e444 #5)) 	8#[1477qxxr#   )r   )rB   rC   s   ` r!   _filter_special_casesrD   D   s3    
1XX    X Nr#   c                    d t                     D             } fd|D             }ddlm}  |t          t	          ||                              } |                                         j        }|j        }|j        }t          |          }|dk    }	 fd|D             D ]}
t          |
t                    }|o|	}t          |
j                  D ]Q\  }}|r|dz
  |
j        }}n||}}||                             |          s||                             |          ||<   R|                                D ]\  }}t	          t!          |          |          D ]5\  }} |         j        }t#          |d          rt          |t                    o|dk    }|r||dz
           n|}t          |j        |                   }t          |          }t%          j        t)          dt+          ||z
                                }|dk    rS|dk    rMd	| d
t-           |         j                   d|dd}t1          j        |t4          t7                                 |                    ||d          } |                             |           7 |                              |         j        j                   |t?          ||          fS )Nc                B    g | ]\  }}t          |j        d           |S )r   )r   r   )r+   r,   r   s      r!   
<listcomp>z_align_core.<locals>.<listcomp>X   s-    SSS4wtz67R7RS!SSSr#   c                4    g | ]}|         j         j        S r*   )r   ndimr+   r,   r8   s     r!   rG   z_align_core.<locals>.<listcomp>Y   s"    999q$999r#   r   )Seriesr=   c              3  2   K   | ]}|         j         V  d S r4   r?   rJ   s     r!   r6   z_align_core.<locals>.<genexpr>f   s)      55Q%(.555555r#   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/   pandasrK   dictzipidxmaxr   _constructorr   r@   r   r   indexis_unionitemsranger   r   log10maxabsreprr-   warningswarnr   r	   rM   updatevaluesr   )r8   
term_index	term_dimsrK   ndimsbiggestr    r   naxesgt_than_one_axisr   	is_seriesis_series_and_gt_one_axisrP   rZ   axitmr,   rI   ti	transpose	reindexerterm_axis_sizereindexer_sizeordmwobjs   `                          r!   _align_corerv   V   s   SS9U#3#3SSSJ9999j999IF4J	223344E ELLNN#)G

C<DIIEqy5555*555 / /ui00	$-$B2B!$UZ00 	/ 	/KD%( &!)U[CC8<<$$ /8>>#..R	/ ;;== / /4uT{{D11 	% 	%KD%qBr9%% %&r955C%!)	/8CDOOe	!$RWT]!3!3!$YxAs>N+J'K'K L LMM1995!8!8L L L>B58=>Q>QL L(,KL L L 
 M$6CSCUCU    jjEjBBa$$$aa-....#C....r#   c                   	 t          t          j        |                     } n~# t          $ rq t	          | j        t          t          f          r2t          | j                  }|t          || j        j
                  fcY S t          j        | j                  dfcY S w xY wt          d | D                       rt          d | D              j        dfS t          |           \  }}||fS )z
    Align a set of terms.
    Nc              3  $   K   | ]}|j         V  d S r4   )	is_scalarr5   s     r!   r6   zalign_terms.<locals>.<genexpr>   s$      
,
,d4>
,
,
,
,
,
,r#   c              3  $   K   | ]}|j         V  d S r4   r?   r5   s     r!   r6   zalign_terms.<locals>.<genexpr>   s$      !?!?$*!?!?!?!?!?!?r#   )listcomflatten	TypeErrorr   r   r   r
   r   r   r   r   result_typeallr   rv   )r8   r    r   s      r!   align_termsr      s   0S[''(( 0 0 0ekI|#<== 	Cu{##C+C1ABBBBBB~ej))4////0 
,
,e
,
,
,,, L!?!?!?!?!?@EtKK E""IC9s   !$ ABBBc                x   	 | j         } n# t          $ r Y nw xY wt          j        |j        |          }t          | t                    s t          | t                    r | |fd|i|S t          |d          r6| t          j
        k    r&|t          j
        k    r|                     |          }n | |                              |          }t          |j                  dk    rUt          |          dk    rBt          |t          j                  s(t          j        |g                              |          }|S )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   AttributeErrorr   r   r   r   r   
issubclassr   r   bool_astyper@   shaper   array)r    ru   r   r   res_t	ret_values         r!   reconstruct_objectr      s8   (h    N39e,,Ec7## -
3(E(E -s3,,e,t,,, uf <#//erx6G6GJJsOO		CHHOOE**	
 	NNaCAy"*55  )--44U;;Is   
 
)r   r   )r    r$   r%   r&   r   r'   )r   r1   )r   r:   )*__doc__
__future__r   	functoolsr   r   typingr   r   r`   numpyr   pandas.errorsr   pandas.util._exceptionsr	   pandas.core.dtypes.genericr
   r   pandas.core.baser   pandas.core.commoncorecommonr|   pandas.core.computation.commonr   collections.abcr   pandas._typingr   pandas.core.genericr   pandas.core.indexes.apir   r"   r   r9   rD   rv   r   r   r*   r#   r!   <module>r      s    # " " " " "                    , , , , , , 4 4 4 4 4 4       
 * ) ) ) ) )                   ; ; ; ; ; ; .((((((      ++++++------    J J J JG G G G   $ 7/ 7/ 7/t  .- - - - -r#   