§
    Ï! 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/m0Z0m1Z1 ddl2m3Z3m4Z4 ddl5m6Z6m7Z7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@mAZA erddlBmCZCmDZD ddlmEZEmFZFmGZGmHZH ddlImJZJmKZKmLZL i ZMdeNd<   dddddœZO G d„ d e:¦  «        ZP G d!„ d"¦  «        ZQ G d#„ d$ee         ¦  «        ZR G d%„ de<¦  «        ZSd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Ú	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    úJc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\pandas/core/base.pyÚ_constructorzPandasObject._constructorl   s   € õ
 �D‰zŒzÐó    ÚreturnÚstrc                ó6   — t                                | ¦  «        S )zI
        Return a string representation for a particular object.
        )ÚobjectÚ__repr__rA   s    rC   rJ   zPandasObject.__repr__s   s   € õ
 �Š˜tÑ$Ô$Ð$rE   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)rB   rK   s     rC   Ú_reset_cachezPandasObject._reset_cachez   sV   € õ �t˜XÑ&Ô&ð 	ØˆFØˆ;ØŒK×ÒÑÔÐÐÐàŒK�OŠO˜C Ñ&Ô&Ð&Ð&Ð&rE   Ú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)ÚgetattrrS   r   ÚsumÚsuperÚ
__sizeof__)rB   rU   ÚmemÚ	__class__s      €rC   r[   zPandasObject.__sizeof__…   sm   ø€ õ
 ˜t ^°TÑ:Ô:ˆØð 	=Ø�, DÐ)Ñ)Ô)ˆCÝ�i¨™nœnÐ;�s�s°#·'²'±)´)Ñ<Ô<Ð<õ ‰wŒw×!Ò!Ñ#Ô#Ð#rE   )rF   rG   ©N)rK   rL   rF   rM   ©rF   rS   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__ÚpropertyrD   rJ   rR   r[   Ú__classcell__)r]   s   @rC   r=   r=   d   s�   ø€ € € € € € ðð ð
 ÐÐÑàðð ñ „Xðð%ð %ð %ð %ð	'ð 	'ð 	'ð 	'ð 	'ð$ð $ð $ð $ð $ð $ð $ð $ð $ð $rE   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)`.
    rF   rM   c                ó>   — t                                | dd¦  «         dS )z9
        Prevents setting additional attributes.
        Ú__frozenTN)rI   Ú__setattr__rA   s    rC   Ú_freezezNoNewAttributesMixin._freezeŸ   s"   € õ 	×Ò˜4 ¨TÑ2Ô2Ð2Ð2Ð2rE   rK   rG   c                óà   — t          | dd¦  «        r@|dk    s:|t          | ¦  «        j        v s$t          | |d ¦  «        €t          d|› d�¦  «        ‚t                               | ||¦  «         d S )Nrj   Fr>   z"You cannot add any new attribute 'ú')rX   r@   Ú__dict__ÚAttributeErrorrI   rk   )rB   rK   Úvalues      rC   rk   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Ñ,Ô,Ð,Ð,Ð,rE   N)rF   rM   )rK   rG   rF   rM   )r`   ra   rb   rc   rl   rk   © rE   rC   rh   rh   “   sF   € € € € € ð	ð 	ð3ð 3ð 3ð 3ð-ð -ð -ð -ð -ð -rE   rh   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^   )Ú
isinstancerv   ÚlistÚtupler!   r    ÚnpÚndarrayrA   s    rC   Ú_selection_listzSelectionMixin._selection_listÁ   s?   € õ ØŒO�d¥E­9µhÅÄ
ÐKñ
ô 
ð 	%ð ”OÐ$Ð$ØŒÐrE   c                óv   — | j         �t          | j        t          ¦  «        r| j        S | j        | j                  S r^   )rv   rz   ru   r!   rA   s    rC   Ú_selected_objzSelectionMixin._selected_objÊ   s1   € àŒ?Ð"¥j°´½9Ñ&EÔ&EÐ"Ø”8ˆOà”8˜DœOÔ,Ð,rE   rF   rS   c                ó   — | j         j        S r^   )r�   ÚndimrA   s    rC   rƒ   zSelectionMixin.ndimÑ   s   € ð Ô!Ô&Ð&rE   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)	rz   ru   r!   rv   Ú_getitem_nocopyr   Úlenrw   Ú
_drop_axisrA   s    rC   Ú_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ˆOrE   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: )rv   Ú
IndexErrorrz   r{   r|   r!   r    r}   r~   r‰   ru   ÚcolumnsÚintersectionÚsetÚ
differenceÚKeyErrorrG   Ú_gotitemrƒ   )rB   rK   Úbad_keysrƒ   s       rC   Ú__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Ð0rE   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   )rB   rK   rƒ   Úsubsets       rC   r•   zSelectionMixin._gotitemø   s   € õ " $Ñ'Ô'Ð'rE   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)rB   rK   r™   Ú	selections       rC   Ú_infer_selectionzSelectionMixin._infer_selection  sz   € ð ˆ	ØŒ;˜!ÒÐÝŒ]˜3ÑÔð Ø$'¨6 M MµcÔ6FÀsÑ6KÔ6K MàˆIˆIØŒ[˜AÒÐ¥#¤-°Ñ"4Ô"4Ð¸ÀÄÒ9KÐ9KØˆIØÐrE   c                ó    — t          | ¦  «        ‚r^   r   )rB   ÚfuncÚargsÚkwargss       rC   Ú	aggregatezSelectionMixin.aggregate  s   € Ý! $Ñ'Ô'Ð'rE   r_   r^   )rƒ   rS   )r™   rš   )r`   ra   rb   rc   rd   rv   Ú_internal_namesr’   Ú_internal_names_setr	   re   r   r   r�   rƒ   r‹   r—   r•   rŸ   r¤   Úaggrr   rE   rC   rt   rt   µ   sG  € € € € € € ðð ð
 €M€M�MØ$(€JÐ(Ð(Ð(Ñ(Ø#Ð#Ð#Ñ#Ø Ð0€OØ˜#˜oÑ.Ô.Ðà
Øðð ñ „Xñ „Uðð ð-ð -ñ „^ð-ð Øð'ð 'ð 'ñ „^ñ „Uð'ð Øðð ñ „^ñ „Uðð 1ð 1ð 1ð (ð (ð (ð (ð (ð ðð ð ñ „Uðð(ð (ð (ð €C€C€CrE   rt   c            	      óò  — e Zd ZU dZdZ edg¦  «        Zded<   edgd„¦   «         Z	edhd
„¦   «         Z
edid„¦   «         Z eed¬¦  «        Zedjd„¦   «         Zdkd„Zedld„¦   «         Zed„ ¦   «         Zedkd„¦   «         Zedkd„¦   «         Zedmd„¦   «         Zeddej        fdnd#„¦   «         Zeedod$„¦   «         ¦   «         Z ed%d&d'¬(¦  «        	 dpdqd-„¦   «         Z eed&d%d.¬(¦  «        	 dpdqd/„¦   «         Zd0„ ZeZdrd2„Zedod3„¦   «         Z edpdsd5„¦   «         Z!e	 	 	 	 	 dtdud;„¦   «         Z"d<„ Z#edvdwd=„¦   «         Z$edod>„¦   «         Z%edod?„¦   «         Z&edod@„¦   «         Z'edxdydB„¦   «         Z( ee)j*        dCdCdC e+j,        dD¦  «        ¬E¦  «        	 	 dzd{dH„¦   «         Z*dIe-dJ<   e.	 	 d|d}dS„¦   «         Z/e.	 	 d|d~dV„¦   «         Z/ ee-dJ         dW¬X¦  «        	 	 dd€d]„¦   «         Z/d^d_œd�db„Z0ed‚dƒdd„¦   «         Z1de„ Z2df„ Z3dS )„r6   zS
    Common ops mixin to support a unified interface / docs for Series / Index
    iè  Útolistzfrozenset[str]Ú_hidden_attrsrF   r   c                ó    — t          | ¦  «        ‚r^   r   rA   s    rC   ÚdtypezIndexOpsMixin.dtype'  ó   € õ " $Ñ'Ô'Ð'rE   úExtensionArray | np.ndarrayc                ó    — t          | ¦  «        ‚r^   r   rA   s    rC   Ú_valueszIndexOpsMixin._values,  r­   rE   r   c                ó0   — t          j        ||¦  «         | S )zw
        Return the transpose, which is by definition self.

        Returns
        -------
        %(klass)s
        )ÚnvÚvalidate_transpose)rB   r¢   r£   s      rC   Ú	transposezIndexOpsMixin.transpose1  s   € õ 	Ô˜d FÑ+Ô+Ð+ØˆrE   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°   ÚshaperA   s    rC   r¶   zIndexOpsMixin.shapeZ  s   € ð Œ|Ô!Ð!rE   rS   c                ó    — t          | ¦  «        ‚r^   r   rA   s    rC   Ú__len__zIndexOpsMixin.__len__g  s   € å! $Ñ'Ô'Ð'rE   ú
Literal[1]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…   rr   rA   s    rC   rƒ   zIndexOpsMixin.ndimk  s	   € ð0 ˆqrE   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Ú
ValueErrorrA   s    rC   ÚitemzIndexOpsMixin.item…  s6   € õ6 ˆt‰9Œ9˜Š>ˆ>Ý�˜T™
œ
Ñ#Ô#Ð#ÝÐQÑRÔRÐRrE   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°   ÚnbytesrA   s    rC   rÁ   zIndexOpsMixin.nbytes¤  s   € ð4 Œ|Ô"Ð"rE   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°   rA   s    rC   ÚsizezIndexOpsMixin.sizeÀ  s   € õ4 �4”<Ñ Ô Ð rE   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   rA   s    rC   ÚarrayzIndexOpsMixin.arrayÜ  s   € õ~ " $Ñ'Ô'Ð'rE   NFr¬   únpt.DTypeLike | NoneÚcopyÚboolÚna_valuerI   ú
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 'rn   )r¬   NrŽ   F)rz   r¬   r   rÅ   Úto_numpyr¼   r½   ÚkeysÚ	TypeErrorr   Ú
no_defaultr}   ÚnanÚ
issubdtypeÚfloatingr°   r   ÚasarrayrÇ   Ú
asanyarrayr"   r   Úshares_memoryÚviewÚflagsÚ	writeable)	rB   r¬   rÇ   rÉ   r£   r–   ÚfillnaÚvaluesÚresults	            rC   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àˆrE   c                ó   — | j          S r^   )rÃ   rA   s    rC   ÚemptyzIndexOpsMixin.empty£  s   € ð ”9ˆ}ÐrE   ÚmaxÚminÚlargest)ÚopÚopposerq   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_skipnarz   r)   r"   ÚanyÚwarningsÚwarnr@   r`   ÚFutureWarningr   Úargmaxr%   Ú	nanargmax©rB   r†   rä   r¢   r£   ÚdelegaterÛ   s          rC   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ðñ ô ð ð ˆMrE   Ú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_skipnarz   r)   r"   rí   rî   rï   r@   r`   rð   r   Úargminr%   Ú	nanargminró   s          rC   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ðñ ô ð ð ˆMrE   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©   rA   s    rC   r©   zIndexOpsMixin.tolist  s   € ðD Œ|×"Ò"Ñ$Ô$Ð$rE   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
        )	rz   r°   r}   r~   r½   Úmapr¿   ÚrangerÃ   rA   s    rC   Ú__iter__zIndexOpsMixin.__iter__D  sM   € õ, ˜$œ,­¬
Ñ3Ô3ð 	Då˜œÑ%Ô%Ð%å�t”|Ô(­%°´Ô0AÑ*BÔ*BÑCÔCÐCrE   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í   rA   s    rC   ÚhasnanszIndexOpsMixin.hasnans`  s"   € õ2 •D˜‘J”J—N’NÑ$Ô$Ñ%Ô%Ð%rE   Ú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°   rz   r)   rü   r$   Ú	map_array)rB   Úmapperr  r  Úarrs        rC   Ú_map_valueszIndexOpsMixin._map_values{  sM   € ð2 Œlˆå�c�>Ñ*Ô*ð 	8Ø—7’7˜6¨Y�7Ñ7Ô7Ð7åÔ# C¨¸9ÈgÐVÑVÔVÐVrE   Ú	normalizeÚsortÚ	ascendingÚdropnar4   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)rB   r  r	  r
  r  r  s         rC   Úvalue_countszIndexOpsMixin.value_counts›  s1   € õn Ô/ØØØØØØð
ñ 
ô 
ð 	
rE   c                óš   — | j         }t          |t          j        ¦  «        s|                     ¦   «         }nt          j        |¦  «        }|S r^   )r°   rz   r}   r~   r:   r$   Úunique1d)rB   rÚ   rÛ   s      rC   r:   zIndexOpsMixin.uniqueû  sA   € Ø”ˆÝ˜&¥"¤*Ñ-Ô-ð 	1à—]’]‘_”_ˆFˆFåÔ(¨Ñ0Ô0ˆFØˆrE   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‰   )rB   r  Úuniqss      rC   ÚnuniquezIndexOpsMixin.nunique  s3   € ðF —’‘”ˆØð 	/Ý'¨Ñ.Ô.ˆEÝ�5‰zŒzÐrE   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‰   rA   s    rC   Ú	is_uniquezIndexOpsMixin.is_unique,  s#   € ð& �|Š| 5ˆ|Ñ)Ô)­S°©Y¬YÒ6Ð6rE   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   ©r3   )Úpandasr3   Úis_monotonic_increasing©rB   r3   s     rC   r  z%IndexOpsMixin.is_monotonic_increasingA  ó'   € ð& 	!Ð Ð Ð Ð Ð àˆu�T‰{Œ{Ô2Ð2rE   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  r3   Úis_monotonic_decreasingr  s     rC   r  z%IndexOpsMixin.is_monotonic_decreasingX  r  rE   rW   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
        rU   rV   )rO   rÅ   rU   rÁ   r   r¬   r   r   r}   r~   r°   r   Úmemory_usage_of_objects)rB   rW   ÚvrÚ   s       rC   Ú_memory_usagezIndexOpsMixin._memory_usageo  s“   € õ> �4”:˜~Ñ.Ô.ð 	Ø”:×*Ò*Øð +ñ ô ð ð ŒJÔˆØð 	5•O D¤JÑ/Ô/ð 	5½ð 	5Ý�"œ* d¤lÑ3Ô3ˆFØ•Ô,¨VÑ4Ô4Ñ4ˆAØˆrE   r7   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                ó(  — t          j        | j        ||¬¦  «        \  }}|j        t          j        k    r|                     t          j        ¦  «        }t          | t          ¦  «        r|  
                    |¦  «        }nddlm}  ||¦  «        }||fS )N)r	  r%  r   r  )r$   Ú	factorizer°   r¬   r}   Úfloat16ÚastypeÚfloat32rz   r    rD   r  r3   )rB   r	  r%  ÚcodesÚuniquesr3   s         rC   r(  zIndexOpsMixin.factorize™  sœ   € õ$ $Ô-ØŒL˜t°_ð
ñ 
ô 
‰ˆˆwð Œ=�BœJÒ&Ð&Ø—n’n¥R¤ZÑ0Ô0ˆGå�d�HÑ%Ô%ð 	%à×'Ò'¨Ñ0Ô0ˆGˆGà$Ð$Ð$Ð$Ð$Ð$à�e˜G‘n”nˆGØ�gˆ~ÐrE   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.rq   r1   ÚsideúLiteral['left', 'right']Úsorterr/   únp.intpc                ó   — d S r^   rr   ©rB   rq   r/  r1  s       rC   r.  zIndexOpsMixin.searchsorted#  ó	   € ð 	ˆrE   únpt.ArrayLike | ExtensionArrayúnpt.NDArray[np.intp]c                ó   — d S r^   rr   r4  s       rC   r.  zIndexOpsMixin.searchsorted,  r5  rE   r3   )r8   Ú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)r/  r1  )
rz   r   r@   r`   r¾   r°   r}   r~   r.  r$   )rB   rq   r/  r1  ÚmsgrÚ   s         rC   r.  zIndexOpsMixin.searchsorted5  s¦   € õ �e�\Ñ*Ô*ð 	"ð;Ý˜‘;”;Ô'ð;ð ;ð ;ð õ ˜S‘/”/Ð!à”ˆÝ˜&¥"¤*Ñ-Ô-ð 	Hà×&Ò& u°4ÀÐ&ÑGÔGÐGåÔ&ØØØØð	
ñ 
ô 
ð 	
rE   Úfirst©ÚkeeprA  r.   c               ó@   — |                       |¬¦  «        }| |          S ©Nr@  )Ú_duplicated)rB   rA  r;   s      rC   Údrop_duplicateszIndexOpsMixin.drop_duplicatesO  s%   € Ø×%Ò%¨4Ð%Ñ0Ô0ˆ
à�Z�KÔ Ð rE   únpt.NDArray[np.bool_]c                ó’   — | j         }t          |t          ¦  «        r|                     |¬¦  «        S t	          j        ||¬¦  «        S rC  )r°   rz   r)   r;   r$   )rB   rA  r  s      rC   rD  zIndexOpsMixin._duplicatedT  sE   € àŒlˆÝ�c�>Ñ*Ô*ð 	-Ø—>’> t�>Ñ,Ô,Ð,ÝÔ$ S¨tÐ4Ñ4Ô4Ð4rE   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*   rz   rý   r}   ÚarangeÚstartÚstopÚstepÚerrstateÚarithmetic_opÚ_construct_result)rB   Úotherrá   Úres_nameÚlvaluesÚrvaluesrÛ   s          rC   Ú_arith_methodzIndexOpsMixin._arith_method[  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   )rB   rÛ   r�   s      rC   rU  zIndexOpsMixin._construct_resultj  s   € õ
 " $Ñ'Ô'Ð'rE   )rF   r   )rF   r®   )rF   r   )rF   r   r_   )rF   r¹   )rF   r)   )r¬   rÆ   rÇ   rÈ   rÉ   rI   rF   rÊ   )rF   rÈ   )NT)r†   rã   rä   rÈ   rF   rS   )rF   r-   )r  rÈ   )FTFNT)
r  rÈ   r	  rÈ   r
  rÈ   r  rÈ   rF   r4   )T)r  rÈ   rF   rS   )F)rW   rÈ   rF   rS   )FT)r	  rÈ   r%  rÈ   rF   r&  )..)rq   r1   r/  r0  r1  r/   rF   r2  )rq   r6  r/  r0  r1  r/   rF   r7  )r9  N)rq   r:  r/  r0  r1  r;  rF   r<  )rA  r.   )r?  )rA  r.   rF   rF  )4r`   ra   rb   rc   Ú__array_priority__Ú	frozensetrª   rd   re   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Údedentr5   r
   r.  rE  rD  rZ  rU  rr   rE   rC   r6   r6     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Œ_ðñ
ô 
ðñ ô ð Ø $ðð ð ð ñô ðð,`	ð ØñðR ð *-Ø!ð	ð ð ð ñ „Xðð ð *-Ø!ð	ð ð ð ñ „Xðð 	€Sˆ�nÔ	%¨WÐ5Ñ5Ô5ð *0Ø%)ð	
ð 
ð 
ð 
ñ 6Ô5ð
ð2 3:ð !ð !ð !ð !ð !ð !ð
 ð5ð 5ð 5ð 5ñ „Uð5ð=ð =ð =ð(ð (ð (ð (ð (rE   )Trc   Ú
__future__r   r`  Ú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!   Ú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.   r/   r0   r1   r  r2   r3   r4   r5   rd   Ú_indexops_doc_kwargsr=   rh   rt   r6   rr   rE   rC   ú<module>ry     sd  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €€€à Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ø -Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð 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S(ð S(ð S(ð S(ð S(�Hñ S(ô S(ð S(ð S(ð S(rE   