§
    Ï! h4Ÿ  ã                  ó°  — d dl m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mZ d dlmZ d dlmZmZmZmZmZmZmZmZm Z m!Z!m"Z#m$Z$ d dl%m&Z&m'Z'm(Z( d d	l)m*Z* d d
l+m,Z,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z; d dl<m=Z=m>Z> d dl?m@Z@mAZAmBZBmCZC d dlDmEZE d dlFmGZH d dlImJc mKZL er(d dlMmNZN d dlOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZW d dlFmXZXmYZY d dlZm[Z[  e
de¬¦  «        Z\ddiZ]d<d=d„Z^ G d „ deHj_        e#j`        ¦  «        Zad>d#„Zb	 	 d?d@d+„ZcedAd,„¦   «         ZdedBd/„¦   «         ZddCd1„Zd	 d<dDd3„ZdEdFd7„Ze	 	 	 	 	 	 	 	 dGdHd9„ZfdId;„ZgdS )Jé    )Úannotations)Ú	timedeltaN)ÚTYPE_CHECKINGÚAnyÚCallableÚLiteralÚTypeVarÚcastÚoverload)ÚalgosÚlib)ÚNDArrayBacked)Ú
BaseOffsetÚNaTÚNaTTypeÚ	TimedeltaÚadd_overflowsafeÚastype_overflowsafeÚdt64arr_to_periodarrÚget_unit_from_dtypeÚiNaTÚparsingÚperiodÚ	to_offset)Ú	FreqGroupÚPeriodDtypeBaseÚfreq_to_period_freqstr)Úisleapyear_arr)ÚTickÚdelta_to_tick)ÚDIFFERENT_FREQÚIncompatibleFrequencyÚPeriodÚget_period_field_arrÚperiod_asfreq_arr)Úcache_readonlyÚdoc)Úfind_stack_level)Úensure_objectÚpandas_dtype)ÚDatetimeTZDtypeÚPeriodDtype)ÚABCIndexÚABCPeriodIndexÚ	ABCSeriesÚABCTimedeltaArray)Úisna)Údatetimelike)ÚSequence)ÚAnyArrayLikeÚDtypeÚFillnaOptionsÚNpDtypeÚNumpySorterÚNumpyValueArrayLikeÚSelfÚnpt)ÚDatetimeArrayÚTimedeltaArray)ÚExtensionArrayÚBaseOffsetT)ÚboundÚklassÚPeriodArrayÚnameÚstrÚ	docstringú
str | Nonec                óH   ‡ — ˆ fd„}‰ |_         ||_        t          |¦  «        S )Nc                óL   •— | j         j        }t          ‰| j        |¦  «        }|S ©N)ÚdtypeÚ_dtype_coder$   Úasi8)ÚselfÚbaseÚresultrC   s      €úSc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\pandas/core/arrays/period.pyÚfz_field_accessor.<locals>.fm   s%   ø€ ØŒzÔ%ˆÝ% d¨D¬I°tÑ<Ô<ˆØˆó    )Ú__name__Ú__doc__Úproperty)rC   rE   rQ   s   `  rP   Ú_field_accessorrV   l   s8   ø€ ðð ð ð ð ð
 €A„JØ€A„IÝ�A‰;Œ;ÐrR   c                  ó  ‡ — e Zd ZU dZdZdZ ej        e¦  «        Z	e
fZd„ ZdZedƒd„¦   «         Zg Zd	ed
<   dgZd	ed<   g d¢Zd	ed<   g d¢Zd	ed<   eez   ez   Zd	ed<   g d¢Zd	ed<   ded<   	 d„d…d„Zed†d!„¦   «         Zeddd"œd‡d#„¦   «         Zeddd"œd‡d$„¦   «         Zedˆd‰d%„¦   «         Zed&„ ¦   «         ZedŠd)„¦   «         Zd‹d-„ZdŒd0„Z d�d3„Z!e"dŽd4„¦   «         Z#ed�d6„¦   «         Z$ed�d7„¦   «         Z%	 d‘d’d;„Z&dˆd<„Z' e(d=d>¦  «        Z) e(d?d@¦  «        Z* e(dAdB¦  «        Z+ e(dCdD¦  «        Z, e(dEdF¦  «        Z- e(dGdH¦  «        Z. e(dIdJ¦  «        Z/e/Z0 e(dKdL¦  «        Z1e1Z2e2Z3 e(dMdN¦  «        xZ4Z5 e(dOdP¦  «        Z6 e(dQ¦  «        Z7 e(dRdS¦  «        Z8e8Z9ed“dU„¦   «         Z:d”d•dY„Z;d–dZ„Z< e=d—i e>¤d[d[d\œ¤Žd˜d™d^„¦   «         Z?dšd›d`„Z@daddbœdœdf„ZAd�džˆ fdh„ZB	 	 dŸd dp„ZCdddgdqœd¡dx„ZD	 d¢d£ˆ fdy„ZEd¤d}„ZFd¥d~„ZGˆ fd„ZHd¦d�„ZId‚„ ZJˆ xZKS )§rB   a   
    Pandas ExtensionArray for storing Period data.

    Users should use :func:`~pandas.array` to create new instances.

    Parameters
    ----------
    values : Union[PeriodArray, Series[period], ndarray[int], PeriodIndex]
        The data to store. These should be arrays that can be directly
        converted to ordinals without inference or copy (PeriodArray,
        ndarray[int64]), or a box around such an array (Series[period],
        PeriodIndex).
    dtype : PeriodDtype, optional
        A PeriodDtype instance from which to extract a `freq`. If both
        `freq` and `dtype` are specified, then the frequencies must match.
    freq : str or DateOffset
        The `freq` to use for the array. Mostly applicable when `values`
        is an ndarray of integers, when `freq` is required. When `values`
        is a PeriodArray (or box around), it's checked that ``values.freq``
        matches `freq`.
    copy : bool, default False
        Whether to copy the ordinals before storing.

    Attributes
    ----------
    None

    Methods
    -------
    None

    See Also
    --------
    Period: Represents a period of time.
    PeriodIndex : Immutable Index for period data.
    period_range: Create a fixed-frequency PeriodArray.
    array: Construct a pandas array.

    Notes
    -----
    There are two components to a PeriodArray

    - ordinals : integer ndarray
    - freq : pd.tseries.offsets.Offset

    The values are physically stored as a 1-D ndarray of integers. These are
    called "ordinals" and represent some kind of offset from a base.

    The `freq` indicates the span covered by each element of the array.
    All elements in the PeriodArray have the same `freq`.

    Examples
    --------
    >>> pd.arrays.PeriodArray(pd.PeriodIndex(['2023-01-01',
    ...                                       '2023-01-02'], freq='D'))
    <PeriodArray>
    ['2023-01-01', '2023-01-02']
    Length: 2, dtype: period[D]
    iè  Úperiodarrayc                ó,   — t          | t          ¦  «        S rI   )Ú
isinstancer,   )Úxs    rP   ú<lambda>zPeriodArray.<lambda>»   s   € ¥ZØ	�;ñ&ô &€ rR   )r   Úreturnútype[Period]c                ó   — t           S rI   )r#   ©rM   s    rP   Ú_scalar_typezPeriodArray._scalar_typeÀ   s   € åˆrR   z	list[str]Ú
_other_opsÚis_leap_yearÚ	_bool_ops)Ú
start_timeÚend_timeÚfreqÚ_object_ops)ÚyearÚmonthÚdayÚhourÚminuteÚsecondÚ
weekofyearÚweekdayÚweekÚ	dayofweekÚday_of_weekÚ	dayofyearÚday_of_yearÚquarterÚqyearÚdays_in_monthÚdaysinmonthÚ
_field_opsÚ_datetimelike_ops)ÚstrftimeÚto_timestampÚasfreqÚ_datetimelike_methodsr,   Ú_dtypeNFrJ   úDtype | NoneÚcopyÚboolÚNonec                óF  — |�Gt          j        dt          t          ¦   «         ¬¦  «         t	          ||¦  «        }t          |¦  «        }|�7t          |¦  «        }t          |t
          ¦  «        st          d|› d�¦  «        ‚t          |t          ¦  «        r4|j
        }t          |t          | ¦  «        ¦  «        st          d¦  «        ‚nt          |t          ¦  «        r|j
        }t          |t          | ¦  «        ¦  «        r0|� ||j        k    rt          ||j        ¦  «        ‚|j        |j        }}|st%          j        |d¬¦  «        }nt%          j        |d|¬¦  «        }|€t          d	¦  «        ‚t+          t
          |¦  «        }t-          j        | ||¦  «         d S )
Nz}The 'freq' keyword in the PeriodArray constructor is deprecated and will be removed in a future version. Pass 'dtype' instead)Ú
stacklevelzInvalid dtype z for PeriodArrayzIncorrect dtypeÚint64©rJ   ©rJ   r‚   z-dtype is not specified and cannot be inferred)ÚwarningsÚwarnÚFutureWarningr(   Úvalidate_dtype_freqr,   r*   rZ   Ú
ValueErrorr/   Ú_valuesÚtypeÚ	TypeErrorr.   rJ   Úraise_on_incompatiblerg   Ú_ndarrayÚnpÚasarrayÚarrayr
   r   Ú__init__)rM   ÚvaluesrJ   rg   r‚   s        rP   r—   zPeriodArray.__init__ã   s¯  € ð ÐåŒMðPåÝ+Ñ-Ô-ð	ñ ô ð õ ' u¨dÑ3Ô3ˆDÝ Ñ%Ô%ˆEàÐÝ  Ñ'Ô'ˆEÝ˜e¥[Ñ1Ô1ð KÝ Ð!I°%Ð!IÐ!IÐ!IÑJÔJÐJå�f�iÑ(Ô(ð 	$Ø”^ˆFÝ˜f¥d¨4¡j¤jÑ1Ô1ð 3ÝÐ 1Ñ2Ô2Ð2ð3õ ˜¥Ñ/Ô/ð 	$Ø”^ˆFå�f�d 4™jœjÑ)Ô)ð 	:ØÐ  U¨f¬lÒ%:Ð%:Ý+¨F°E´JÑ?Ô?Ð?Ø"œO¨V¬\�EˆFàð 	@Ý”Z ¨gÐ6Ñ6Ô6ˆFˆFå”X˜f¨G¸$Ð?Ñ?Ô?ˆFØˆ=ÝÐLÑMÔMÐMÝ•[ %Ñ(Ô(ˆÝÔ˜t V¨UÑ3Ô3Ð3Ð3Ð3rR   r˜   únpt.NDArray[np.int64]r:   c                ó~   — d}t          |t          j        ¦  «        r|j        dk    s
J |¦   «         ‚ | ||¬¦  «        S )Nz Should be numpy array of type i8Úi8rˆ   )rZ   r”   ÚndarrayrJ   )Úclsr˜   rJ   Úassertion_msgs       rP   Ú_simple_newzPeriodArray._simple_new  sJ   € ð ;ˆÝ˜&¥"¤*Ñ-Ô-ÐU°&´,À$Ò2FÐ2FÐ2FÈÑ2FÔ2FÐFØˆs�6 Ð'Ñ'Ô'Ð'rR   r‰   c               ó¤  — |�t          |¦  «        }|rt          |t          ¦  «        r|j        }nd }t          || ¦  «        r-t	          |j        |¦  «         |r|                     ¦   «         }|S t          j        |t          ¬¦  «        }|pt          j        |¦  «        }t          j        ||¦  «        }t          |¦  «        } | ||¬¦  «        S )Nrˆ   )r*   rZ   r,   rg   r�   rJ   r‚   r”   r•   ÚobjectÚ	libperiodÚextract_freqÚextract_ordinals)r�   ÚscalarsrJ   r‚   rg   ÚperiodsÚordinalss          rP   Ú_from_sequencezPeriodArray._from_sequence  sÙ   € ð ÐÝ  Ñ'Ô'ˆEØð 	•Z ¥{Ñ3Ô3ð 	Ø”:ˆDˆDàˆDå�g˜sÑ#Ô#ð 	Ý ¤¨tÑ4Ô4Ð4Øð )Ø!Ÿ,š,™.œ.�ØˆNå”*˜W­FÐ3Ñ3Ô3ˆàÐ6•yÔ-¨gÑ6Ô6ˆÝÔ-¨g°tÑ<Ô<ˆÝ˜DÑ!Ô!ˆØˆs�8 5Ð)Ñ)Ô)Ð)rR   c               ó2   — |                       |||¬¦  «        S )Nr‰   )r¨   )r�   ÚstringsrJ   r‚   s       rP   Ú_from_sequence_of_stringsz%PeriodArray._from_sequence_of_strings4  s   € ð ×!Ò! '°¸TÐ!ÑBÔBÐBrR   c                óÀ   — t          |t          ¦  «        rt          |j        |j        ¦  «        }t          |||¦  «        \  }}t          |¦  «        } | ||¬¦  «        S )a  
        Construct a PeriodArray from a datetime64 array

        Parameters
        ----------
        data : ndarray[datetime64[ns], datetime64[ns, tz]]
        freq : str or Tick
        tz : tzinfo, optional

        Returns
        -------
        PeriodArray[freq]
        rˆ   )rZ   r   r   ÚnrC   r   r,   )r�   Údatarg   ÚtzrJ   s        rP   Ú_from_datetime64zPeriodArray._from_datetime64:  s`   € õ �d�JÑ'Ô'ð 	=Ý)¨$¬&°$´)Ñ<Ô<ˆDÝ)¨$°°bÑ9Ô9‰
ˆˆdÝ˜DÑ!Ô!ˆØˆs�4˜uÐ%Ñ%Ô%Ð%rR   c                ó°   — t          j        |¦  «        }|�t          j        |¦  «        }|€|�t	          ||||¦  «        \  }}nt          d¦  «        ‚||fS )Nz/Not enough parameters to construct Period range)ÚdtlÚvalidate_periodsr#   Ú_maybe_convert_freqÚ_get_ordinal_rangerŽ   )r�   ÚstartÚendr¦   rg   Úsubarrs         rP   Ú_generate_rangezPeriodArray._generate_rangeO  sd   € åÔ& wÑ/Ô/ˆàÐÝÔ-¨dÑ3Ô3ˆDàÐ  Ý-¨e°S¸'À4ÑHÔH‰LˆF�D�DåÐNÑOÔOÐOà�tˆ|ÐrR   ÚfieldsÚdictc               óp   — t          dd|i|¤Ž\  }}t          |¦  «        }|                      ||¬¦  «        S )Nrg   rˆ   © )Ú_range_from_fieldsr,   rŸ   )r�   rº   rg   r¸   rJ   s        rP   Ú_from_fieldszPeriodArray._from_fields]  sA   € å)Ð>Ð>¨tÐ>°vÐ>Ð>‰ˆ�Ý˜DÑ!Ô!ˆØ�Š˜v¨UˆÑ3Ô3Ð3rR   ÚvalueúPeriod | NaTTypeúnp.int64c                óò   — |t           u rt          j        |j        ¦  «        S t	          || j        ¦  «        r.|                      |¦  «         t          j        |j        ¦  «        S t          d|› d�¦  «        ‚)Nz!'value' should be a Period. Got 'z
' instead.)	r   r”   r‡   Ú_valuerZ   ra   Ú_check_compatible_withÚordinalrŽ   ©rM   rÀ   s     rP   Ú_unbox_scalarzPeriodArray._unbox_scalari  su   € ð •Cˆ<ˆ<å”8˜EœLÑ)Ô)Ð)Ý˜˜tÔ0Ñ1Ô1ð 	TØ×'Ò'¨Ñ.Ô.Ð.Ý”8˜EœMÑ*Ô*Ð*åÐRÀÐRÐRÐRÑSÔSÐSrR   rD   r#   c                ó.   — t          || j        ¬¦  «        S )N)rg   )r#   rg   rÇ   s     rP   Ú_scalar_from_stringzPeriodArray._scalar_from_stringv  s   € Ý�e $¤)Ð,Ñ,Ô,Ð,rR   ÚotherúPeriod | NaTType | PeriodArrayc                óP   — |t           u rd S |                      |j        ¦  «         d S rI   )r   Ú_require_matching_freqrg   ©rM   rË   s     rP   rÅ   z"PeriodArray._check_compatible_with|  s.   € Ø•Cˆ<ˆ<ØˆFð 	×#Ò# E¤JÑ/Ô/Ð/Ð/Ð/rR   c                ó   — | j         S rI   )r€   r`   s    rP   rJ   zPeriodArray.dtype†  s
   € àŒ{ÐrR   r   c                ó   — | j         j        S )zC
        Return the frequency object for this PeriodArray.
        ©rJ   rg   r`   s    rP   rg   zPeriodArray.freq‹  s   € ð
 ŒzŒÐrR   c                óJ   — t          | j        j        | j        j        ¦  «        S rI   )r   rg   r­   rC   r`   s    rP   ÚfreqstrzPeriodArray.freqstr’  s   € å% d¤i¤k°4´9´>ÑBÔBÐBrR   úNpDtype | Noneúbool | Noneú
np.ndarrayc                ó’   — |dk    r| j         S |t          k    r| j         S t          j        t          | ¦  «        t          ¬¦  «        S )Nr›   rˆ   )rL   rƒ   Ú_isnanr”   r–   Úlistr¡   )rM   rJ   r‚   s      rP   Ú	__array__zPeriodArray.__array__–  sE   € ð �DŠ=ˆ=Ø”9ÐØ•dŠ]ˆ]Ø”K�<Ðõ Œx�˜T™
œ
­&Ð1Ñ1Ô1Ð1rR   c                ó  — ddl }ddlm} |��|j                             |¦  «        r/|                     | j        |                      ¦   «         |¬¦  «        S t          ||¦  «        r1| j	        |j
        k    r t          d| j	        › d|j
        › d�¦  «        ‚nt          d|› d	�¦  «        ‚ || j	        ¦  «        }|                     | j        |                      ¦   «         d
¬¦  «        }|j                             ||¦  «        S )z6
        Convert myself into a pyarrow Array.
        r   N)ÚArrowPeriodType)Úmaskr�   zENot supported to convert PeriodArray to array with different 'freq' (z vs ú)z)Not supported to convert PeriodArray to 'z' typer‡   )ÚpyarrowÚ(pandas.core.arrays.arrow.extension_typesrÝ   ÚtypesÚ
is_integerr–   r“   r1   rZ   rÔ   rg   r‘   r>   Úfrom_storage)rM   r�   rà   rÝ   Úperiod_typeÚstorage_arrays         rP   Ú__arrow_array__zPeriodArray.__arrow_array__¡  s4  € ð 	ˆˆˆàLÐLÐLÐLÐLÐLàÐØŒ}×'Ò'¨Ñ-Ô-ð Ø—}’} T¤]¸¿º¹¼È4�}ÑPÔPÐPÝ˜D /Ñ2Ô2ð 
à”< 4¤9Ò,Ð,Ý#ðBØ#'¤<ðBð BØ59´YðBð Bð Bñô ð ð -õ  ØLÀÐLÐLÐLñô ð ð &�o d¤lÑ3Ô3ˆØŸš d¤m¸$¿)º)¹+¼+ÈG˜ÑTÔTˆØÔ%×2Ò2°;ÀÑNÔNÐNrR   ri   z×
        The year of the period.

        Examples
        --------
        >>> idx = pd.PeriodIndex(["2023", "2024", "2025"], freq="Y")
        >>> idx.year
        Index([2023, 2024, 2025], dtype='int64')
        rj   zå
        The month as January=1, December=12.

        Examples
        --------
        >>> idx = pd.PeriodIndex(["2023-01", "2023-02", "2023-03"], freq="M")
        >>> idx.month
        Index([1, 2, 3], dtype='int64')
        rk   zÐ
        The days of the period.

        Examples
        --------
        >>> idx = pd.PeriodIndex(['2020-01-31', '2020-02-28'], freq='D')
        >>> idx.day
        Index([31, 28], dtype='int64')
        rl   zÝ
        The hour of the period.

        Examples
        --------
        >>> idx = pd.PeriodIndex(["2023-01-01 10:00", "2023-01-01 11:00"], freq='h')
        >>> idx.hour
        Index([10, 11], dtype='int64')
        rm   a  
        The minute of the period.

        Examples
        --------
        >>> idx = pd.PeriodIndex(["2023-01-01 10:30:00",
        ...                       "2023-01-01 11:50:00"], freq='min')
        >>> idx.minute
        Index([30, 50], dtype='int64')
        rn   a	  
        The second of the period.

        Examples
        --------
        >>> idx = pd.PeriodIndex(["2023-01-01 10:00:30",
        ...                       "2023-01-01 10:00:31"], freq='s')
        >>> idx.second
        Index([30, 31], dtype='int64')
        rq   a   
        The week ordinal of the year.

        Examples
        --------
        >>> idx = pd.PeriodIndex(["2023-01", "2023-02", "2023-03"], freq="M")
        >>> idx.week  # It can be written `weekofyear`
        Index([5, 9, 13], dtype='int64')
        rs   zø
        The day of the week with Monday=0, Sunday=6.

        Examples
        --------
        >>> idx = pd.PeriodIndex(["2023-01-01", "2023-01-02", "2023-01-03"], freq="D")
        >>> idx.weekday
        Index([6, 0, 1], dtype='int64')
        ru   aÐ  
        The ordinal day of the year.

        Examples
        --------
        >>> idx = pd.PeriodIndex(["2023-01-10", "2023-02-01", "2023-03-01"], freq="D")
        >>> idx.dayofyear
        Index([10, 32, 60], dtype='int64')

        >>> idx = pd.PeriodIndex(["2023", "2024", "2025"], freq="Y")
        >>> idx
        PeriodIndex(['2023', '2024', '2025'], dtype='period[Y-DEC]')
        >>> idx.dayofyear
        Index([365, 366, 365], dtype='int64')
        rv   zÛ
        The quarter of the date.

        Examples
        --------
        >>> idx = pd.PeriodIndex(["2023-01", "2023-02", "2023-03"], freq="M")
        >>> idx.quarter
        Index([1, 1, 1], dtype='int64')
        rw   rx   a„  
        The number of days in the month.

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

        >>> period = pd.period_range('2020-1-1 00:00', '2020-3-1 00:00', freq='M')
        >>> s = pd.Series(period)
        >>> s
        0   2020-01
        1   2020-02
        2   2020-03
        dtype: period[M]
        >>> s.dt.days_in_month
        0    31
        1    29
        2    31
        dtype: int64

        For PeriodIndex:

        >>> idx = pd.PeriodIndex(["2023-01", "2023-02", "2023-03"], freq="M")
        >>> idx.days_in_month   # It can be also entered as `daysinmonth`
        Index([31, 28, 31], dtype='int64')
        únpt.NDArray[np.bool_]c                óN   — t          t          j        | j        ¦  «        ¦  «        S )zò
        Logical indicating if the date belongs to a leap year.

        Examples
        --------
        >>> idx = pd.PeriodIndex(["2023", "2024", "2025"], freq="Y")
        >>> idx.is_leap_year
        array([False,  True, False])
        )r   r”   r•   ri   r`   s    rP   rc   zPeriodArray.is_leap_yearb  s   € õ �bœj¨¬Ñ3Ô3Ñ4Ô4Ð4rR   r¶   Úhowr<   c                ó~  — ddl m} t          j        |¦  «        }|dk    }|r||dk    s| j        dk    r:t          dd¦  «        t          dd¦  «        z
  }|                      d¬	¦  «        |z   S t          dd¦  «        }| | j        z                        d¬	¦  «        |z
  S |€3| j                             ¦   «         }t          |d¦  «        }|j
        }|}nt          j        |¦  «        }|j        }|                      ||¬	¦  «        }	t          j        |	j        |¦  «        }
 |j        |
¦  «        }| j        j        dk    rjt'          j        | j        ¦  «        }t+          |¦  «        dk    r<|d         }|| j        j        k    r| j        |_        n|dk    r| j        j        |_        |S |                     d¦  «        S )a“  
        Cast to DatetimeArray/Index.

        Parameters
        ----------
        freq : str or DateOffset, optional
            Target frequency. The default is 'D' for week or longer,
            's' otherwise.
        how : {'s', 'e', 'start', 'end'}
            Whether to use the start or end of the time period being converted.

        Returns
        -------
        DatetimeArray/Index

        Examples
        --------
        >>> idx = pd.PeriodIndex(["2023-01", "2023-02", "2023-03"], freq="M")
        >>> idx.to_timestamp()
        DatetimeIndex(['2023-01-01', '2023-02-01', '2023-03-01'],
        dtype='datetime64[ns]', freq='MS')
        r   )r<   ÚEÚBé   ÚDÚnsr¶   )rê   NÚinfer)Úpandas.core.arraysr<   r¢   Úvalidate_end_aliasrg   r   r}   r€   Ú_get_to_timestamp_baser   Ú_freqstrr#   r´   Ú_period_dtype_coder~   Úperiodarr_to_dt64arrrL   r¨   rC   ÚlibalgosÚunique_deltasÚlenrJ   Ú_nÚ_freqrN   Ú
_with_freq)rM   rg   rê   r<   r·   ÚadjustÚ	freq_coderJ   rN   Únew_parrÚnew_dataÚdtaÚdiffsÚdiffs                 rP   r}   zPeriodArray.to_timestampo  sÁ  € ð. 	5Ð4Ð4Ð4Ð4Ð4åÔ*¨3Ñ/Ô/ˆà�SŠjˆØð 	MØ�sŠ{ˆ{˜dœi¨3Ò.Ð.å" 1 cÑ*Ô*­Y°q¸$Ñ-?Ô-?Ñ?�Ø×(Ò(¨WÐ(Ñ5Ô5¸Ñ>Ð>å" 1 dÑ+Ô+�Ø˜tœyÑ(×6Ò6¸7Ð6ÑCÔCÀfÑLÐLàˆ<Øœ×:Ò:Ñ<Ô<ˆIÝ# I¨qÑ1Ô1ˆEØ”>ˆDØˆDˆDåÔ-¨dÑ3Ô3ˆDØÔ*ˆDà—;’;˜t¨�;Ñ-Ô-ˆåÔ1°(´-ÀÑFÔFˆØ*ˆmÔ*¨8Ñ4Ô4ˆàŒ9Œ>˜SÒ Ð õ Ô*¨4¬9Ñ5Ô5ˆEÝ�5‰zŒz˜QŠˆØ˜Q”x�Ø˜4œ:œ=Ò(Ð(Ø $¤	�C”I�IØ˜Q’Y�YØ $¤	¤�C”IàˆJà—>’> 'Ñ*Ô*Ð*rR   c                ó8   — t          j        || j        ¬¦  «        S )N)rÆ   rg   )r#   Ú_from_ordinalrg   )rM   r[   s     rP   Ú	_box_funczPeriodArray._box_func³  s   € ÝÔ#¨A°D´IÐ>Ñ>Ô>Ð>rR   ÚPeriodIndex)rË   Ú
other_namerì   c                óÔ  — t          j        |¦  «        }t          |t          ¦  «        r$t	          |d¦  «        rt          |¦  «        j        }t          j        |¦  «        }| j	        j
        }|j        }| j        }|dk    }|r|| j        j        z   dz
  }n|}t          ||||¦  «        }| j        rt"          || j        <   t          |¦  «        }	 t'          | ¦  «        ||	¬¦  «        S )a²  
        Convert the {klass} to the specified frequency `freq`.

        Equivalent to applying :meth:`pandas.Period.asfreq` with the given arguments
        to each :class:`~pandas.Period` in this {klass}.

        Parameters
        ----------
        freq : str
            A frequency.
        how : str {{'E', 'S'}}, default 'E'
            Whether the elements should be aligned to the end
            or start within pa period.

            * 'E', 'END', or 'FINISH' for end,
            * 'S', 'START', or 'BEGIN' for start.

            January 31st ('END') vs. January 1st ('START') for example.

        Returns
        -------
        {klass}
            The transformed {klass} with the new frequency.

        See Also
        --------
        {other}.asfreq: Convert each Period in a {other_name} to the given frequency.
        Period.asfreq : Convert a :class:`~pandas.Period` object to the given frequency.

        Examples
        --------
        >>> pidx = pd.period_range('2010-01-01', '2015-01-01', freq='Y')
        >>> pidx
        PeriodIndex(['2010', '2011', '2012', '2013', '2014', '2015'],
        dtype='period[Y-DEC]')

        >>> pidx.asfreq('M')
        PeriodIndex(['2010-12', '2011-12', '2012-12', '2013-12', '2014-12',
        '2015-12'], dtype='period[M]')

        >>> pidx.asfreq('M', how='S')
        PeriodIndex(['2010-01', '2011-01', '2012-01', '2013-01', '2014-01',
        '2015-01'], dtype='period[M]')
        rö   rì   rî   rˆ   )r¢   ró   rZ   r   Úhasattrr,   rõ   r#   r´   r€   rK   rö   rL   rJ   rû   r%   Ú_hasnar   rÙ   r�   )
rM   rg   rê   Úbase1Úbase2rL   r·   rÆ   r  rJ   s
             rP   r~   zPeriodArray.asfreq¶  sî   € õ\ Ô*¨3Ñ/Ô/ˆÝ�d�JÑ'Ô'ð 	.­G°DÐ:NÑ,OÔ,Oð 	.Ý˜tÑ$Ô$Ô-ˆDÝÔ)¨$Ñ/Ô/ˆà”Ô'ˆØÔ'ˆàŒyˆà�SŠjˆØð 	Ø˜TœZœ]Ñ*¨QÑ.ˆGˆGàˆGå$ W¨e°U¸CÑ@Ô@ˆàŒ;ð 	)Ý$(ˆH�T”[Ñ!å˜DÑ!Ô!ˆØ�t�D‰zŒz˜(¨%Ð0Ñ0Ô0Ð0rR   Úboxedc                ó"   — |rt           S dj        S )Nz'{}')rD   Úformat)rM   r  s     rP   Ú
_formatterzPeriodArray._formatterÿ  s   € Øð 	ÝˆJØŒ}ÐrR   r   )Úna_repÚdate_formatr  ústr | floatúnpt.NDArray[np.object_]c               óN   — t          j        | j        | j        j        ||¦  «        S )z3
        actually format my specific types
        )r¢   Úperiod_array_strftimerL   rJ   rK   )rM   r  r  Úkwargss       rP   Ú_format_native_typesz PeriodArray._format_native_types  s)   € õ Ô.ØŒI�t”zÔ-¨v°{ñ
ô 
ð 	
rR   Tc                ó  •— t          |¦  «        }|| j        k    r|s| S |                      ¦   «         S t          |t          ¦  «        r|                      |j        ¦  «        S t          j        |d¦  «        st          |t          ¦  «        r_t          |dd ¦  «        }t          j        |¦  «        }|                      ¦   «                              |¦  «                             |¦  «        S t!          ¦   «                              ||¬¦  «        S )NÚMr¯   ©r‚   )r*   r€   r‚   rZ   r,   r~   rg   r   Úis_np_dtyper+   Úgetattrr²   Údtype_to_unitr}   Útz_localizeÚas_unitÚsuperÚastype)rM   rJ   r‚   r¯   ÚunitÚ	__class__s        €rP   r$  zPeriodArray.astype  sð   ø€ õ ˜UÑ#Ô#ˆØ�D”KÒÐØð #Ø�à—y’y‘{”{Ð"Ý�e�[Ñ)Ô)ð 	+Ø—;’;˜uœzÑ*Ô*Ð*åŒ?˜5 #Ñ&Ô&ð 	E­*°U½OÑ*LÔ*Lð 	Eå˜  dÑ+Ô+ˆBÝÔ$ UÑ+Ô+ˆDØ×$Ò$Ñ&Ô&×2Ò2°2Ñ6Ô6×>Ò>¸tÑDÔDÐDå‰wŒw�~Š~˜e¨$ˆ~Ñ/Ô/Ð/rR   Úleftú$NumpyValueArrayLike | ExtensionArrayÚsideúLiteral['left', 'right']ÚsorterúNumpySorter | Noneúnpt.NDArray[np.intp] | np.intpc                ó¶   — |                       |¦  «                             d¦  «        }| j                             d¦  «        }|                     |||¬¦  «        S )NúM8[ns])r)  r+  )Ú_validate_setitem_valueÚviewr“   Úsearchsorted)rM   rÀ   r)  r+  ÚnpvalueÚm8arrs         rP   r2  zPeriodArray.searchsorted$  sW   € ð ×.Ò.¨uÑ5Ô5×:Ò:¸8ÑDÔDˆð ”×"Ò" 8Ñ,Ô,ˆØ×!Ò! '°¸VÐ!ÑDÔDÐDrR   )ÚlimitÚ
limit_arear‚   Úmethodr6   r5  ú
int | Noner6  ú#Literal['inside', 'outside'] | Nonec               ó¶   — |                       d¦  «        }|                     ||||¬¦  «        }|r(t          d|                      | j        ¦  «        ¦  «        S | S )Nr/  )r7  r5  r6  r‚   r:   )r1  Ú_pad_or_backfillr
   rJ   )rM   r7  r5  r6  r‚   r  rO   s          rP   r;  zPeriodArray._pad_or_backfill1  se   € ð �iŠi˜Ñ!Ô!ˆØ×%Ò%Ø °:ÀDð &ñ 
ô 
ˆð ð 	Ý˜ §¢¨D¬JÑ 7Ô 7Ñ8Ô8Ð8àˆKrR   c                óâ   •— |�H|                       d¦  «        }|                     ||||¬¦  «        }|                      | j        ¦  «        S t          ¦   «                              ||||¬¦  «        S )Nr/  )rÀ   r7  r5  r‚   )r1  ÚfillnarJ   r#  )rM   rÀ   r7  r5  r‚   r  rO   r&  s          €rP   r=  zPeriodArray.fillnaD  sk   ø€ ð Ðð —)’)˜HÑ%Ô%ˆCØ—Z’Z e°FÀ%Èd�ZÑSÔSˆFð —;’;˜tœzÑ*Ô*Ð*Ý‰wŒw�~Š~ E°&ÀÈDˆ~ÑQÔQÐQrR   únp.ndarray | intÚopúCallable[[Any, Any], Any]c                óì   — |t           j        t           j        fv sJ ‚|t           j        u r| }t          | j        t          j        |d¬¦  «        ¦  «        } t          | ¦  «        || j        ¬¦  «        S )zì
        Add or subtract array of integers.

        Parameters
        ----------
        other : np.ndarray[int64] or int
        op : {operator.add, operator.sub}

        Returns
        -------
        result : PeriodArray
        r›   rˆ   )	ÚoperatorÚaddÚsubr   rL   r”   r•   r�   rJ   )rM   rË   r?  Ú
res_valuess       rP   Ú_addsub_int_array_or_scalarz'PeriodArray._addsub_int_array_or_scalarT  so   € ð •h”l¥H¤LÐ1Ð1Ð1Ð1Ð1Ø•”ÐÐØ�FˆEÝ% d¤iµ´¸EÈÐ1NÑ1NÔ1NÑOÔOˆ
Ø�t�D‰zŒz˜*¨D¬JÐ7Ñ7Ô7Ð7rR   c                ó¨   — t          |t          ¦  «        rJ ‚|                      |d¬¦  «         |                      |j        t
          j        ¦  «        S )NT)rN   )rZ   r   rÎ   rF  r­   rB  rC  rÏ   s     rP   Ú_add_offsetzPeriodArray._add_offseti  sK   € Ý˜e¥TÑ*Ô*Ð*Ð*Ð*à×#Ò# E°Ð#Ñ5Ô5Ð5Ø×/Ò/°´½¼ÑFÔFÐFrR   c                ó.  •— t          | j        t          ¦  «        st          | |¦  «        ‚t	          |¦  «        r!t          ¦   «                              |¦  «        S t          j        t          |¦  «        j
        ¦  «        }|                      |¦  «        S )z”
        Parameters
        ----------
        other : timedelta, Tick, np.timedelta64

        Returns
        -------
        PeriodArray
        )rZ   rg   r   r’   r1   r#  Ú_add_timedeltalike_scalarr”   r•   r   Úasm8Ú_add_timedelta_arraylike)rM   rË   Útdr&  s      €rP   rJ  z%PeriodArray._add_timedeltalike_scalarp  s}   ø€ õ ˜$œ)¥TÑ*Ô*ð 	5å'¨¨eÑ4Ô4Ð4å�‰;Œ;ð 	<å‘7”7×4Ò4°UÑ;Ô;Ð;åŒZ�	 %Ñ(Ô(Ô-Ñ.Ô.ˆØ×,Ò,¨RÑ0Ô0Ð0rR   ú,TimedeltaArray | npt.NDArray[np.timedelta64]c                óê  — | j                              ¦   «         st          d| j         › �¦  «        ‚t          j         d| j         j        › d�¦  «        }	 t          t          j        |¦  «        |dd¬¦  «        }n"# t          $ r}t          d¦  «        |‚d}~ww xY wt          | j
        t          j        |                     d¦  «        ¦  «        ¦  «        } t          | ¦  «        || j         ¬	¦  «        S )
z›
        Parameters
        ----------
        other : TimedeltaArray or ndarray[timedelta64]

        Returns
        -------
        PeriodArray
        z2Cannot add or subtract timedelta64[ns] dtype from úm8[ú]F©rJ   r‚   Úround_okznCannot add/subtract timedelta-like from PeriodArray that is not an integer multiple of the PeriodArray's freq.Nr›   rˆ   )rJ   Ú_is_tick_liker‘   r”   Ú
_td64_unitr   r•   rŽ   r"   r   rL   r1  r�   )rM   rË   rJ   ÚdeltaÚerrrE  s         rP   rL  z$PeriodArray._add_timedelta_arraylike…  s  € ð Œz×'Ò'Ñ)Ô)ð 	åØQÀTÄZÐQÐQñô ð õ ”Ð7˜tœzÔ4Ð7Ð7Ð7Ñ8Ô8ˆð
	Ý'Ý”
˜5Ñ!Ô!¨°UÀUðñ ô ˆEˆEøõ ð 	ð 	ð 	õ (ðEñô ð ðøøøøð	øøøõ & d¤iµ´¸E¿JºJÀtÑ<LÔ<LÑ1MÔ1MÑNÔNˆ
Ø�t�D‰zŒz˜*¨D¬JÐ7Ñ7Ô7Ð7s   Á%A: Á:
BÂBÂBc                ó  — | j                              ¦   «         sJ ‚t          j         d| j         j        › d�¦  «        }t	          |t
          t          j        t          f¦  «        r't          j        t          |¦  «        j
        ¦  «        }nt          j        |¦  «        }	 t          ||dd¬¦  «        }n## t          $ r}t          | |¦  «        |‚d}~ww xY w|                     d¦  «        }t          j        |¦  «        S )a<  
        Arithmetic operations with timedelta-like scalars or array `other`
        are only valid if `other` is an integer multiple of `self.freq`.
        If the operation is valid, find that integer multiple.  Otherwise,
        raise because the operation is invalid.

        Parameters
        ----------
        other : timedelta, np.timedelta64, Tick,
                ndarray[timedelta64], TimedeltaArray, TimedeltaIndex

        Returns
        -------
        multiple : int or ndarray[int64]

        Raises
        ------
        IncompatibleFrequency
        rP  rQ  FrR  Nr›   )rJ   rT  r”   rU  rZ   r   Útimedelta64r   r•   r   rK  r   rŽ   r’   r1  r   Úitem_from_zerodim)rM   rË   rJ   rM  rV  rW  s         rP   Ú _check_timedeltalike_freq_compatz,PeriodArray._check_timedeltalike_freq_compatª  sö   € ð( Œz×'Ò'Ñ)Ô)Ð)Ð)Ð)å”Ð7˜tœzÔ4Ð7Ð7Ð7Ñ8Ô8ˆå�e�i­¬½Ð>Ñ?Ô?ð 	#Ý”�I eÑ,Ô,Ô1Ñ2Ô2ˆBˆBå”˜EÑ"Ô"ˆBð	>Ý'¨°%¸eÈeÐTÑTÔTˆEˆEøÝð 	>ð 	>ð 	>Ý'¨¨eÑ4Ô4¸#Ð=øøøøð	>øøøð —
’
˜4Ñ Ô ˆÝÔ$ UÑ+Ô+Ð+s   Â!B5 Â5
CÂ?CÃC)r]   r^   )NNF)rJ   r�   r‚   rƒ   r]   r„   )r˜   r™   rJ   r,   r]   r:   )rJ   r�   r‚   rƒ   r]   r:   rI   )r]   r:   )rº   r»   r]   r:   )rÀ   rÁ   r]   rÂ   )rÀ   rD   r]   r#   )rË   rÌ   r]   r„   )r]   r,   )r]   r   )r]   rD   )NN)rJ   rÕ   r‚   rÖ   r]   r×   )r]   rè   )Nr¶   )rê   rD   r]   r<   )r]   rÁ   r½   )Nrì   )rê   rD   r]   r:   )F)r  rƒ   )r  r  r]   r  )T)r‚   rƒ   )r'  N)rÀ   r(  r)  r*  r+  r,  r]   r-  )
r7  r6   r5  r8  r6  r9  r‚   rƒ   r]   r:   )NNNT)r5  r8  r‚   rƒ   r]   r:   )rË   r>  r?  r@  r]   r:   )rË   r   )rË   rN  r]   r:   )LrS   Ú
__module__Ú__qualname__rT   Ú__array_priority__Ú_typr”   r‡   r   Ú_internal_fill_valuer#   Ú_recognized_scalarsÚ_is_recognized_dtypeÚ_infer_matchesrU   ra   rb   Ú__annotations__rd   rh   rz   r{   r   r—   ÚclassmethodrŸ   r¨   r«   r°   r¹   r¿   rÈ   rÊ   rÅ   r&   rJ   rg   rÔ   rÛ   rç   rV   ri   rj   rk   rl   rm   rn   ro   rq   rs   rr   rp   rt   ru   rv   rw   rx   ry   rc   r}   r  r'   Ú_shared_doc_kwargsr~   r  r  r$  r2  r;  r=  rF  rH  rJ  rL  r[  Ú__classcell__)r&  s   @rP   rB   rB   y   sG  ø€ € € € € € ð:ð :ðz ÐØ€DØ#˜2œ8 D™>œ>ÐØ!˜)Ððð Ðð !€Nàðð ð ñ „Xðð €JÐÐÐÑØ*Ð+€IÐ+Ð+Ð+Ñ+Ø?Ð?Ð?€KÐ?Ð?Ð?Ñ?ðð ð €Jð ð ð ñ ð& $.°Ñ#;¸iÑ#GÐÐGÐGÐGÑGØ'MÐ'MÐ'MÐÐMÐMÐMÑMàÐÐÑð KPð'4ð '4ð '4ð '4ð '4ðT ð(ð (ð (ñ „[ð(ð ð
 #Øð*ð *ð *ð *ð *ñ „[ð*ð6 à/3À%ðCð Cð Cð Cð Cñ „[ðCð
 ð&ð &ð &ð &ñ „[ð&ð( ðð ñ „[ðð ð4ð 4ð 4ñ „[ð4ðTð Tð Tð Tð-ð -ð -ð -ð0ð 0ð 0ð 0ð ðð ð ñ „^ðð ðð ð ñ „Xðð ðCð Cð Cñ „XðCð AEð	2ð 	2ð 	2ð 	2ð 	2ðOð Oð Oð Oð< ˆ?Øð	ñô €Dð ˆOØð	ñô €Eð ˆ/Øð	ñô €Cð ˆ?Øð	ñô €Dð ˆ_Øð		ñô €Fð ˆ_Øð		ñô €Fð !�Øð	ñô €Jð €DØ!�/Øð	ñô €Kð €IØ€GØ-˜oØð	ñô ð €I�ð$ ˆoØð	ñô €Gð ˆO˜GÑ$Ô$€EØ#�OØð	ñô €Mð:  €Kàð
5ð 
5ð 
5ñ „Xð
5ð@+ð @+ð @+ð @+ð @+ðH?ð ?ð ?ð ?ð 	€SÐMÐMÐÐM ]¸}ÐMÐMÐMÐMðC1ð C1ð C1ð C1ñ NÔMðC1ðPð ð ð ð ð (-¸$ð
ð 
ð 
ð 
ð 
ð 
ð0ð 0ð 0ð 0ð 0ð 0ð 0ð. *0Ø%)ð	Eð Eð Eð Eð Eð" !Ø:>Øðð ð ð ð ð ð( OSðRð Rð Rð Rð Rð Rð Rð 8ð 8ð 8ð 8ð*Gð Gð Gð Gð1ð 1ð 1ð 1ð 1ð*#8ð #8ð #8ð #8ðJ#,ð #,ð #,ð #,ð #,ð #,ð #,rR   r]   r"   c                óü  — t          |t          j        t          f¦  «        s|€d}n{t          |t          ¦  «        rt          |j        |j        ¦  «        }nKt          |t          t          t          f¦  «        r|j        }n!t          t          |¦  «        ¦  «        j        }t          | j        j        | j        j        ¦  «        }t          j        t#          | ¦  «        j        ||¬¦  «        }t'          |¦  «        S )a>  
    Helper function to render a consistent error message when raising
    IncompatibleFrequency.

    Parameters
    ----------
    left : PeriodArray
    right : None, DateOffset, Period, ndarray, or timedelta-like

    Returns
    -------
    IncompatibleFrequency
        Exception to be raised by the caller.
    N)r�   Úown_freqÚ
other_freq)rZ   r”   rœ   r0   r   r   r­   rC   r.   rB   r#   rÔ   r    r   rg   r!   r  r�   rS   r"   )r'  Úrightrj  ri  Úmsgs        rP   r’   r’   Ð  sØ   € õ  �%�"œ*Õ&7Ð8Ñ9Ô9ð =¸U¸]Øˆ
ˆ
Ý	�E�:Ñ	&Ô	&ð =Ý+¨E¬G°U´ZÑ@Ô@ˆ
ˆ
Ý	�E�N­K½Ð@Ñ	AÔ	Að =Ø”]ˆ
ˆ
å"¥9¨UÑ#3Ô#3Ñ4Ô4Ô<ˆ
å% d¤i¤k°4´9´>ÑBÔB€HÝ
Ô
Ý�‰JŒJÔ¨(¸zðñ ô €Cõ ! Ñ%Ô%Ð%rR   Fr®   ú,Sequence[Period | str | None] | AnyArrayLikerg   ústr | Tick | BaseOffset | Noner‚   rƒ   c                óŽ  — t          | dd¦  «        }t          j        |d¦  «        rt                               | |¦  «        S t          |t          ¦  «        r5t          | ¦  «        }|�"||j        k    r|S |                     |¦  «        S |S t          | t          j
        t          t          t          f¦  «        st          | ¦  «        } t          j        | ¦  «        }|rt          |¦  «        }nd}|j        j        dk    r"t#          |¦  «        dk    rt%          d¦  «        ‚|j        j        dv rG|                     t          j        d¬	¦  «        }t+          j        ||¦  «        }t          ||¬
¦  «        S t/          |¦  «        } |€t+          j        | ¦  «        }t          |¦  «        }t                               | |¬
¦  «        S )aÚ  
    Construct a new PeriodArray from a sequence of Period scalars.

    Parameters
    ----------
    data : Sequence of Period objects
        A sequence of Period objects. These are required to all have
        the same ``freq.`` Missing values can be indicated by ``None``
        or ``pandas.NaT``.
    freq : str, Tick, or Offset
        The frequency of every element of the array. This can be specified
        to avoid inferring the `freq` from `data`.
    copy : bool, default False
        Whether to ensure a copy of the data is made.

    Returns
    -------
    PeriodArray

    See Also
    --------
    PeriodArray
    pandas.PeriodIndex

    Examples
    --------
    >>> period_array([pd.Period('2017', freq='Y'),
    ...               pd.Period('2018', freq='Y')])
    <PeriodArray>
    ['2017', '2018']
    Length: 2, dtype: period[Y-DEC]

    >>> period_array([pd.Period('2017', freq='Y'),
    ...               pd.Period('2018', freq='Y'),
    ...               pd.NaT])
    <PeriodArray>
    ['2017', '2018', 'NaT']
    Length: 3, dtype: period[Y-DEC]

    Integers that look like years are handled

    >>> period_array([2000, 2001, 2002], freq='D')
    <PeriodArray>
    ['2000-01-01', '2001-01-01', '2002-01-01']
    Length: 3, dtype: period[D]

    Datetime-like strings may also be passed

    >>> period_array(['2000-Q1', '2000-Q2', '2000-Q3', '2000-Q4'], freq='Q')
    <PeriodArray>
    ['2000Q1', '2000Q2', '2000Q3', '2000Q4']
    Length: 4, dtype: period[Q-DEC]
    rJ   Nr  rQ   r   z9PeriodIndex does not allow floating point in constructionÚiuFr  rˆ   )r  r   r  rB   r°   rZ   r,   rg   r~   r”   rœ   rÚ   Útupler/   r•   rJ   Úkindrú   r‘   r$  r‡   r¢   Úfrom_ordinalsr)   r£   r¨   )	r®   rg   r‚   Ú
data_dtypeÚoutÚarrdatarJ   Úarrr§   s	            rP   Úperiod_arrayrx  ô  sª  € õt ˜˜w¨Ñ-Ô-€Jå
„�z 3Ñ'Ô'ð 8Ý×+Ò+¨D°$Ñ7Ô7Ð7Ý�*�kÑ*Ô*ð Ý˜$ÑÔˆØÐØ�z”Ò&Ð&Ø�
Ø—:’:˜dÑ#Ô#Ð#Øˆ
õ �d�RœZ­­uµiÐ@ÑAÔAð Ý�D‰zŒzˆåŒj˜ÑÔ€Gð ð Ý˜DÑ!Ô!ˆˆàˆà„}Ô˜SÒ Ð ¥S¨¡\¤\°AÒ%5Ð%5ÝÐSÑTÔTÐTà„}Ô˜TÐ!Ð!Ø�nŠn�RœX¨EˆnÑ2Ô2ˆõ Ô*¨3°Ñ5Ô5ˆÝ˜8¨5Ð1Ñ1Ô1Ð1å˜Ñ!Ô!€DØ€|ÝÔ% dÑ+Ô+ˆÝ˜ÑÔ€EÝ×%Ò% d°%Ð%Ñ8Ô8Ð8rR   c                ó   — d S rI   r½   rÒ   s     rP   r�   r�   W  ó   € à€CrR   útimedelta | str | Noner   c                ó   — d S rI   r½   rÒ   s     rP   r�   r�   \  rz  rR   ú1BaseOffsetT | BaseOffset | timedelta | str | Nonec                óÞ   — |�t          |d¬¦  «        }| �Wt          | ¦  «        } t          | t          ¦  «        st	          d¦  «        ‚|€| j        }n|| j        k    rt          d¦  «        ‚|S )at  
    If both a dtype and a freq are available, ensure they match.  If only
    dtype is available, extract the implied freq.

    Parameters
    ----------
    dtype : dtype
    freq : DateOffset or None

    Returns
    -------
    freq : DateOffset

    Raises
    ------
    ValueError : non-period dtype
    IncompatibleFrequency : mismatch between dtype and freq
    NT©Ú	is_periodzdtype must be PeriodDtypez&specified freq and dtype are different)r   r*   rZ   r,   rŽ   rg   r"   rÒ   s     rP   r�   r�   a  s�   € ð* ÐÝ˜¨Ð.Ñ.Ô.ˆàÐÝ˜UÑ#Ô#ˆÝ˜%¥Ñ-Ô-ð 	:ÝÐ8Ñ9Ô9Ð9Øˆ<Ø”:ˆDˆDØ�U”ZÒÐÝ'Ð(PÑQÔQÐQð €KrR   ú(tuple[npt.NDArray[np.int64], BaseOffset]c                ó   — t          | j        t          j        ¦  «        r| j        j        dk    rt	          d| j        › �¦  «        ‚|€Mt          | t
          ¦  «        r| j        | j        }} nLt          | t          ¦  «        r| j        | j	        j        }} n#t          | t
          t          f¦  «        r| j        } t          | j        ¦  «        }t          j        |¦  «        }|j        }t          |                      d¦  «        |||¬¦  «        |fS )aî  
    Convert an datetime-like array to values Period ordinals.

    Parameters
    ----------
    data : Union[Series[datetime64[ns]], DatetimeIndex, ndarray[datetime64ns]]
    freq : Optional[Union[str, Tick]]
        Must match the `freq` on the `data` if `data` is a DatetimeIndex
        or Series.
    tz : Optional[tzinfo]

    Returns
    -------
    ordinals : ndarray[int64]
    freq : Tick
        The frequency extracted from the Series or DatetimeIndex if that's
        used.

    r  zWrong dtype: Nr›   )Úreso)rZ   rJ   r”   rr  rŽ   r-   r�   rg   r/   Údtr   r#   r´   rö   Úc_dt64arr_to_periodarrr1  )r®   rg   r¯   rƒ  rN   s        rP   r   r   †  sô   € õ, �d”j¥"¤(Ñ+Ô+ð 7¨t¬z¬À#Ò/EÐ/EÝÐ5¨¬Ð5Ð5Ñ6Ô6Ð6à€|Ý�d�HÑ%Ô%ð 	4Øœ t¤y�$ˆDˆDÝ˜�iÑ(Ô(ð 	4Øœ t¤w¤|�$ˆDøå	�D�8¥YÐ/Ñ	0Ô	0ð ØŒ|ˆå˜tœzÑ*Ô*€DÝÔ% dÑ+Ô+€DØÔ"€DÝ! $§)¢)¨D¡/¤/°4¸À$ÐGÑGÔGÈÐMÐMrR   rî   ÚmultÚintc                óH  — t          j        | ||¦  «        dk    rt          d¦  «        ‚|�t          |d¬¦  «        }|j        }| �t          | |¦  «        } |�t          ||¦  «        }t          | t
          ¦  «        }t          |t
          ¦  «        }|r!|r| j        |j        k    rt          d¦  «        ‚| t          u s	|t          u rt          d¦  «        ‚|€*|r| j        }n|r|j        }nt          d¦  «        ‚|j        }|�m||z  }| €6t          j
        |j        |z
  |z   |j        dz   |t          j        ¬	¦  «        }n_t          j
        | j        | j        |z   |t          j        ¬	¦  «        }n/t          j
        | j        |j        dz   |t          j        ¬	¦  «        }||fS )
Né   zOOf the three parameters: start, end, and periods, exactly two must be specifiedTr  z!start and end must have same freqzstart and end must not be NaTz#Could not infer freq from start/endrî   rˆ   )ÚcomÚcount_not_nonerŽ   r   r­   r#   rZ   rg   r   r”   ÚarangerÆ   r‡   )r¶   r·   r¦   rg   r†  Úis_start_perÚ
is_end_perr®   s           rP   rµ   rµ   ®  sË  € Ý
Ô˜%  gÑ.Ô.°!Ò3Ð3Ýð,ñ
ô 
ð 	
ð
 ÐÝ˜¨Ð.Ñ.Ô.ˆØŒvˆàÐÝ�u˜dÑ#Ô#ˆØ
€Ý�S˜$ÑÔˆå˜e¥VÑ,Ô,€LÝ˜C¥Ñ(Ô(€Jàð >˜
ð > u¤z°S´XÒ'=Ð'=ÝÐ<Ñ=Ô=Ð=Ø•€|€|�s�c�z�zÝÐ8Ñ9Ô9Ð9à€|Øð 	DØ”:ˆDˆDØð 	DØ”8ˆDˆDåÐBÑCÔCÐCØŒvˆàÐØ˜D‘.ˆØˆ=Ý”9Ø”˜gÑ%¨Ñ,¨c¬k¸A©o¸tÍ2Ì8ðñ ô ˆDˆDõ ”9Ø”˜uœ}¨wÑ6¸ÅBÄHðñ ô ˆDˆDõ Œy˜œ¨¬°a©¸ÅRÄXÐNÑNÔNˆà�ˆ:ÐrR   útuple[np.ndarray, BaseOffset]c                ó6  — |€d}|€d}|€d}|€d}g }|�é|€#t          dd¬¦  «        }t          j        j        }	nIt          |d¬¦  «        }t	          j        |¦  «        }	|	t          j        j        k    rt          d¦  «        ‚|j        }
t          | |¦  «        \  } }t          | |¦  «        D ]O\  }}t          j        |||
¦  «        \  }}t	          j        ||dddddd|	¦	  «	        }|                     |¦  «         ŒPn{t          |d¬¦  «        }t	          j        |¦  «        }	t          | |||||¦  «        }t          |Ž D ]8\  }}}}}}|                     t	          j        ||||||dd|	¦	  «	        ¦  «         Œ9t          j        |t          j        ¬¦  «        |fS )Nr   rî   ÚQTr  zbase must equal FR_QTRrˆ   )r   r   ÚFR_QTRrÀ   r¢   Úfreq_to_dtype_codeÚAssertionErrorrÔ   Ú_make_field_arraysÚzipr   Úquarter_to_myearÚperiod_ordinalÚappendr”   r–   r‡   )ri   rj   rv   rk   rl   rm   rn   rg   r§   rN   rÔ   ÚyÚqÚcalendar_yearÚcalendar_monthÚvalÚarraysÚmthÚdÚhÚmnÚss                         rP   r¾   r¾   ß  sØ  € ð €|ØˆØ€~ØˆØ€~ØˆØ
€{Øˆà€HàÐØˆ<Ý˜S¨DÐ1Ñ1Ô1ˆDÝÔ#Ô)ˆDˆDå˜T¨TÐ2Ñ2Ô2ˆDÝÔ/°Ñ5Ô5ˆDØ•yÔ'Ô-Ò-Ð-Ý$Ð%=Ñ>Ô>Ð>à”,ˆÝ*¨4°Ñ9Ô9‰ˆˆgÝ˜˜gÑ&Ô&ð 	!ð 	!‰DˆAˆqÝ,3Ô,DÀQÈÈ7Ñ,SÔ,SÑ)ˆM˜>ÝÔ*Ø˜~¨q°!°Q¸¸1¸aÀñô ˆCð �OŠO˜CÑ Ô Ð Ð ð	!õ ˜¨Ð.Ñ.Ô.ˆÝÔ+¨DÑ1Ô1ˆÝ# D¨%°°d¸FÀFÑKÔKˆÝ#&¨ <ð 	Wð 	WÑˆAˆs�A�q˜"˜aØ�OŠO�IÔ4°Q¸¸QÀÀ2ÀqÈ!ÈQÐPTÑUÔUÑVÔVÐVÐVåŒ8�H¥B¤HÐ-Ñ-Ô-¨tÐ3Ð3rR   úlist[np.ndarray]c                 óæ   ‡— d Š| D ]^}t          |t          t          j        t          f¦  «        r5‰�"t          |¦  «        ‰k    rt          d¦  «        ‚‰€t          |¦  «        ŠŒ_ˆfd„| D ¦   «         S )NzMismatched Period array lengthsc                ó°   •— g | ]R}t          |t          j        t          t          f¦  «        rt          j        |¦  «        nt          j        |‰¦  «        ‘ŒSS r½   )rZ   r”   rœ   rÚ   r/   r•   Úrepeat)Ú.0r[   Úlengths     €rP   ú
<listcomp>z&_make_field_arrays.<locals>.<listcomp>  s^   ø€ ð ð ð ð õ �a�"œ*¥d­IÐ6Ñ7Ô7ð	"�Œ
�1‰ŒˆåŒY�q˜&Ñ!Ô!ðð ð rR   )rZ   rÚ   r”   rœ   r/   rú   rŽ   )rº   r[   rª  s     @rP   r•  r•    s•   ø€ Ø€FØð  ð  ˆÝ�a�$¥¤
­IÐ6Ñ7Ô7ð 	 ØÐ!¥c¨!¡f¤f°Ò&6Ð&6Ý Ð!BÑCÔCÐCØˆ~Ý˜Q™œ�øð
ð ð ð ð ð	ñ ô ð rR   rI   )rC   rD   rE   rF   )r]   r"   )NF)r®   rm  rg   rn  r‚   rƒ   r]   rB   )rg   r?   r]   r?   )rg   r{  r]   r   )rg   r}  r]   r?   )r]   r�  )rî   )r†  r‡  )NNNNNNNN)r]   r�  )r]   r¥  )hÚ
__future__r   Údatetimer   rB  Útypingr   r   r   r   r	   r
   r   rŠ   Únumpyr”   Úpandas._libsr   rø   r   Úpandas._libs.arraysr   Úpandas._libs.tslibsr   r   r   r   r   r   r   r…  r   r   r   r   r¢   r   Úpandas._libs.tslibs.dtypesr   r   r   Úpandas._libs.tslibs.fieldsr   Úpandas._libs.tslibs.offsetsr   r    Úpandas._libs.tslibs.periodr!   r"   r#   r$   r%   Úpandas.util._decoratorsr&   r'   Úpandas.util._exceptionsr(   Úpandas.core.dtypes.commonr)   r*   Úpandas.core.dtypes.dtypesr+   r,   Úpandas.core.dtypes.genericr-   r.   r/   r0   Úpandas.core.dtypes.missingr1   rò   r2   r²   Úpandas.core.commonÚcoreÚcommonrŠ  Úcollections.abcr3   Úpandas._typingr4   r5   r6   r7   r8   r9   r:   r;   r<   r=   Úpandas.core.arrays.baser>   r?   rf  rV   ÚDatelikeOpsÚPeriodMixinrB   r’   rx  r�   rµ   r¾   r•  r½   rR   rP   ú<module>rÅ     s{  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €€€à Ð Ð Ð ðð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
 6Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ,Ð +Ð +Ð +Ð +Ð +à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  àð 7Ø(Ð(Ð(Ð(Ð(Ð(ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ðð ð ð ð ð ð ð ð 7Ð6Ð6Ð6Ð6Ð6ð ˆg�m¨:Ð6Ñ6Ô6€ð ˆ]ðÐ ð
ð ð ð ð ðT,ð T,ð T,ð T,ð T,�#”/ 9Ô#8ñ T,ô T,ð T,ðn&ð &ð &ð &ðL ,0Øð`9ð `9ð `9ð `9ð `9ðF 
ðð ð ñ 
„ðð 
ðð ð ñ 
„ðð"ð "ð "ð "ðL ð%Nð %Nð %Nð %Nð %NðP.ð .ð .ð .ð .ðd 
Ø
ØØØ	ØØØ	ð.4ð .4ð .4ð .4ð .4ðbð ð ð ð ð rR   