§
    yhþh¨¡  ã                  ó>  — U d Z ddlmZ ddlZddlmZmZmZmZm	Z	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mZmZmZmZmZ ddlm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(Z( ddl)m*Z*m+Z+ ddl,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z? ddl@mAZAmBZB erddlCmDZDmEZE ddlmFZFmGZGmHZHmIZI ddlJmKZKmLZLmMZM i ZNdeOd<   dddddœZP G d„ d e;¦  «        ZQ G d!„ d"¦  «        ZR G d#„ d$ee         ¦  «        ZS G d%„ de=¦  «        ZTdS )&z.
Base and utility classes for pandas objects.
é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚGenericÚLiteralÚcastÚfinalÚoverload)Úusing_copy_on_write)Úlib)ÚAxisIntÚDtypeObjÚ
IndexLabelÚNDFrameTÚSelfÚShapeÚnpt)ÚPYPY)Úfunction©ÚAbstractMethodError)Úcache_readonlyÚdoc)Úfind_stack_level)Úcan_hold_element)Úis_object_dtypeÚ	is_scalar)ÚExtensionDtype)ÚABCDataFrameÚABCIndexÚABCMultiIndexÚ	ABCSeries)ÚisnaÚremove_na_arraylike)Ú
algorithmsÚnanopsÚops)ÚDirNamesMixin)ÚOpsMixin)ÚExtensionArray)Úensure_wrapped_if_datetimelikeÚextract_array)ÚHashableÚIterator)ÚDropKeepÚNumpySorterÚNumpyValueArrayLikeÚScalarLike_co)Ú	DataFrameÚIndexÚSerieszdict[str, str]Ú_shared_docsÚIndexOpsMixinÚ )ÚklassÚinplaceÚuniqueÚ
duplicatedc                  óX   ‡ — e Zd ZU dZded<   ed„ ¦   «         Zdd„Zddd„Zdˆ fd„Z	ˆ xZ
S )ÚPandasObjectz/
    Baseclass for various pandas objects.
    zdict[str, Any]Ú_cachec                ó    — t          | ¦  «        S )zK
        Class constructor (for this class it's just `__class__`).
        )Útype©Úselfs    úG/var/www/histauto/venv/lib/python3.11/site-packages/pandas/core/base.pyÚ_constructorzPandasObject._constructorm   s   € õ
 �D‰zŒzÐó    ÚreturnÚstrc                ó6   — t                                | ¦  «        S )zI
        Return a string representation for a particular object.
        )ÚobjectÚ__repr__rB   s    rD   rK   zPandasObject.__repr__t   s   € õ
 �Š˜tÑ$Ô$Ð$rF   NÚkeyú
str | NoneÚNonec                óš   — t          | d¦  «        sdS |€| j                             ¦   «          dS | j                             |d¦  «         dS )zV
        Reset cached properties. If ``key`` is passed, only clears that key.
        r?   N)Úhasattrr?   ÚclearÚpop)rC   rL   s     rD   Ú_reset_cachezPandasObject._reset_cache{   sV   € õ �t˜XÑ&Ô&ð 	ØˆFØˆ;ØŒK×ÒÑÔÐÐÐàŒK�OŠO˜C Ñ&Ô&Ð&Ð&Ð&rF   Úintc                óæ   •— t          | dd¦  «        }|r> |d¬¦  «        }t          t          |¦  «        r|n|                     ¦   «         ¦  «        S t	          ¦   «                              ¦   «         S )zx
        Generates the total memory usage for an object that returns
        either a value or Series of values
        Úmemory_usageNT©Údeep)ÚgetattrrT   r   ÚsumÚsuperÚ
__sizeof__)rC   rV   ÚmemÚ	__class__s      €rD   r\   zPandasObject.__sizeof__†   sm   ø€ õ
 ˜t ^°TÑ:Ô:ˆØð 	=Ø�, DÐ)Ñ)Ô)ˆCÝ�i¨™nœnÐ;�s�s°#·'²'±)´)Ñ<Ô<Ð<õ ‰wŒw×!Ò!Ñ#Ô#Ð#rF   )rG   rH   ©N)rL   rM   rG   rN   ©rG   rT   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__ÚpropertyrE   rK   rS   r\   Ú__classcell__)r^   s   @rD   r>   r>   e   s�   ø€ € € € € € ðð ð
 ÐÐÑàðð ñ „Xðð%ð %ð %ð %ð	'ð 	'ð 	'ð 	'ð 	'ð$ð $ð $ð $ð $ð $ð $ð $ð $ð $rF   r>   c                  ó"   — e Zd ZdZd	d„Zd
d„ZdS )ÚNoNewAttributesMixina„  
    Mixin which prevents adding new attributes.

    Prevents additional attributes via xxx.attribute = "something" after a
    call to `self.__freeze()`. Mainly used to prevent the user from using
    wrong attributes on an accessor (`Series.cat/.str/.dt`).

    If you really want to add a new attribute at a later time, you need to use
    `object.__setattr__(self, key, value)`.
    rG   rN   c                ó>   — t                                | dd¦  «         dS )z9
        Prevents setting additional attributes.
        Ú__frozenTN)rJ   Ú__setattr__rB   s    rD   Ú_freezezNoNewAttributesMixin._freeze    s"   € õ 	×Ò˜4 ¨TÑ2Ô2Ð2Ð2Ð2rF   rL   rH   c                óà   — t          | dd¦  «        r@|dk    s:|t          | ¦  «        j        v s$t          | |d ¦  «        €t          d|› d�¦  «        ‚t                               | ||¦  «         d S )Nrk   Fr?   z"You cannot add any new attribute 'ú')rY   rA   Ú__dict__ÚAttributeErrorrJ   rl   )rC   rL   Úvalues      rD   rl   z NoNewAttributesMixin.__setattr__§   s€   € õ �4˜ UÑ+Ô+ð 	NØ�8ŠOˆOØ•d˜4‘j”jÔ)Ð)Ð)Ý�t˜S $Ñ'Ô'Ð3å Ð!LÀcÐ!LÐ!LÐ!LÑMÔMÐMÝ×Ò˜4  eÑ,Ô,Ð,Ð,Ð,rF   N)rG   rN   )rL   rH   rG   rN   )ra   rb   rc   rd   rm   rl   © rF   rD   ri   ri   ”   sF   € € € € € ð	ð 	ð3ð 3ð 3ð 3ð-ð -ð -ð -ð -ð -rF   ri   c                  ó  — e Zd ZU dZded<   dZded<   ded<   d	d
gZ ee¦  «        Ze	e
d„ ¦   «         ¦   «         Zed„ ¦   «         Ze	edd„¦   «         ¦   «         Ze	ed„ ¦   «         ¦   «         Zd„ Zddd„Ze	dd„¦   «         Zd„ ZeZdS )ÚSelectionMixinz‰
    mixin implementing the selection & aggregation interface on a group-like
    object sub-classes need to define: obj, exclusions
    r   ÚobjNzIndexLabel | NoneÚ
_selectionzfrozenset[Hashable]Ú
exclusionsr?   Ú__setstate__c                ó�   — t          | j        t          t          t          t
          t          j        f¦  «        s| j        gS | j        S r_   )Ú
isinstancerw   ÚlistÚtupler"   r    ÚnpÚndarrayrB   s    rD   Ú_selection_listzSelectionMixin._selection_listÂ   s?   € õ ØŒO�d¥E­9µhÅÄ
ÐKñ
ô 
ð 	%ð ”OÐ$Ð$ØŒÐrF   c                óv   — | j         �t          | j        t          ¦  «        r| j        S | j        | j                  S r_   )rw   r{   rv   r"   rB   s    rD   Ú_selected_objzSelectionMixin._selected_objË   s1   € àŒ?Ð"¥j°´½9Ñ&EÔ&EÐ"Ø”8ˆOà”8˜DœOÔ,Ð,rF   rG   rT   c                ó   — | j         j        S r_   )r‚   ÚndimrB   s    rD   r„   zSelectionMixin.ndimÒ   s   € ð Ô!Ô&Ð&rF   c                ó  — t          | j        t          ¦  «        r| j        S | j        �| j                             | j        ¦  «        S t          | j        ¦  «        dk    r"| j                             | j        dd¬¦  «        S | j        S )Nr   é   T)ÚaxisÚ
only_slice)	r{   rv   r"   rw   Ú_getitem_nocopyr€   Úlenrx   Ú
_drop_axisrB   s    rD   Ú_obj_with_exclusionsz#SelectionMixin._obj_with_exclusions×   s}   € õ �d”h¥	Ñ*Ô*ð 	Ø”8ˆOàŒ?Ð&Ø”8×+Ò+¨DÔ,@ÑAÔAÐAåˆtŒÑÔ !Ò#Ð#ð
 ”8×&Ò& t¤¸QÈ4Ð&ÑPÔPÐPà”8ˆOrF   c                óÊ  — | j         �t          d| j         › d�¦  «        ‚t          |t          t          t
          t          t          j        f¦  «        rÎt          | j
        j                             |¦  «        ¦  «        t          t          |¦  «        ¦  «        k    r`t          t          |¦  «                             | j
        j        ¦  «        ¦  «        }t          dt!          |¦  «        dd…         › �¦  «        ‚|                      t          |¦  «        d¬¦  «        S || j
        vrt          d|› �¦  «        ‚| j
        |         j        }|                      ||¬¦  «        S )	Nz
Column(s) z already selectedzColumns not found: r†   éÿÿÿÿé   )r„   zColumn not found: )rw   Ú
IndexErrorr{   r|   r}   r"   r    r~   r   rŠ   rv   ÚcolumnsÚintersectionÚsetÚ
differenceÚKeyErrorrH   Ú_gotitemr„   )rC   rL   Úbad_keysr„   s       rD   Ú__getitem__zSelectionMixin.__getitem__é   s)  € ØŒ?Ð&ÝÐL¨$¬/ÐLÐLÐLÑMÔMÐMå�c�D¥%­µH½b¼jÐIÑJÔJð 
	1Ý�4”8Ô#×0Ò0°Ñ5Ô5Ñ6Ô6½#½cÀ#¹h¼h¹-¼-ÒGÐGÝ¥ C¡¤× 3Ò 3°D´HÔ4DÑ EÔ EÑFÔF�ÝÐJµS¸±]´]À1ÀRÀ4Ô5HÐJÐJÑKÔKÐKØ—=’=¥ c¡¤°�=Ñ3Ô3Ð3ð ˜$œ(Ð"Ð"ÝÐ9°CÐ9Ð9Ñ:Ô:Ð:Ø”8˜C”=Ô%ˆDØ—=’= ¨4�=Ñ0Ô0Ð0rF   r„   c                ó    — t          | ¦  «        ‚)a  
        sub-classes to define
        return a sliced object

        Parameters
        ----------
        key : str / list of selections
        ndim : {1, 2}
            requested ndim of result
        subset : object, default None
            subset to act on
        r   )rC   rL   r„   Úsubsets       rD   r–   zSelectionMixin._gotitemù   s   € õ " $Ñ'Ô'Ð'rF   rš   úSeries | DataFramec                óÖ   — d}|j         dk    r/t          j        |¦  «        r||v st          j        |¦  «        r|}n,|j         dk    r!t          j        |¦  «        r||j        k    r|}|S )zO
        Infer the `selection` to pass to our constructor in _gotitem.
        Nr�   r†   )r„   r   r   Úis_list_likeÚname)rC   rL   rš   Ú	selections       rD   Ú_infer_selectionzSelectionMixin._infer_selection  sz   € ð ˆ	ØŒ;˜!ÒÐÝŒ]˜3ÑÔð Ø$'¨6 M MµcÔ6FÀsÑ6KÔ6K MàˆIˆIØŒ[˜AÒÐ¥#¤-°Ñ"4Ô"4Ð¸ÀÄÒ9KÐ9KØˆIØÐrF   c                ó    — t          | ¦  «        ‚r_   r   )rC   ÚfuncÚargsÚkwargss       rD   Ú	aggregatezSelectionMixin.aggregate  s   € Ý! $Ñ'Ô'Ð'rF   r`   r_   )r„   rT   )rš   r›   )ra   rb   rc   rd   re   rw   Ú_internal_namesr“   Ú_internal_names_setr	   rf   r€   r   r‚   r„   rŒ   r˜   r–   r    r¥   Úaggrs   rF   rD   ru   ru   ¶   sG  € € € € € € ðð ð
 €M€M�MØ$(€JÐ(Ð(Ð(Ñ(Ø#Ð#Ð#Ñ#Ø Ð0€OØ˜#˜oÑ.Ô.Ðà
Øðð ñ „Xñ „Uðð ð-ð -ñ „^ð-ð Øð'ð 'ð 'ñ „^ñ „Uð'ð Øðð ñ „^ñ „Uðð 1ð 1ð 1ð (ð (ð (ð (ð (ð ðð ð ñ „Uðð(ð (ð (ð €C€C€CrF   ru   c            	      óò  — e Zd ZU dZdZ edg¦  «        Zded<   edfd„¦   «         Z	edgd
„¦   «         Z
edhd„¦   «         Z eed¬¦  «        Zedid„¦   «         Zdjd„Zedjd„¦   «         Zed„ ¦   «         Zedjd„¦   «         Zedjd„¦   «         Zedkd„¦   «         Zeddej        fdld"„¦   «         Zeedmd#„¦   «         ¦   «         Z ed$d%d&¬'¦  «        	 dndod,„¦   «         Z eed%d$d-¬'¦  «        	 dndod.„¦   «         Zd/„ ZeZdpd1„Zedmd2„¦   «         Z edndqd4„¦   «         Z!e	 	 	 	 	 drdsd:„¦   «         Z"d;„ Z#edtdud<„¦   «         Z$edmd=„¦   «         Z%edmd>„¦   «         Z&edmd?„¦   «         Z'edvdwdA„¦   «         Z( ee)j*        dBdBdB e+j,        dC¦  «        ¬D¦  «        	 	 dxdydG„¦   «         Z*dHe-dI<   e.	 	 dzd{dR„¦   «         Z/e.	 	 dzd|dU„¦   «         Z/ ee-dI         dV¬W¦  «        	 	 d}d~d\„¦   «         Z/d]d^œdda„Z0ed€d�dc„¦   «         Z1dd„ Z2de„ Z3dS )‚r7   zS
    Common ops mixin to support a unified interface / docs for Series / Index
    iè  Útolistzfrozenset[str]Ú_hidden_attrsrG   r   c                ó    — t          | ¦  «        ‚r_   r   rB   s    rD   ÚdtypezIndexOpsMixin.dtype(  ó   € õ " $Ñ'Ô'Ð'rF   úExtensionArray | np.ndarrayc                ó    — t          | ¦  «        ‚r_   r   rB   s    rD   Ú_valueszIndexOpsMixin._values-  r®   rF   r   c                ó0   — t          j        ||¦  «         | S )zw
        Return the transpose, which is by definition self.

        Returns
        -------
        %(klass)s
        )ÚnvÚvalidate_transpose)rC   r£   r¤   s      rD   Ú	transposezIndexOpsMixin.transpose2  s   € õ 	Ô˜d FÑ+Ô+Ð+ØˆrF   aÙ  
        Return the transpose, which is by definition self.

        Examples
        --------
        For Series:

        >>> s = pd.Series(['Ant', 'Bear', 'Cow'])
        >>> s
        0     Ant
        1    Bear
        2     Cow
        dtype: object
        >>> s.T
        0     Ant
        1    Bear
        2     Cow
        dtype: object

        For Index:

        >>> idx = pd.Index([1, 2, 3])
        >>> idx.T
        Index([1, 2, 3], dtype='int64')
        )r   r   c                ó   — | j         j        S )z®
        Return a tuple of the shape of the underlying data.

        Examples
        --------
        >>> s = pd.Series([1, 2, 3])
        >>> s.shape
        (3,)
        )r±   ÚshaperB   s    rD   r·   zIndexOpsMixin.shape[  s   € ð Œ|Ô!Ð!rF   rT   c                ó    — t          | ¦  «        ‚r_   r   rB   s    rD   Ú__len__zIndexOpsMixin.__len__h  s   € å! $Ñ'Ô'Ð'rF   c                ó   — dS )a­  
        Number of dimensions of the underlying data, by definition 1.

        Examples
        --------
        >>> s = pd.Series(['Ant', 'Bear', 'Cow'])
        >>> s
        0     Ant
        1    Bear
        2     Cow
        dtype: object
        >>> s.ndim
        1

        For Index:

        >>> idx = pd.Index([1, 2, 3])
        >>> idx
        Index([1, 2, 3], dtype='int64')
        >>> idx.ndim
        1
        r†   rs   rB   s    rD   r„   zIndexOpsMixin.ndimo  s	   € ð0 ˆqrF   c                ó~   — t          | ¦  «        dk    rt          t          | ¦  «        ¦  «        S t          d¦  «        ‚)aà  
        Return the first element of the underlying data as a Python scalar.

        Returns
        -------
        scalar
            The first element of Series or Index.

        Raises
        ------
        ValueError
            If the data is not length = 1.

        Examples
        --------
        >>> s = pd.Series([1])
        >>> s.item()
        1

        For an index:

        >>> s = pd.Series([1], index=['a'])
        >>> s.index.item()
        'a'
        r†   z6can only convert an array of size 1 to a Python scalar)rŠ   ÚnextÚiterÚ
ValueErrorrB   s    rD   ÚitemzIndexOpsMixin.item‰  s6   € õ6 ˆt‰9Œ9˜Š>ˆ>Ý�˜T™
œ
Ñ#Ô#Ð#ÝÐQÑRÔRÐRrF   c                ó   — | j         j        S )a½  
        Return the number of bytes in the underlying data.

        Examples
        --------
        For Series:

        >>> s = pd.Series(['Ant', 'Bear', 'Cow'])
        >>> s
        0     Ant
        1    Bear
        2     Cow
        dtype: object
        >>> s.nbytes
        24

        For Index:

        >>> idx = pd.Index([1, 2, 3])
        >>> idx
        Index([1, 2, 3], dtype='int64')
        >>> idx.nbytes
        24
        )r±   ÚnbytesrB   s    rD   rÁ   zIndexOpsMixin.nbytes¨  s   € ð4 Œ|Ô"Ð"rF   c                ó*   — t          | j        ¦  «        S )aº  
        Return the number of elements in the underlying data.

        Examples
        --------
        For Series:

        >>> s = pd.Series(['Ant', 'Bear', 'Cow'])
        >>> s
        0     Ant
        1    Bear
        2     Cow
        dtype: object
        >>> s.size
        3

        For Index:

        >>> idx = pd.Index([1, 2, 3])
        >>> idx
        Index([1, 2, 3], dtype='int64')
        >>> idx.size
        3
        )rŠ   r±   rB   s    rD   ÚsizezIndexOpsMixin.sizeÄ  s   € õ4 �4”<Ñ Ô Ð rF   r*   c                ó    — t          | ¦  «        ‚)ac  
        The ExtensionArray of the data backing this Series or Index.

        Returns
        -------
        ExtensionArray
            An ExtensionArray of the values stored within. For extension
            types, this is the actual array. For NumPy native types, this
            is a thin (no copy) wrapper around :class:`numpy.ndarray`.

            ``.array`` differs from ``.values``, which may require converting
            the data to a different form.

        See Also
        --------
        Index.to_numpy : Similar method that always returns a NumPy array.
        Series.to_numpy : Similar method that always returns a NumPy array.

        Notes
        -----
        This table lays out the different array types for each extension
        dtype within pandas.

        ================== =============================
        dtype              array type
        ================== =============================
        category           Categorical
        period             PeriodArray
        interval           IntervalArray
        IntegerNA          IntegerArray
        string             StringArray
        boolean            BooleanArray
        datetime64[ns, tz] DatetimeArray
        ================== =============================

        For any 3rd-party extension types, the array type will be an
        ExtensionArray.

        For all remaining dtypes ``.array`` will be a
        :class:`arrays.NumpyExtensionArray` wrapping the actual ndarray
        stored within. If you absolutely need a NumPy array (possibly with
        copying / coercing data), then use :meth:`Series.to_numpy` instead.

        Examples
        --------
        For regular NumPy types like int, and float, a NumpyExtensionArray
        is returned.

        >>> pd.Series([1, 2, 3]).array
        <NumpyExtensionArray>
        [1, 2, 3]
        Length: 3, dtype: int64

        For extension types, like Categorical, the actual ExtensionArray
        is returned

        >>> ser = pd.Series(pd.Categorical(['a', 'b', 'a']))
        >>> ser.array
        ['a', 'b', 'a']
        Categories (2, object): ['a', 'b']
        r   rB   s    rD   ÚarrayzIndexOpsMixin.arrayà  s   € õ~ " $Ñ'Ô'Ð'rF   NFr­   únpt.DTypeLike | NoneÚcopyÚboolÚna_valuerJ   ú
np.ndarrayc                óp  — t          | j        t          ¦  «        r | j        j        |f||dœ|¤ŽS |rAt          t          |                     ¦   «         ¦  «        ¦  «        }t          d|› d�¦  «        ‚|t          j
        uo2|t          j        u o#t          j        | j        t          j        ¦  «         }| j        }|r_t!          ||¦  «        st          j        ||¬¦  «        }n|                     ¦   «         }||t          j        t)          | ¦  «        ¦  «        <   t          j        ||¬¦  «        }|r|r|s}t+          ¦   «         rot          j        | j        dd…         |dd…         ¦  «        rEt+          ¦   «         r#|s!|                     ¦   «         }d|j        _        n|                     ¦   «         }|S )a«  
        A NumPy ndarray representing the values in this Series or Index.

        Parameters
        ----------
        dtype : str or numpy.dtype, optional
            The dtype to pass to :meth:`numpy.asarray`.
        copy : bool, default False
            Whether to ensure that the returned value is not a view on
            another array. Note that ``copy=False`` does not *ensure* that
            ``to_numpy()`` is no-copy. Rather, ``copy=True`` ensure that
            a copy is made, even if not strictly necessary.
        na_value : Any, optional
            The value to use for missing values. The default value depends
            on `dtype` and the type of the array.
        **kwargs
            Additional keywords passed through to the ``to_numpy`` method
            of the underlying array (for extension arrays).

        Returns
        -------
        numpy.ndarray

        See Also
        --------
        Series.array : Get the actual data stored within.
        Index.array : Get the actual data stored within.
        DataFrame.to_numpy : Similar method for DataFrame.

        Notes
        -----
        The returned array will be the same up to equality (values equal
        in `self` will be equal in the returned array; likewise for values
        that are not equal). When `self` contains an ExtensionArray, the
        dtype may be different. For example, for a category-dtype Series,
        ``to_numpy()`` will return a NumPy array and the categorical dtype
        will be lost.

        For NumPy dtypes, this will be a reference to the actual data stored
        in this Series or Index (assuming ``copy=False``). Modifying the result
        in place will modify the data stored in the Series or Index (not that
        we recommend doing that).

        For extension types, ``to_numpy()`` *may* require copying data and
        coercing the result to a NumPy type (possibly object), which may be
        expensive. When you need a no-copy reference to the underlying data,
        :attr:`Series.array` should be used instead.

        This table lays out the different dtypes and default return types of
        ``to_numpy()`` for various dtypes within pandas.

        ================== ================================
        dtype              array type
        ================== ================================
        category[T]        ndarray[T] (same dtype as input)
        period             ndarray[object] (Periods)
        interval           ndarray[object] (Intervals)
        IntegerNA          ndarray[object]
        datetime64[ns]     datetime64[ns]
        datetime64[ns, tz] ndarray[object] (Timestamps)
        ================== ================================

        Examples
        --------
        >>> ser = pd.Series(pd.Categorical(['a', 'b', 'a']))
        >>> ser.to_numpy()
        array(['a', 'b', 'a'], dtype=object)

        Specify the `dtype` to control how datetime-aware data is represented.
        Use ``dtype=object`` to return an ndarray of pandas :class:`Timestamp`
        objects, each with the correct ``tz``.

        >>> ser = pd.Series(pd.date_range('2000', periods=2, tz="CET"))
        >>> ser.to_numpy(dtype=object)
        array([Timestamp('2000-01-01 00:00:00+0100', tz='CET'),
               Timestamp('2000-01-02 00:00:00+0100', tz='CET')],
              dtype=object)

        Or ``dtype='datetime64[ns]'`` to return an ndarray of native
        datetime64 values. The values are converted to UTC and the timezone
        info is dropped.

        >>> ser.to_numpy(dtype="datetime64[ns]")
        ... # doctest: +ELLIPSIS
        array(['1999-12-31T23:00:00.000000000', '2000-01-01T23:00:00...'],
              dtype='datetime64[ns]')
        )rÇ   rÉ   z/to_numpy() got an unexpected keyword argument 'ro   ©r­   Nr�   F)r{   r­   r   rÅ   Úto_numpyr¼   r½   ÚkeysÚ	TypeErrorr   Ú
no_defaultr~   ÚnanÚ
issubdtypeÚfloatingr±   r   ÚasarrayrÇ   Ú
asanyarrayr#   r   Úshares_memoryÚviewÚflagsÚ	writeable)	rC   r­   rÇ   rÉ   r¤   r—   ÚfillnaÚvaluesÚresults	            rD   rÍ   zIndexOpsMixin.to_numpy!  s¾  € õ~ �d”j¥.Ñ1Ô1ð 	Ø&�4”:Ô& uÐU°4À(ÐUÐUÈfÐUÐUÐUØð 	Ý�D §¢¡¤Ñ/Ô/Ñ0Ô0ˆHÝØMÀ(ÐMÐMÐMñô ð ð
 �CœNÐ*ð Tà¥¤Ð'ÐR­B¬M¸$¼*ÅbÄkÑ,RÔ,RÐSð 	ð ”ˆØð 		9Ý# F¨HÑ5Ô5ð 'õ œ F°%Ð8Ñ8Ô8��àŸš™œ�à08ˆF•2”=¥ d¡¤Ñ,Ô,Ñ-å”˜F¨%Ð0Ñ0Ô0ˆàð 	+˜ð 	+¨ð 	+Õ2EÑ2GÔ2Gð 	+ÝÔ ¤¨R¨a¨RÔ 0°&¸¸!¸´*Ñ=Ô=ð +å&Ñ(Ô(ð +°ð +Ø#Ÿ[š[™]œ]�FØ-2�F”LÔ*Ð*à#Ÿ[š[™]œ]�FàˆrF   c                ó   — | j          S r_   )rÃ   rB   s    rD   ÚemptyzIndexOpsMixin.empty§  s   € ð ”9ˆ}ÐrF   ÚmaxÚminÚlargest)ÚopÚopposerr   Tr‡   úAxisInt | NoneÚskipnac                ó>  — | j         }t          j        |¦  «         t          j        |||¦  «        }t	          |t
          ¦  «        r||sf|                     ¦   «                              ¦   «         r@t          j	        dt          | ¦  «        j        › d�t          t          ¦   «         ¬¦  «         dS |                     ¦   «         S t          j        ||¬¦  «        }|dk    r>t          j	        dt          | ¦  «        j        › d�t          t          ¦   «         ¬¦  «         |S )ab  
        Return int position of the {value} value in the Series.

        If the {op}imum is achieved in multiple locations,
        the first row position is returned.

        Parameters
        ----------
        axis : {{None}}
            Unused. Parameter needed for compatibility with DataFrame.
        skipna : bool, default True
            Exclude NA/null values when showing the result.
        *args, **kwargs
            Additional arguments and keywords for compatibility with NumPy.

        Returns
        -------
        int
            Row position of the {op}imum value.

        See Also
        --------
        Series.arg{op} : Return position of the {op}imum value.
        Series.arg{oppose} : Return position of the {oppose}imum value.
        numpy.ndarray.arg{op} : Equivalent method for numpy arrays.
        Series.idxmax : Return index label of the maximum values.
        Series.idxmin : Return index label of the minimum values.

        Examples
        --------
        Consider dataset containing cereal calories

        >>> s = pd.Series({{'Corn Flakes': 100.0, 'Almond Delight': 110.0,
        ...                'Cinnamon Toast Crunch': 120.0, 'Cocoa Puff': 110.0}})
        >>> s
        Corn Flakes              100.0
        Almond Delight           110.0
        Cinnamon Toast Crunch    120.0
        Cocoa Puff               110.0
        dtype: float64

        >>> s.argmax()
        2
        >>> s.argmin()
        0

        The maximum cereal calories is the third element and
        the minimum cereal calories is the first element,
        since series is zero-indexed.
        úThe behavior of úx.argmax/argmin with skipna=False and NAs, or with all-NAs is deprecated. In a future version this will raise ValueError.©Ú
stacklevelrŽ   ©rå   )r±   r³   Úvalidate_minmax_axisÚvalidate_argmax_with_skipnar{   r*   r#   ÚanyÚwarningsÚwarnrA   ra   ÚFutureWarningr   Úargmaxr&   Ú	nanargmax©rC   r‡   rå   r£   r¤   ÚdelegaterÜ   s          rD   rò   zIndexOpsMixin.argmax¬  s6  € ðl ”<ˆÝ
Ô Ñ%Ô%Ð%ÝÔ/°¸¸fÑEÔEˆå�h¥Ñ/Ô/ð 	Øð 
)˜hŸmšm™oœo×1Ò1Ñ3Ô3ð 
)Ý”ðF¥t¨D¡z¤zÔ':ð Fð Fð Fõ "Ý/Ñ1Ô1ðñ ô ð ð �rà—’Ñ(Ô(Ð(åÔ% h°vÐ>Ñ>Ô>ˆFØ˜Š|ˆ|Ý”ðF¥t¨D¡z¤zÔ':ð Fð Fð Fõ "Ý/Ñ1Ô1ðñ ô ð ð ˆMrF   Úsmallestc                ó>  — | j         }t          j        |¦  «         t          j        |||¦  «        }t	          |t
          ¦  «        r||sf|                     ¦   «                              ¦   «         r@t          j	        dt          | ¦  «        j        › d�t          t          ¦   «         ¬¦  «         dS |                     ¦   «         S t          j        ||¬¦  «        }|dk    r>t          j	        dt          | ¦  «        j        › d�t          t          ¦   «         ¬¦  «         |S )Nrç   rè   ré   rŽ   rë   )r±   r³   rì   Úvalidate_argmin_with_skipnar{   r*   r#   rî   rï   rð   rA   ra   rñ   r   Úargminr&   Ú	nanargminrô   s          rD   rù   zIndexOpsMixin.argmin   s5  € ð ”<ˆÝ
Ô Ñ%Ô%Ð%ÝÔ/°¸¸fÑEÔEˆå�h¥Ñ/Ô/ð 	Øð 
)˜hŸmšm™oœo×1Ò1Ñ3Ô3ð 
)Ý”ðF¥t¨D¡z¤zÔ':ð Fð Fð Fõ "Ý/Ñ1Ô1ðñ ô ð ð �rà—’Ñ(Ô(Ð(åÔ% h°vÐ>Ñ>Ô>ˆFØ˜Š|ˆ|Ý”ðF¥t¨D¡z¤zÔ':ð Fð Fð Fõ "Ý/Ñ1Ô1ðñ ô ð ð ˆMrF   c                ó4   — | j                              ¦   «         S )a¼  
        Return a list of the values.

        These are each a scalar type, which is a Python scalar
        (for str, int, float) or a pandas scalar
        (for Timestamp/Timedelta/Interval/Period)

        Returns
        -------
        list

        See Also
        --------
        numpy.ndarray.tolist : Return the array as an a.ndim-levels deep
            nested list of Python scalars.

        Examples
        --------
        For Series

        >>> s = pd.Series([1, 2, 3])
        >>> s.to_list()
        [1, 2, 3]

        For Index:

        >>> idx = pd.Index([1, 2, 3])
        >>> idx
        Index([1, 2, 3], dtype='int64')

        >>> idx.to_list()
        [1, 2, 3]
        )r±   rª   rB   s    rD   rª   zIndexOpsMixin.tolist"  s   € ðD Œ|×"Ò"Ñ$Ô$Ð$rF   r.   c                óÊ   — t          | j        t          j        ¦  «        st	          | j        ¦  «        S t          | j        j        t          | j        j        ¦  «        ¦  «        S )aŸ  
        Return an iterator of the values.

        These are each a scalar type, which is a Python scalar
        (for str, int, float) or a pandas scalar
        (for Timestamp/Timedelta/Interval/Period)

        Returns
        -------
        iterator

        Examples
        --------
        >>> s = pd.Series([1, 2, 3])
        >>> for x in s:
        ...     print(x)
        1
        2
        3
        )	r{   r±   r~   r   r½   Úmapr¿   ÚrangerÃ   rB   s    rD   Ú__iter__zIndexOpsMixin.__iter__H  sM   € õ, ˜$œ,­¬
Ñ3Ô3ð 	Då˜œÑ%Ô%Ð%å�t”|Ô(­%°´Ô0AÑ*BÔ*BÑCÔCÐCrF   c                ó^   — t          t          | ¦  «                             ¦   «         ¦  «        S )ak  
        Return True if there are any NaNs.

        Enables various performance speedups.

        Returns
        -------
        bool

        Examples
        --------
        >>> s = pd.Series([1, 2, 3, None])
        >>> s
        0    1.0
        1    2.0
        2    3.0
        3    NaN
        dtype: float64
        >>> s.hasnans
        True
        )rÈ   r#   rî   rB   s    rD   ÚhasnanszIndexOpsMixin.hasnansd  s"   € õ2 •D˜‘J”J—N’NÑ$Ô$Ñ%Ô%Ð%rF   Úconvertc                ó˜   — | j         }t          |t          ¦  «        r|                     ||¬¦  «        S t	          j        ||||¬¦  «        S )aš  
        An internal function that maps values using the input
        correspondence (which can be a dict, Series, or function).

        Parameters
        ----------
        mapper : function, dict, or Series
            The input correspondence object
        na_action : {None, 'ignore'}
            If 'ignore', propagate NA values, without passing them to the
            mapping function
        convert : bool, default True
            Try to find better dtype for elementwise function results. If
            False, leave as dtype=object. Note that the dtype is always
            preserved for some extension array dtypes, such as Categorical.

        Returns
        -------
        Union[Index, MultiIndex], inferred
            The output of the mapping function applied to the index.
            If the function returns a tuple with more than one element
            a MultiIndex will be returned.
        )Ú	na_action)r  r  )r±   r{   r*   rý   r%   Ú	map_array)rC   Úmapperr  r  Úarrs        rD   Ú_map_valueszIndexOpsMixin._map_values  sM   € ð2 Œlˆå�c�>Ñ*Ô*ð 	8Ø—7’7˜6¨Y�7Ñ7Ô7Ð7åÔ# C¨¸9ÈgÐVÑVÔVÐVrF   Ú	normalizeÚsortÚ	ascendingÚdropnar5   c                ó6   — t          j        | |||||¬¦  «        S )a=	  
        Return a Series containing counts of unique values.

        The resulting object will be in descending order so that the
        first element is the most frequently-occurring element.
        Excludes NA values by default.

        Parameters
        ----------
        normalize : bool, default False
            If True then the object returned will contain the relative
            frequencies of the unique values.
        sort : bool, default True
            Sort by frequencies when True. Preserve the order of the data when False.
        ascending : bool, default False
            Sort in ascending order.
        bins : int, optional
            Rather than count values, group them into half-open bins,
            a convenience for ``pd.cut``, only works with numeric data.
        dropna : bool, default True
            Don't include counts of NaN.

        Returns
        -------
        Series

        See Also
        --------
        Series.count: Number of non-NA elements in a Series.
        DataFrame.count: Number of non-NA elements in a DataFrame.
        DataFrame.value_counts: Equivalent method on DataFrames.

        Examples
        --------
        >>> index = pd.Index([3, 1, 2, 3, 4, np.nan])
        >>> index.value_counts()
        3.0    2
        1.0    1
        2.0    1
        4.0    1
        Name: count, dtype: int64

        With `normalize` set to `True`, returns the relative frequency by
        dividing all values by the sum of values.

        >>> s = pd.Series([3, 1, 2, 3, 4, np.nan])
        >>> s.value_counts(normalize=True)
        3.0    0.4
        1.0    0.2
        2.0    0.2
        4.0    0.2
        Name: proportion, dtype: float64

        **bins**

        Bins can be useful for going from a continuous variable to a
        categorical variable; instead of counting unique
        apparitions of values, divide the index in the specified
        number of half-open bins.

        >>> s.value_counts(bins=3)
        (0.996, 2.0]    2
        (2.0, 3.0]      2
        (3.0, 4.0]      1
        Name: count, dtype: int64

        **dropna**

        With `dropna` set to `False` we can also see NaN index values.

        >>> s.value_counts(dropna=False)
        3.0    2
        1.0    1
        2.0    1
        4.0    1
        NaN    1
        Name: count, dtype: int64
        )r
  r  r	  Úbinsr  )r%   Úvalue_counts_internal)rC   r	  r
  r  r  r  s         rD   Úvalue_countszIndexOpsMixin.value_countsŸ  s1   € õn Ô/ØØØØØØð
ñ 
ô 
ð 	
rF   c                óš   — | j         }t          |t          j        ¦  «        s|                     ¦   «         }nt          j        |¦  «        }|S r_   )r±   r{   r~   r   r;   r%   Úunique1d)rC   rÛ   rÜ   s      rD   r;   zIndexOpsMixin.uniqueÿ  sA   € Ø”ˆÝ˜&¥"¤*Ñ-Ô-ð 	1à—]’]‘_”_ˆFˆFåÔ(¨Ñ0Ô0ˆFØˆrF   c                ój   — |                       ¦   «         }|rt          |¦  «        }t          |¦  «        S )aŒ  
        Return number of unique elements in the object.

        Excludes NA values by default.

        Parameters
        ----------
        dropna : bool, default True
            Don't include NaN in the count.

        Returns
        -------
        int

        See Also
        --------
        DataFrame.nunique: Method nunique for DataFrame.
        Series.count: Count non-NA/null observations in the Series.

        Examples
        --------
        >>> s = pd.Series([1, 3, 5, 7, 7])
        >>> s
        0    1
        1    3
        2    5
        3    7
        4    7
        dtype: int64

        >>> s.nunique()
        4
        )r;   r$   rŠ   )rC   r  Úuniqss      rD   ÚnuniquezIndexOpsMixin.nunique  s3   € ðF —’‘”ˆØð 	/Ý'¨Ñ.Ô.ˆEÝ�5‰zŒzÐrF   c                óP   — |                       d¬¦  «        t          | ¦  «        k    S )a.  
        Return boolean if values in the object are unique.

        Returns
        -------
        bool

        Examples
        --------
        >>> s = pd.Series([1, 2, 3])
        >>> s.is_unique
        True

        >>> s = pd.Series([1, 2, 3, 1])
        >>> s.is_unique
        False
        F)r  )r  rŠ   rB   s    rD   Ú	is_uniquezIndexOpsMixin.is_unique0  s#   € ð& �|Š| 5ˆ|Ñ)Ô)­S°©Y¬YÒ6Ð6rF   c                ó.   — ddl m}  || ¦  «        j        S )aY  
        Return boolean if values in the object are monotonically increasing.

        Returns
        -------
        bool

        Examples
        --------
        >>> s = pd.Series([1, 2, 2])
        >>> s.is_monotonic_increasing
        True

        >>> s = pd.Series([3, 2, 1])
        >>> s.is_monotonic_increasing
        False
        r   ©r4   )Úpandasr4   Úis_monotonic_increasing©rC   r4   s     rD   r  z%IndexOpsMixin.is_monotonic_increasingE  ó'   € ð& 	!Ð Ð Ð Ð Ð àˆu�T‰{Œ{Ô2Ð2rF   c                ó.   — ddl m}  || ¦  «        j        S )a\  
        Return boolean if values in the object are monotonically decreasing.

        Returns
        -------
        bool

        Examples
        --------
        >>> s = pd.Series([3, 2, 2, 1])
        >>> s.is_monotonic_decreasing
        True

        >>> s = pd.Series([1, 2, 3])
        >>> s.is_monotonic_decreasing
        False
        r   r  )r  r4   Úis_monotonic_decreasingr  s     rD   r  z%IndexOpsMixin.is_monotonic_decreasing\  r  rF   rX   c                ó$  — t          | j        d¦  «        r| j                             |¬¦  «        S | j        j        }|rQt	          | j        ¦  «        r=t          s6t          t          j	        | j
        ¦  «        }|t          j        |¦  «        z  }|S )aÁ  
        Memory usage of the values.

        Parameters
        ----------
        deep : bool, default False
            Introspect the data deeply, interrogate
            `object` dtypes for system-level memory consumption.

        Returns
        -------
        bytes used

        See Also
        --------
        numpy.ndarray.nbytes : Total bytes consumed by the elements of the
            array.

        Notes
        -----
        Memory usage does not include memory consumed by elements that
        are not components of the array if deep=False or if used on PyPy

        Examples
        --------
        >>> idx = pd.Index([1, 2, 3])
        >>> idx.memory_usage()
        24
        rV   rW   )rP   rÅ   rV   rÁ   r   r­   r   r   r~   r   r±   r   Úmemory_usage_of_objects)rC   rX   ÚvrÛ   s       rD   Ú_memory_usagezIndexOpsMixin._memory_usages  s“   € õ> �4”:˜~Ñ.Ô.ð 	Ø”:×*Ò*Øð +ñ ô ð ð ŒJÔˆØð 	5•O D¤JÑ/Ô/ð 	5½ð 	5Ý�"œ* d¤lÑ3Ô3ˆFØ•Ô,¨VÑ4Ô4Ñ4ˆAØˆrF   r8   z”            sort : bool, default False
                Sort `uniques` and shuffle `codes` to maintain the
                relationship.
            )rÛ   ÚorderÚ	size_hintr
  Úuse_na_sentinelú"tuple[npt.NDArray[np.intp], Index]c                óp  — t          j        | j        ||¬¦  «        \  }}|j        t          j        k    r|                     t          j        ¦  «        }t          | t          ¦  «        r|  
                    |¦  «        }n5ddlm} 	  ||| j        ¬¦  «        }n# t          $ r  ||¦  «        }Y nw xY w||fS )N)r
  r&  r   r  rÌ   )r%   Ú	factorizer±   r­   r~   Úfloat16ÚastypeÚfloat32r{   r!   rE   r  r4   ÚNotImplementedError)rC   r
  r&  ÚcodesÚuniquesr4   s         rD   r)  zIndexOpsMixin.factorize�  sÜ   € õ$ $Ô-ØŒL˜t°_ð
ñ 
ô 
‰ˆˆwð Œ=�BœJÒ&Ð&Ø—n’n¥R¤ZÑ0Ô0ˆGå�d�MÑ*Ô*ð 	)à×'Ò'¨Ñ0Ô0ˆGˆGà$Ð$Ð$Ð$Ð$Ð$ð)Ø˜% ¨t¬zÐ:Ñ:Ô:��øÝ&ð )ð )ð )ð  ˜% ™.œ.���ð)øøøð �gˆ~Ðs   ÂB ÂB1Â0B1a  
        Find indices where elements should be inserted to maintain order.

        Find the indices into a sorted {klass} `self` such that, if the
        corresponding elements in `value` were inserted before the indices,
        the order of `self` would be preserved.

        .. note::

            The {klass} *must* be monotonically sorted, otherwise
            wrong locations will likely be returned. Pandas does *not*
            check this for you.

        Parameters
        ----------
        value : array-like or scalar
            Values to insert into `self`.
        side : {{'left', 'right'}}, optional
            If 'left', the index of the first suitable location found is given.
            If 'right', return the last such index.  If there is no suitable
            index, return either 0 or N (where N is the length of `self`).
        sorter : 1-D array-like, optional
            Optional array of integer indices that sort `self` into ascending
            order. They are typically the result of ``np.argsort``.

        Returns
        -------
        int or array of int
            A scalar or array of insertion points with the
            same shape as `value`.

        See Also
        --------
        sort_values : Sort by the values along either axis.
        numpy.searchsorted : Similar method from NumPy.

        Notes
        -----
        Binary search is used to find the required insertion points.

        Examples
        --------
        >>> ser = pd.Series([1, 2, 3])
        >>> ser
        0    1
        1    2
        2    3
        dtype: int64

        >>> ser.searchsorted(4)
        3

        >>> ser.searchsorted([0, 4])
        array([0, 3])

        >>> ser.searchsorted([1, 3], side='left')
        array([0, 2])

        >>> ser.searchsorted([1, 3], side='right')
        array([1, 3])

        >>> ser = pd.Series(pd.to_datetime(['3/11/2000', '3/12/2000', '3/13/2000']))
        >>> ser
        0   2000-03-11
        1   2000-03-12
        2   2000-03-13
        dtype: datetime64[ns]

        >>> ser.searchsorted('3/14/2000')
        3

        >>> ser = pd.Categorical(
        ...     ['apple', 'bread', 'bread', 'cheese', 'milk'], ordered=True
        ... )
        >>> ser
        ['apple', 'bread', 'bread', 'cheese', 'milk']
        Categories (4, object): ['apple' < 'bread' < 'cheese' < 'milk']

        >>> ser.searchsorted('bread')
        1

        >>> ser.searchsorted(['bread'], side='right')
        array([3])

        If the values are not monotonically sorted, wrong locations
        may be returned:

        >>> ser = pd.Series([2, 1, 3])
        >>> ser
        0    2
        1    1
        2    3
        dtype: int64

        >>> ser.searchsorted(1)  # doctest: +SKIP
        0  # wrong result, correct would be 1
        Úsearchsorted.rr   r2   ÚsideúLiteral['left', 'right']Úsorterr0   únp.intpc                ó   — d S r_   rs   ©rC   rr   r1  r3  s       rD   r0  zIndexOpsMixin.searchsorted,  ó	   € ð 	ˆrF   únpt.ArrayLike | ExtensionArrayúnpt.NDArray[np.intp]c                ó   — d S r_   rs   r6  s       rD   r0  zIndexOpsMixin.searchsorted5  r7  rF   r4   )r9   Úleftú$NumpyValueArrayLike | ExtensionArrayúNumpySorter | Noneúnpt.NDArray[np.intp] | np.intpc                ó  — t          |t          ¦  «        r'dt          |¦  «        j        › d�}t	          |¦  «        ‚| j        }t          |t          j        ¦  «        s|                     |||¬¦  «        S t          j        ||||¬¦  «        S )Nz(Value must be 1-D array-like or scalar, z is not supported)r1  r3  )
r{   r   rA   ra   r¾   r±   r~   r   r0  r%   )rC   rr   r1  r3  ÚmsgrÛ   s         rD   r0  zIndexOpsMixin.searchsorted>  s¦   € õ �e�\Ñ*Ô*ð 	"ð;Ý˜‘;”;Ô'ð;ð ;ð ;ð õ ˜S‘/”/Ð!à”ˆÝ˜&¥"¤*Ñ-Ô-ð 	Hà×&Ò& u°4ÀÐ&ÑGÔGÐGåÔ&ØØØØð	
ñ 
ô 
ð 	
rF   Úfirst©ÚkeeprC  r/   c               ó@   — |                       |¬¦  «        }| |          S ©NrB  )Ú_duplicated)rC   rC  r<   s      rD   Údrop_duplicateszIndexOpsMixin.drop_duplicatesX  s%   € Ø×%Ò%¨4Ð%Ñ0Ô0ˆ
à�Z�KÔ Ð rF   únpt.NDArray[np.bool_]c                ó’   — | j         }t          |t          ¦  «        r|                     |¬¦  «        S t	          j        ||¬¦  «        S rE  )r±   r{   r*   r<   r%   )rC   rC  r  s      rD   rF  zIndexOpsMixin._duplicated]  sE   € àŒlˆÝ�c�>Ñ*Ô*ð 	-Ø—>’> t�>Ñ,Ô,Ð,ÝÔ$ S¨tÐ4Ñ4Ô4Ð4rF   c                óØ  — t          j        | |¦  «        }| j        }t          |dd¬¦  «        }t          j        ||j        ¦  «        }t          |¦  «        }t          |t          ¦  «        r%t          j
        |j        |j        |j        ¦  «        }t          j        d¬¦  «        5  t          j        |||¦  «        }d d d ¦  «         n# 1 swxY w Y   |                      ||¬¦  «        S )NT)Úextract_numpyÚextract_rangeÚignore)Úall)rž   )r'   Úget_op_result_namer±   r,   Úmaybe_prepare_scalar_for_opr·   r+   r{   rþ   r~   ÚarangeÚstartÚstopÚstepÚerrstateÚarithmetic_opÚ_construct_result)rC   Úotherrâ   Úres_nameÚlvaluesÚrvaluesrÜ   s          rD   Ú_arith_methodzIndexOpsMixin._arith_methodd  s  € ÝÔ)¨$°Ñ6Ô6ˆà”,ˆÝ °TÈÐNÑNÔNˆÝÔ1°'¸7¼=ÑIÔIˆÝ0°Ñ9Ô9ˆÝ�g�uÑ%Ô%ð 	KÝ”i ¤¨w¬|¸W¼\ÑJÔJˆGåŒ[˜XÐ&Ñ&Ô&ð 	=ð 	=ÝÔ& w°¸Ñ<Ô<ˆFð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð ×%Ò% f°8Ð%Ñ<Ô<Ð<s   Â'C
Ã
CÃCc                ó    — t          | ¦  «        ‚)z~
        Construct an appropriately-wrapped result from the ArrayLike result
        of an arithmetic-like operation.
        r   )rC   rÜ   rž   s      rD   rW  zIndexOpsMixin._construct_results  s   € õ
 " $Ñ'Ô'Ð'rF   )rG   r   )rG   r¯   )rG   r   )rG   r   r`   )rG   r*   )r­   rÆ   rÇ   rÈ   rÉ   rJ   rG   rÊ   )rG   rÈ   )NT)r‡   rä   rå   rÈ   rG   rT   )rG   r.   )r  rÈ   )FTFNT)
r	  rÈ   r
  rÈ   r  rÈ   r  rÈ   rG   r5   )T)r  rÈ   rG   rT   )F)rX   rÈ   rG   rT   )FT)r
  rÈ   r&  rÈ   rG   r'  )..)rr   r2   r1  r2  r3  r0   rG   r4  )rr   r8  r1  r2  r3  r0   rG   r9  )r;  N)rr   r<  r1  r2  r3  r=  rG   r>  )rC  r/   )rA  )rC  r/   rG   rH  )4ra   rb   rc   rd   Ú__array_priority__Ú	frozensetr«   re   rf   r­   r±   r	   rµ   ÚTr·   r¹   r„   r¿   rÁ   rÃ   rÅ   r   rÐ   rÍ   rÞ   r   rò   rù   rª   Úto_listrÿ   r   r  r  r  r;   r  r  r  r  r#  r%   r)  ÚtextwrapÚdedentr6   r
   r0  rG  rF  r\  rW  rs   rF   rD   r7   r7     sp  € € € € € € ðð ð
 ÐØ$- IØ	ˆ
ñ%ô %€Mð ð ð ñ ð ð(ð (ð (ñ „Xð(ð ð(ð (ð (ñ „Xð(ð ð	ð 	ð 	ñ „Uð	ð 	ˆØðð	ñ 	ô 	€Að: ð
"ð 
"ð 
"ñ „Xð
"ð(ð (ð (ð (ð ðð ð ñ „Xðð2 ðSð Sñ „UðSð< ð#ð #ð #ñ „Xð#ð6 ð!ð !ð !ñ „Xð!ð6 ð>(ð >(ð >(ñ „Xð>(ð@ ð '+ØØœ>ð	Cð Cð Cð Cñ „UðCðJ Øðð ð ñ „Xñ „Uðð 	€SˆE˜% yÐ1Ñ1Ô1à:>ðQð Qð Qð Qñ 2Ô1ðQðf 	€Sˆ�E %¨zÐ:Ñ:Ô:à:>ðð ð ð ñ ;Ô:ððB"%ð "%ð "%ðH €GðDð Dð Dð Dð8 ð&ð &ð &ñ „^ð&ð4 ðWð Wð Wð Wñ „UðWð> ð  ØØØØð]
ð ]
ð ]
ð ]
ñ „Uð]
ð~ð ð ð ð%ð %ð %ð %ñ „Uð%ðN ð7ð 7ð 7ñ „Xð7ð( ð3ð 3ð 3ñ „Xð3ð, ð3ð 3ð 3ñ „Xð3ð, ð'ð 'ð 'ð 'ñ „Uð'ðR 	€SØÔØØØØˆXŒ_ðñ
ô 
ðñ ô ð Ø $ðð ð ð ñô ðð6`	ð ØñðR ð *-Ø!ð	ð ð ð ñ „Xðð ð *-Ø!ð	ð ð ð ñ „Xðð 	€Sˆ�nÔ	%¨WÐ5Ñ5Ô5ð *0Ø%)ð	
ð 
ð 
ð 
ñ 6Ô5ð
ð2 3:ð !ð !ð !ð !ð !ð !ð
 ð5ð 5ð 5ð 5ñ „Uð5ð=ð =ð =ð(ð (ð (ð (ð (rF   )Urd   Ú
__future__r   rb  Útypingr   r   r   r   r   r	   r
   rï   Únumpyr~   Úpandas._configr   Úpandas._libsr   Úpandas._typingr   r   r   r   r   r   r   Úpandas.compatr   Úpandas.compat.numpyr   r³   Úpandas.errorsr   Úpandas.util._decoratorsr   r   Úpandas.util._exceptionsr   Úpandas.core.dtypes.castr   Úpandas.core.dtypes.commonr   r   Úpandas.core.dtypes.dtypesr   Úpandas.core.dtypes.genericr   r    r!   r"   Úpandas.core.dtypes.missingr#   r$   Úpandas.corer%   r&   r'   Úpandas.core.accessorr(   Úpandas.core.arrayliker)   Úpandas.core.arraysr*   Úpandas.core.constructionr+   r,   Úcollections.abcr-   r.   r/   r0   r1   r2   r  r3   r4   r5   r6   re   Ú_indexops_doc_kwargsr>   ri   ru   r7   rs   rF   rD   ú<module>r{     sn  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €€€à Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ø -Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4à 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð
 /Ð .Ð .Ð .Ð .Ð .Ø *Ð *Ð *Ð *Ð *Ð *Ø -Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð
 ð ðð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð  "€Ð !Ð !Ð !Ñ !àØØØ!ð	ð Ð ð,$ð ,$ð ,$ð ,$ð ,$�=ñ ,$ô ,$ð ,$ð^-ð -ð -ð -ð -ñ -ô -ð -ðDdð dð dð dð d�W˜XÔ&ñ dô dð dðN[(ð [(ð [(ð [(ð [(�Hñ [(ô [(ð [(ð [(ð [(rF   