
    Eg                    R    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Z
ddZdS )z#
Templates for invalid operations.
    )annotationsN)TYPE_CHECKING)nptreturnnpt.NDArray[np.bool_]c                   |t           j        u r!t          j        | j        t
                    }n]|t           j        u r!t          j        | j        t
                    }n.t          |          j	        }t          d| j         d|           |S )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typs        L/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/core/ops/invalid.pyinvalid_comparisonr      s    & 
X[Xdj555

	x{		WTZt444

5kk"RDJRRSRRSSS    namestrc                "     d fd	} |_         |S )z
    Return a binary method that always raises a TypeError.

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

    Returns
    -------
    invalid_op : function
    Nc                V    t          |           j        }t          d d|           )Nzcannot perform z with this index type: )r   r   r   )selfotherr   r   s      r   
invalid_opz#make_invalid_op.<locals>.invalid_op9   s0    4jj!L$LLsLLMMMr   )N)r   )r   r#   s   ` r   make_invalid_opr$   ,   s7    N N N N N N Jr   )r   r   )r   r   )__doc__
__future__r   r
   typingr   numpyr   pandas._typingr   r   r$    r   r   <module>r+      s     # " " " " "                  #""""""   :     r   