
    i                    |    d Z ddlmZ ddlZddlmZmZmZ ddlZ	erddl
mZ ddlmZmZmZ 	 	 	 	 	 	 	 	 d	dZd
dZy)z#
Templates for invalid operations.
    )annotationsN)TYPE_CHECKINGAnyNoReturn)Callable)	ArrayLikeScalarnptc                F   |t         j                  u r't        j                  | j                  t
              }|S |t         j                  u r't        j                  | j                  t
              }|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typs        T/app/cer_product_mecsu/.venv/lib/python3.12/site-packages/pandas/core/ops/invalid.pyinvalid_comparisonr      s    . 
X[[XXdjj5
  
x{{	WWTZZt4
  5k"";DJJ<uSERSS    c                $     dd fd} |_         |S )z
    Return a binary method that always raises a TypeError.

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

    Returns
    -------
    invalid_op : function
    c                P    t        |       j                  }t        d d|       )Nzcannot perform z with this index type: )r   r   r   )selfotherr   names      r   
invalid_opz#make_invalid_op.<locals>.invalid_opH   s+    4j!!/$/FseLMMr   )N)r"   objectr#   r&   returnr   )r   )r$   r%   s   ` r   make_invalid_opr(   ;   s    N Jr   )r   r   r   z!ArrayLike | list | range | Scalarr   zCallable[[Any, Any], bool]r'   znpt.NDArray[np.bool_])r$   strr'   zCallable[..., NoReturn])__doc__
__future__r   r   typingr   r   r   numpyr   collections.abcr   pandas._typingr   r	   r
   r   r(    r   r   <module>r1      s`    #   ( 
, 	# 	Br   