o
    ŀg                     @  sT   d Z ddlmZ ddlZddlmZ ddlZerddlm	Z	 ddd	Z
dddZdS )z#
Templates for invalid operations.
    )annotationsN)TYPE_CHECKING)nptreturnnpt.NDArray[np.bool_]c                 C  s\   |t ju rtj| jtd}|S |t ju rtj| jtd}|S t|j	}t
d| j d| )a  
    If a comparison has mismatched types and is not necessarily meaningful,
    follow python3 conventions by:

        - returning all-False for equality
        - returning all-True for inequality
        - raising TypeError otherwise

    Parameters
    ----------
    left : array-like
    right : scalar, array-like
    op : operator.{eq, ne, lt, le, gt}

    Raises
    ------
    TypeError : on inequality comparisons
    )dtypez!Invalid comparison between dtype=z and )operatoreqnpzerosshapeboolneonestype__name__	TypeErrorr   )leftrightop
res_valuestyp r   K/var/www/html/myenv/lib/python3.10/site-packages/pandas/core/ops/invalid.pyinvalid_comparison   s   


r   namestrc                   s   d fdd	} |_ |S )z
    Return a binary method that always raises a TypeError.

    Parameters
    ----------
    name : str

    Returns
    -------
    invalid_op : function
    Nc                   s   t | j}td  d| )Nzcannot perform z with this index type: )r   r   r   )selfotherr   r   r   r   
invalid_op9   s   
z#make_invalid_op.<locals>.invalid_op)N)r   )r   r    r   r   r   make_invalid_op,   s   r!   )r   r   )r   r   )__doc__
__future__r   r   typingr   numpyr
   pandas._typingr   r   r!   r   r   r   r   <module>   s    
