Ë
    ¤e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d+d„«       Zded,d „«       Zd	 	 	 	 d-d!„Zd	 d&	 d.d"„Zd/d0d#„Ze	 	 	 	 	 	 	 	 d1	 d2d$„Zfd3d%„Zgy)4é    )Ú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ÚPeriodArrayc                ó@   ‡ — ˆ fd„}‰ |_         ||_        t        |«      S )Nc                ób   •— | j                   j                  }t        ‰| j                  |«      }|S ©N)ÚdtypeÚ_dtype_coder$   Úasi8)ÚselfÚbaseÚresultÚnames      €úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pandas/core/arrays/period.pyÚfz_field_accessor.<locals>.fm   s)   ø€ Ø�z‰z×%Ñ%ˆÜ% d¨D¯I©I°tÓ<ˆØˆó    )Ú__name__Ú__doc__Úproperty)rL   Ú	docstringrN   s   `  rM   Ú_field_accessorrT   l   s"   ø€ ôð
 €A„JØ€A„IÜ�A‹;ÐrO   c                  ó  ‡ — e Zd ZU dZdZdZ ej                  e«      Z	e
fZd„ ZdZedRd„«       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<   	 dS	 	 	 	 	 dTd„Ze	 	 	 	 	 	 dUd„«       Zedddœ	 	 	 	 	 dVd„«       Zedddœ	 	 	 	 	 dVd„«       ZedWdXd„«       Zed„ «       ZedYd„«       Z	 	 	 	 dZd„Zd[d„Z d\d „Z!e"d]d!„«       Z#ed^d"„«       Z$ed_d#„«       Z%	 d`	 	 	 	 	 dad$„Z&dWd%„Z' e(d&d'«      Z) e(d(d)«      Z* e(d*d+«      Z+ e(d,d-«      Z, e(d.d/«      Z- e(d0d1«      Z. e(d2d3«      Z/e/Z0 e(d4d5«      Z1e1Z2e2Z3 e(d6d7«      xZ4Z5 e(d8d9«      Z6 e(d:«      Z7 e(d;d<«      Z8e8Z9edbd=„«       Z:dcddd>„Z;ded?„Z< e=dfi e>¤d@d@dAœ¤ŽdgdhdB„«       Z?didjdC„Z@dDddEœ	 	 	 dkdF„ZAdldmˆ fdH„ZB	 	 dn	 	 	 	 	 	 	 dodI„ZCdddGdJœ	 	 	 	 	 	 	 	 	 dpdK„ZD	 dq	 	 	 	 	 drˆ fdL„ZE	 	 	 	 	 	 dsdM„ZFdtdN„ZGˆ fdO„ZH	 	 	 	 dudP„ZIdQ„ ZJˆ xZKS )vrB   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 rE   )Ú
isinstancer,   )Úxs    rM   ú<lambda>zPeriodArray.<lambda>»   s   € ¤ZØ	Œ;ó&€ rO   )r   c                ó   — t         S rE   )r#   ©rI   s    rM   Ú_scalar_typezPeriodArray._scalar_typeÀ   s   € äˆrO   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,   Ú_dtypeNFc                óú  — |�;t        j                  dt        t        «       ¬«       t	        ||«      }t        |«      }|�*t        |«      }t        |t
        «      st        d|› d�«      ‚t        |t        «      r,|j                  }t        |t        | «      «      s't        d«      ‚t        |t        «      r|j                  }t        |t        | «      «      r?|�%||j                  k7  rt        ||j                   «      ‚|j"                  |j                  }}|st%        j&                  |d¬«      }nt%        j(                  |d|¬«      }|€t        d	«      ‚t+        t
        |«      }t-        j.                  | ||«       y )
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©rF   ©rF   Úcopyz-dtype is not specified and cannot be inferred)ÚwarningsÚwarnÚFutureWarningr(   Úvalidate_dtype_freqr,   r*   rX   Ú
ValueErrorr/   Ú_valuesÚtypeÚ	TypeErrorr.   rF   Úraise_on_incompatiblerc   Ú_ndarrayÚnpÚasarrayÚarrayr
   r   Ú__init__)rI   ÚvaluesrF   rc   r‚   s        rM   r�   zPeriodArray.__init__ã   sA  € ð Ðä�M‰MðPäÜ+Ó-õ	ô ' u¨dÓ3ˆDÜ Ó%ˆEàÐÜ  Ó'ˆEÜ˜e¤[Ô1Ü  >°%°Ð8HÐ!IÓJÐJä�fœiÔ(Ø—^‘^ˆFÜ˜f¤d¨4£jÔ1ÜÐ 1Ó2Ð2ä˜¤Ô/Ø—^‘^ˆFä�fœd 4›jÔ)ØÐ  U¨f¯l©lÒ%:Ü+¨F°E·J±JÓ?Ð?Ø"ŸO™O¨V¯\©\�EˆFáÜ—Z‘Z ¨gÔ6‰Fä—X‘X˜f¨G¸$Ô?ˆFØˆ=ÜÐLÓMÐMÜ”[ %Ó(ˆÜ×Ñ˜t V¨UÕ3rO   c                óz   — d}t        |t        j                  «      r|j                  dk(  sJ |«       ‚ | ||¬«      S )Nz Should be numpy array of type i8Úi8r€   )rX   r�   ÚndarrayrF   )Úclsr‘   rF   Úassertion_msgs       rM   Ú_simple_newzPeriodArray._simple_new  s:   € ð ;ˆÜ˜&¤"§*¡*Ô-°&·,±,À$Ò2FÐUÈÓUÐFÙ�6 Ô'Ð'rO   r�   c               óˆ  — |�t        |«      }|rt        |t        «      r|j                  }nd }t        || «      r*t	        |j
                  |«       |r|j                  «       }|S t        j                  |t        ¬«      }|xs t        j                  |«      }t        j                  ||«      }t        |«      } | ||¬«      S )Nr€   )r*   rX   r,   rc   r†   rF   r‚   r�   rŽ   ÚobjectÚ	libperiodÚextract_freqÚextract_ordinals)r•   ÚscalarsrF   r‚   rc   ÚperiodsÚordinalss          rM   Ú_from_sequencezPeriodArray._from_sequence  s§   € ð ÐÜ  Ó'ˆEÙ”Z ¤{Ô3Ø—:‘:‰DàˆDä�g˜sÔ#Ü §¡¨tÔ4ÙØ!Ÿ,™,›.�ØˆNä—*‘*˜W¬FÔ3ˆàÒ6”y×-Ñ-¨gÓ6ˆÜ×-Ñ-¨g°tÓ<ˆÜ˜DÓ!ˆÙ�8 5Ô)Ð)rO   c               ó*   — | j                  |||¬«      S )Nr�   )r    )r•   ÚstringsrF   r‚   s       rM   Ú_from_sequence_of_stringsz%PeriodArray._from_sequence_of_strings4  s   € ð ×!Ñ! '°¸TÐ!ÓBÐBrO   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€   )rX   r   r   ÚnrL   r   r,   )r•   Údatarc   ÚtzrF   s        rM   Ú_from_datetime64zPeriodArray._from_datetime64:  sK   € ô �dœJÔ'Ü)¨$¯&©&°$·)±)Ó<ˆDÜ)¨$°°bÓ9‰
ˆˆdÜ˜DÓ!ˆÙ�4˜uÔ%Ð%rO   c                ó¢   — t        j                  |«      }|�t        j                  |«      }|€|�t	        ||||«      \  }}||fS t        d«      ‚)Nz/Not enough parameters to construct Period range)ÚdtlÚvalidate_periodsr#   Ú_maybe_convert_freqÚ_get_ordinal_ranger‡   )r•   ÚstartÚendrž   rc   Úsubarrs         rM   Ú_generate_rangezPeriodArray._generate_rangeO  s`   € ä×&Ñ& wÓ/ˆàÐÜ×-Ñ-¨dÓ3ˆDàÐ  Ü-¨e°S¸'À4ÓH‰LˆF�Dð �tˆ|Ðô ÐNÓOÐOrO   c               ó^   — t        dd|i|¤Ž\  }}t        |«      }| j                  ||¬«      S )Nrc   r€   © )Ú_range_from_fieldsr,   r—   )r•   Úfieldsrc   r°   rF   s        rM   Ú_from_fieldszPeriodArray._from_fields]  s5   € ä)Ñ>¨tÐ>°vÑ>‰ˆ�Ü˜DÓ!ˆØ�‰˜v¨UˆÓ3Ð3rO   c                óú   — |t         u rt        j                  |j                  «      S t	        || j
                  «      r0| j                  |«       t        j                  |j                  «      S t        d|› d�«      ‚)Nz!'value' should be a Period. Got 'z
' instead.)	r   r�   r   Ú_valuerX   r]   Ú_check_compatible_withÚordinalr‡   ©rI   Úvalues     rM   Ú_unbox_scalarzPeriodArray._unbox_scalari  sd   € ð ”C‰<ä—8‘8˜EŸL™LÓ)Ð)Ü˜˜t×0Ñ0Ô1Ø×'Ñ'¨Ô.Ü—8‘8˜EŸM™MÓ*Ð*äÐ@ÀÀÀzÐRÓSÐSrO   c                ó0   — t        || j                  ¬«      S )N)rc   )r#   rc   r»   s     rM   Ú_scalar_from_stringzPeriodArray._scalar_from_stringv  s   € Ü�e $§)¡)Ô,Ð,rO   c                óL   — |t         u ry | j                  |j                  «       y rE   )r   Ú_require_matching_freqrc   ©rI   Úothers     rM   r¹   z"PeriodArray._check_compatible_with|  s    € Ø”C‰<Øð 	×#Ñ# E§J¡JÕ/rO   c                ó   — | j                   S rE   )r|   r\   s    rM   rF   zPeriodArray.dtype†  s   € à�{‰{ÐrO   c                ó.   — | j                   j                  S )zC
        Return the frequency object for this PeriodArray.
        ©rF   rc   r\   s    rM   rc   zPeriodArray.freq‹  s   € ð
 �z‰z�‰ÐrO   c                ój   — t        | j                  j                  | j                  j                  «      S rE   )r   rc   r¥   rL   r\   s    rM   ÚfreqstrzPeriodArray.freqstr’  s   € ä% d§i¡i§k¡k°4·9±9·>±>ÓBÐBrO   c                ó˜   — |dk(  r| j                   S |t        k(  r| j                   S t        j                  t        | «      t        ¬«      S )Nr“   r€   )rH   ÚboolÚ_isnanr�   r�   Úlistr™   )rI   rF   r‚   s      rM   Ú	__array__zPeriodArray.__array__–  s?   € ð �DŠ=Ø—9‘9ÐØ”dŠ]Ø—K‘K�<Ðô �x‰xœ˜T›
¬&Ô1Ð1rO   c                ó  — ddl }ddlm} |�¡|j                  j	                  |«      r,|j                  | j                  | j                  «       |¬«      S t        ||«      r?| j                  |j                  k7  r5t        d| j                  › d|j                  › d�«      ‚t        d|› d	�«      ‚ || j                  «      }|j                  | j                  | j                  «       d
¬«      }|j                  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   rX   rÈ   rc   rŠ   r>   Úfrom_storage)rI   r‰   rÒ   rÏ   Úperiod_typeÚstorage_arrays         rM   Ú__arrow_array__zPeriodArray.__arrow_array__¡  sê   € ó 	åLàÐØ�}‰}×'Ñ'¨Ô-Ø—}‘} T§]¡]¸¿¹»È4�}ÓPÐPÜ˜D /Ô2à—<‘< 4§9¡9Ò,Ü#ð#Ø#'§<¡< .°°T·Y±Y°K¸qðBóð ô
  Ø?À¸vÀVÐLóð ñ & d§l¡lÓ3ˆØŸ™ d§m¡m¸$¿)¹)»+ÈG˜ÓTˆØ×%Ñ%×2Ñ2°;ÀÓNÐNrO   re   z×
        The year of the period.

        Examples
        --------
        >>> idx = pd.PeriodIndex(["2023", "2024", "2025"], freq="Y")
        >>> idx.year
        Index([2023, 2024, 2025], dtype='int64')
        rf   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')
        rg   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')
        rh   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')
        ri   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')
        rj   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')
        rm   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')
        ro   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')
        rq   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')
        rr   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')
        rs   rt   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')
        c                óR   — 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Ž   re   r\   s    rM   r_   zPeriodArray.is_leap_yearb  s   € ô œbŸj™j¨¯©Ó3Ó4Ð4rO   c                ó´  — ddl m} t        j                  |«      }|dk(  }|rp|dk(  s| j                  dk(  r.t        dd«      t        dd«      z
  }| j                  d¬	«      |z   S t        dd«      }| | j                  z   j                  d¬	«      |z
  S |€5| j                  j                  «       }t        |d«      }|j                  }|}n!t        j                  |«      }|j                  }| j                  ||¬	«      }	t        j                  |	j                   |«      }
 |j"                  |
«      }| j                  j$                  dk(  r€t'        j(                  | j                   «      }t+        |«      dk(  rQ|d   }|| j,                  j.                  k(  r| j                  |_        |S |dk(  r| j                  j2                  |_        |S |j5                  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®   )ÚhowÚinfer)Úpandas.core.arraysr<   rš   Úvalidate_end_aliasrc   r   ry   r|   Ú_get_to_timestamp_baser   Ú_freqstrr#   r¬   Ú_period_dtype_coderz   Úperiodarr_to_dt64arrrH   r    rL   ÚlibalgosÚunique_deltasÚlenrF   Ú_nÚ_freqrJ   Ú
_with_freq)rI   rc   rá   r<   r¯   ÚadjustÚ	freq_coderF   rJ   Únew_parrÚnew_dataÚdtaÚdiffsÚdiffs                 rM   ry   zPeriodArray.to_timestampo  s¢  € õ. 	5ä×*Ñ*¨3Ó/ˆà�S‰jˆÙØ�sŠ{˜dŸi™i¨3Ò.ä" 1 cÓ*¬Y°q¸$Ó-?Ñ?�Ø×(Ñ(¨WÐ(Ó5¸Ñ>Ð>ä" 1 dÓ+�Ø˜tŸy™yÑ(×6Ñ6¸7Ð6ÓCÀfÑLÐLàˆ<ØŸ™×:Ñ:Ó<ˆIÜ# I¨qÓ1ˆEØ—>‘>ˆDØ‰Dä×-Ñ-¨dÓ3ˆDØ×*Ñ*ˆDà—;‘;˜t¨�;Ó-ˆä×1Ñ1°(·-±-ÀÓFˆØ*ˆm×*Ñ*¨8Ó4ˆà�9‰9�>‰>˜SÒ ô ×*Ñ*¨4¯9©9Ó5ˆEÜ�5‹z˜QŠØ˜Q‘x�Ø˜4Ÿ:™:Ÿ=™=Ò(Ø $§	¡	�C”Ið ˆJð ˜Q’YØ $§	¡	§¡�C”IàˆJà—>‘> 'Ó*Ð*rO   c                óD   — t        j                  || j                  ¬«      S )N)rº   rc   )r#   Ú_from_ordinalrc   )rI   rY   s     rM   Ú	_box_funczPeriodArray._box_func³  s   € Ü×#Ñ#¨A°D·I±IÔ>Ð>rO   ÚPeriodIndex)rÃ   Ú
other_namec                óö  — 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ä   rX   r   Úhasattrr,   ræ   r#   r¬   r|   rG   rç   rH   rF   rì   r%   Ú_hasnar   rË   r‰   )
rI   rc   rá   Úbase1Úbase2rH   r¯   rº   rò   rF   s
             rM   rz   zPeriodArray.asfreq¶  sÖ   € ô\ ×*Ñ*¨3Ó/ˆÜ�dœJÔ'¬G°DÐ:NÔ,OÜ˜tÓ$×-Ñ-ˆDÜ×)Ñ)¨$Ó/ˆà—‘×'Ñ'ˆØ×'Ñ'ˆà�y‰yˆà�S‰jˆÙØ˜TŸZ™ZŸ]™]Ñ*¨QÑ.‰GàˆGä$ W¨e°U¸CÓ@ˆà�;Š;Ü$(ˆH�T—[‘[Ñ!ä˜DÓ!ˆØŒt�D‹z˜(¨%Ô0Ð0rO   c                ó*   — |rt         S dj                  S )Nz'{}')ÚstrÚformat)rI   Úboxeds     rM   Ú
_formatterzPeriodArray._formatterÿ  s   € ÙÜˆJØ�}‰}ÐrO   r   )Úna_repÚdate_formatc               ón   — t        j                  | j                  | j                  j                  ||«      S )z3
        actually format my specific types
        )rš   Úperiod_array_strftimerH   rF   rG   )rI   r  r  Úkwargss       rM   Ú_format_native_typesz PeriodArray._format_native_types  s.   € ô ×.Ñ.Ø�I‰I�t—z‘z×-Ñ-¨v°{ó
ð 	
rO   Tc                óÄ  •— t        |«      }|| j                  k(  r|s| S | j                  «       S t        |t        «      r| j                  |j                  «      S t        j                  |d«      st        |t        «      rPt        |dd «      }t        j                  |«      }| j                  «       j                  |«      j                  |«      S t         ‰| �E  ||¬«      S )NÚMr§   ©r‚   )r*   r|   r‚   rX   r,   rz   rc   r   Úis_np_dtyper+   Úgetattrrª   Údtype_to_unitry   Útz_localizeÚas_unitÚsuperÚastype)rI   rF   r‚   r§   ÚunitÚ	__class__s        €rM   r  zPeriodArray.astype  s¹   ø€ ô ˜UÓ#ˆØ�D—K‘KÒÙØ�à—y‘y“{Ð"Ü�eœ[Ô)Ø—;‘;˜uŸz™zÓ*Ð*ä�?‰?˜5 #Ô&¬*°U¼OÔ*Lä˜  dÓ+ˆBÜ×$Ñ$ UÓ+ˆDØ×$Ñ$Ó&×2Ñ2°2Ó6×>Ñ>¸tÓDÐDä‰w‰~˜e¨$ˆ~Ó/Ð/rO   c                ó    — | j                  |«      j                  d«      }| j                  j                  d«      }|j                  |||¬«      S )NúM8[ns])ÚsideÚsorter)Ú_validate_setitem_valueÚviewrŒ   Úsearchsorted)rI   r¼   r  r  ÚnpvalueÚm8arrs         rM   r  zPeriodArray.searchsorted$  sM   € ð ×.Ñ.¨uÓ5×:Ñ:¸8ÓDˆð —‘×"Ñ" 8Ó,ˆØ×!Ñ! '°¸VÐ!ÓDÐDrO   )ÚlimitÚ
limit_arear‚   c               ó    — | j                  d«      }|j                  ||||¬«      }|r%t        d|j                  | j                  «      «      S | S )Nr  )Úmethodr   r!  r‚   r:   )r  Ú_pad_or_backfillr
   rF   )rI   r#  r   r!  r‚   ró   rK   s          rM   r$  zPeriodArray._pad_or_backfill1  sT   € ð �i‰i˜Ó!ˆØ×%Ñ%Ø °:ÀDð &ó 
ˆñ Ü˜ §¡¨D¯J©JÓ 7Ó8Ð8àˆKrO   c                ó°   •— |�A| j                  d«      }|j                  ||||¬«      }|j                  | j                  «      S t        ‰| �  ||||¬«      S )Nr  )r¼   r#  r   r‚   )r  ÚfillnarF   r  )rI   r¼   r#  r   r‚   ró   rK   r  s          €rM   r&  zPeriodArray.fillnaD  s]   ø€ ð Ðð —)‘)˜HÓ%ˆCØ—Z‘Z e°FÀ%Èd�ZÓSˆFð —;‘;˜tŸz™zÓ*Ð*Ü‰w‰~ E°&ÀÈDˆ~ÓQÐQrO   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   rH   r�   rŽ   r‰   rF   )rI   rÃ   ÚopÚ
res_valuess       rM   Ú_addsub_int_array_or_scalarz'PeriodArray._addsub_int_array_or_scalarT  sd   € ð ”h—l‘l¤H§L¡LÐ1Ñ1Ð1Ð1Ø”—‘ÑØ�FˆEÜ% d§i¡i´·±¸EÈÔ1NÓOˆ
ØŒt�D‹z˜*¨D¯J©JÔ7Ð7rO   c                ó    — t        |t        «      rJ ‚| j                  |d¬«       | j                  |j                  t
        j                  «      S )NT)rJ   )rX   r   rÁ   r-  r¥   r(  r)  rÂ   s     rM   Ú_add_offsetzPeriodArray._add_offseti  s@   € Ü˜e¤TÔ*Ð*Ð*à×#Ñ# E°Ð#Ô5Ø×/Ñ/°·±¼¿¹ÓFÐFrO   c                óö   •— t        | j                  t        «      st        | |«      ‚t	        |«      rt
        ‰| �  |«      S t        j                  t        |«      j                  «      }| j                  |«      S )z”
        Parameters
        ----------
        other : timedelta, Tick, np.timedelta64

        Returns
        -------
        PeriodArray
        )rX   rc   r   r‹   r1   r  Ú_add_timedeltalike_scalarr�   rŽ   r   Úasm8Ú_add_timedelta_arraylike)rI   rÃ   Útdr  s      €rM   r1  z%PeriodArray._add_timedeltalike_scalarp  sa   ø€ ô ˜$Ÿ)™)¤TÔ*ä'¨¨eÓ4Ð4ä�Œ;ä‘7Ñ4°UÓ;Ð;ä�Z‰Zœ	 %Ó(×-Ñ-Ó.ˆØ×,Ñ,¨RÓ0Ð0rO   c                óê  — | j                   j                  «       st        d| j                   › �«      ‚t        j                   d| j                   j                  › d�«      }	 t        t        j                  |«      |dd¬«      }t        | j                  t        j                  |j                  d«      «      «      } t        | «      || j                   ¬	«      S # t        $ r}t        d«      |‚d}~ww xY w)
z›
        Parameters
        ----------
        other : TimedeltaArray or ndarray[timedelta64]

        Returns
        -------
        PeriodArray
        z2Cannot add or subtract timedelta64[ns] dtype from úm8[ú]F©rF   r‚   Úround_okznCannot add/subtract timedelta-like from PeriodArray that is not an integer multiple of the PeriodArray's freq.Nr“   r€   )rF   Ú_is_tick_likerŠ   r�   Ú
_td64_unitr   rŽ   r‡   r"   r   rH   r  r‰   )rI   rÃ   rF   ÚdeltaÚerrr,  s         rM   r3  z$PeriodArray._add_timedelta_arraylike…  sÛ   € ð �z‰z×'Ñ'Ô)äØDÀTÇZÁZÀLÐQóð ô —‘˜3˜tŸz™z×4Ñ4Ð5°QÐ7Ó8ˆð
	Ü'Ü—
‘
˜5Ó!¨°UÀUôˆEô & d§i¡i´·±¸E¿J¹JÀtÓ<LÓ1MÓNˆ
ØŒt�D‹z˜*¨D¯J©JÔ7Ð7øô ò 	ô (ðEóð ðûð	ús   Á!"C Ã	C2Ã!C-Ã-C2c                ó  — | j                   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¬«      }|j                  d«      }t        j                   |«      S # t        $ r}t        | |«      |‚d}~ww xY w)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
        r6  r7  Fr8  Nr“   )rF   r:  r�   r;  rX   r   Útimedelta64r   rŽ   r   r2  r   r‡   r‹   r  r   Úitem_from_zerodim)rI   rÃ   rF   r4  r<  r=  s         rM   Ú _check_timedeltalike_freq_compatz,PeriodArray._check_timedeltalike_freq_compatª  sÏ   € ð( �z‰z×'Ñ'Ô)Ð)Ð)ä—‘˜3˜tŸz™z×4Ñ4Ð5°QÐ7Ó8ˆä�eœi¬¯©¼Ð>Ô?Ü—‘œI eÓ,×1Ñ1Ó2‰Bä—‘˜EÓ"ˆBð	>Ü'¨°%¸eÈeÔTˆEð —
‘
˜4Ó ˆÜ×$Ñ$ UÓ+Ð+øô	 ò 	>Ü'¨¨eÓ4¸#Ð=ûð	>ús   Â.C# Ã#	C>Ã,C9Ã9C>)Úreturnztype[Period])NNF)rF   úDtype | Noner‚   rÊ   rB  ÚNone)r‘   znpt.NDArray[np.int64]rF   r,   rB  r:   )rF   rC  r‚   rÊ   rB  r:   rE   )rB  r:   )rµ   ÚdictrB  r:   )r¼   úPeriod | NaTTyperB  znp.int64)r¼   r  rB  r#   )rÃ   zPeriod | NaTType | PeriodArrayrB  rD  )rB  r,   )rB  r   )rB  r  )NN)rF   zNpDtype | Noner‚   zbool | NonerB  z
np.ndarray)rB  znpt.NDArray[np.bool_])Nr®   )rá   r  rB  r<   )rB  rF  r³   )NrÜ   )rá   r  rB  r:   )F)r  rÊ   )r  zstr | floatrB  znpt.NDArray[np.object_])T)r‚   rÊ   )ÚleftN)r¼   z$NumpyValueArrayLike | ExtensionArrayr  zLiteral['left', 'right']r  zNumpySorter | NonerB  znpt.NDArray[np.intp] | np.intp)
r#  r6   r   ú
int | Noner!  z#Literal['inside', 'outside'] | Noner‚   rÊ   rB  r:   )NNNT)r   rH  r‚   rÊ   rB  r:   )rÃ   znp.ndarray | intr+  zCallable[[Any, Any], Any]rB  r:   )rÃ   r   )rÃ   z,TimedeltaArray | npt.NDArray[np.timedelta64]rB  r:   )LrP   Ú
__module__Ú__qualname__rQ   Ú__array_priority__Ú_typr�   r   r   Ú_internal_fill_valuer#   Ú_recognized_scalarsÚ_is_recognized_dtypeÚ_infer_matchesrR   r]   r^   Ú__annotations__r`   rd   rv   rw   r{   r�   Úclassmethodr—   r    r£   r¨   r±   r¶   r½   r¿   r¹   r&   rF   rc   rÈ   rÍ   rÙ   rT   re   rf   rg   rh   ri   rj   rk   rm   ro   rn   rl   rp   rq   rr   rs   rt   ru   r_   ry   rø   r'   Ú_shared_doc_kwargsrz   r  r
  r  r  r$  r&  r-  r/  r1  r3  rA  Ú__classcell__)r  s   @rM   rB   rB   y   s‰  ø… ñ:ðz ÐØ€DØ#˜2Ÿ8™8 D›>ÐØ!˜)ÐñÐð !€Nàòó ðð €J�	ÓØ*Ð+€IˆyÓ+Ú?€K�Ó?ò€J�	ó ð& $.°Ñ#;¸iÑ#GÐ�yÓGÚ'MÐ˜9ÓMàÓð KPð'4Ø)ð'4ØCGð'4à	ó'4ðT ð(à%ð(ð ð(ð 
ò	(ó ð(ð ð
 #Øñ*ð ð	*ð
 ð*ð 
ò*ó ð*ð6 à/3À%ñCØ ,ðCØ;?ðCà	òCó ðCð
 ó&ó ð&ð( ñó ðð ò4ó ð4ðTàðTð 
óTó-ó0ð òó ðð òó ðð òCó ðCð AEð	2Ø#ð	2Ø2=ð	2à	ó	2óOñ< Øð	ó€Dñ Øð	ó€Eñ Øð	ó€Cñ Øð	ó€Dñ Øð		ó€Fñ Øð		ó€Fñ !Øð	ó€Jð €DÙ!Øð	ó€Kð €IØ€GÙ-Øð	óð €I�ñ$ Øð	ó€Gñ ˜GÓ$€EÙ#Øð	ó€Mð:  €Kàò
5ó ð
5ô@+óH?ñ 	ÑMÐÐM ]¸}ÓMóC1ó NðC1ôPð (-¸$ñ
Ø$ð
à	 ó
ö0ð. *0Ø%)ð	Eà3ðEð 'ðEð #ð	Eð
 
(óEð" !Ø:>Øñð ðð ð	ð
 8ðð ðð 
óð( OSðRØ.8ðRØGKðRà	õRð 8Ø%ð8Ø+Dð8à	ó8ó*Gô1ð*#8ØAð#8à	ó#8öJ#,rO   c                ó  — t        |t        j                  t        f«      s|€d}nwt        |t        «      r!t        |j                  |j                  «      }nFt        |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)rX   r�   r”   r0   r   r   r¥   rL   r.   rB   r#   rÈ   r    r   rc   r!   r  r‰   rP   r"   )rG  ÚrightrW  rV  Úmsgs        rM   r‹   r‹   Ð  s¸   € ô  �%œ"Ÿ*™*Ô&7Ð8Ô9¸U¸]Ø‰
Ü	�Eœ:Ô	&Ü+¨E¯G©G°U·Z±ZÓ@‰
Ü	�EœN¬K¼Ð@Ô	AØ—]‘]‰
ä"¤9¨UÓ#3Ó4×<Ñ<ˆ
ä% d§i¡i§k¡k°4·9±9·>±>ÓB€HÜ
×
Ñ
Ü�‹J×Ñ¨(¸zô€Cô ! Ó%Ð%rO   c                óN  — t        | dd«      }t        j                  |d«      rt        j	                  | |«      S t        |t        «      r1t        | «      }|�"||j                  k(  r|S |j                  |«      S |S t        | t        j                  t        t        t        f«      st        | «      } t        j                  | «      }|rt        |«      }nd}|j                  j                   dk(  rt#        |«      dkD  rt%        d«      ‚|j                  j                   dv rD|j'                  t        j(                  d¬	«      }t+        j,                  ||«      }t        ||¬
«      S t/        |«      } |€t+        j0                  | «      }t        |«      }t        j3                  | |¬
«      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]
    rF   Nr  rN   r   z9PeriodIndex does not allow floating point in constructionÚiuFr  r€   )r  r   r  rB   r¨   rX   r,   rc   rz   r�   r”   rÌ   Útupler/   rŽ   rF   Úkindrë   rŠ   r  r   rš   Úfrom_ordinalsr)   r›   r    )	r¦   rc   r‚   Ú
data_dtypeÚoutÚarrdatarF   ÚarrrŸ   s	            rM   Úperiod_arrayrc  ô  sh  € ôt ˜˜w¨Ó-€Jä
‡��z 3Ô'Ü×+Ñ+¨D°$Ó7Ð7Ü�*œkÔ*Ü˜$ÓˆØÐØ�z—‘Ò&Ø�
Ø—:‘:˜dÓ#Ð#Øˆ
ô �dœRŸZ™Z¬¬u´iÐ@ÔAÜ�D‹zˆä�j‰j˜Ó€Gñ Ü˜DÓ!‰àˆà‡}�}×Ñ˜SÒ ¤S¨£\°AÒ%5ÜÐSÓTÐTà‡}�}×Ñ˜TÑ!Ø�n‰nœRŸX™X¨EˆnÓ2ˆô ×*Ñ*¨3°Ó5ˆÜ˜8¨5Ô1Ð1ä˜Ó!€DØ€|Ü×%Ñ% dÓ+ˆÜ˜Ó€EÜ×%Ñ% d°%Ð%Ó8Ð8rO   c                 ó   — y rE   r³   rÆ   s     rM   r†   r†   W  ó   € àrO   c                 ó   — y rE   r³   rÆ   s     rM   r†   r†   \  re  rO   c                óÈ   — |�t        |d¬«      }| �Pt        | «      } t        | t        «      st	        d«      ‚|€| j
                  }|S || j
                  k7  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
    T©Ú	is_periodzdtype must be PeriodDtypez&specified freq and dtype are different)r   r*   rX   r,   r‡   rc   r"   rÆ   s     rM   r†   r†   a  sr   € ð* ÐÜ˜¨Ô.ˆàÐÜ˜UÓ#ˆÜ˜%¤Ô-ÜÐ8Ó9Ð9Øˆ<Ø—:‘:ˆDð
 €Kð	 �U—Z‘ZÒÜ'Ð(PÓQÐQð €KrO   c                óX  — t        | j                  t        j                  «      r| j                  j                  dk7  rt	        d| j                  › �«      ‚|€\t        | t
        «      r| j                  | j                  }} nUt        | t        «      rE| j                  | j                  j                  }} n"t        | t
        t        f«      r| j                  } t        | j                  «      }t        j                  |«      }|j                  }t        | j                  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: r“   )Úreso)rX   rF   r�   r]  r‡   r-   rˆ   rc   r/   Údtr   r#   r¬   rç   Úc_dt64arr_to_periodarrr  )r¦   rc   r§   rk  rJ   s        rM   r   r   †  sÙ   € ô, �d—j‘j¤"§(¡(Ô+¨t¯z©z¯©À#Ò/EÜ˜=¨¯©¨Ð5Ó6Ð6à€|Ü�dœHÔ%ØŸ™ t§y¡y�$‰DÜ˜œiÔ(ØŸ™ t§w¡w§|¡|�$‰Dä	�Dœ8¤YÐ/Ô	0Ø�|‰|ˆä˜tŸz™zÓ*€DÜ×%Ñ% dÓ+€DØ×"Ñ"€DÜ! $§)¡)¨D£/°4¸À$ÔGÈÐMÐMrO   c                ó˜  — t        j                  | ||«      dk7  rt        d«      ‚|�t        |d¬«      }|j                  }| �t        | |«      } |�t        ||«      }t        | t
        «      }t        |t
        «      }|r&|r$| j                  |j                  k7  rt        d«      ‚| t        u s|t        u rt        d«      ‚|€5|r| j                  }n|r|j                  }nt        d«      ‚|j                  }|�‘||z  }| €Ht        j                  |j                  |z
  |z   |j                  dz   |t        j                  ¬	«      }||fS t        j                  | j                  | j                  |z   |t        j                  ¬	«      }||fS t        j                  | j                  |j                  dz   |t        j                  ¬	«      }||fS )
Né   zOOf the three parameters: start, end, and periods, exactly two must be specifiedTrh  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#   rX   rc   r   r�   Úarangerº   r   )r®   r¯   rž   rc   ÚmultÚis_start_perÚ
is_end_perr¦   s           rM   r­   r­   ®  s¥  € Ü
×Ñ˜%  gÓ.°!Ò3Üð,ó
ð 	
ð
 ÐÜ˜¨Ô.ˆØ�v‰vˆàÐÜ�u˜dÓ#ˆØ
€Ü�S˜$Óˆä˜e¤VÓ,€LÜ˜C¤Ó(€Já™
 u§z¡z°S·X±XÒ'=ÜÐ<Ó=Ð=Ø”�|�sœc‘zÜÐ8Ó9Ð9à€|ÙØ—:‘:‰DÙØ—8‘8‰DäÐBÓCÐCØ�v‰vˆàÐØ˜D‘.ˆØˆ=Ü—9‘9Ø—‘˜gÑ%¨Ñ,¨c¯k©k¸A©o¸tÌ2Ï8É8ôˆDð �ˆ:Ðô —9‘9Ø—‘˜uŸ}™}¨wÑ6¸ÄBÇHÁHôˆDð �ˆ:Ðô �y‰y˜Ÿ™¨¯©°a©¸ÄRÇXÁXÔNˆà�ˆ:ÐrO   c                ó4  — |€d}|€d}|€d}|€d}g }|�ì|€(t        dd¬«      }t        j                  j                  }	nJt        |d¬«      }t	        j
                  |«      }	|	t        j                  j                  k7  rt        d«      ‚|j                  }
t        | |«      \  } }t        | |«      D ]M  \  }}t        j                  |||
«      \  }}t	        j                  ||dddddd|	«	      }|j                  |«       ŒO nrt        |d¬«      }t	        j
                  |«      }	t        | |||||«      }t        |Ž D ]5  \  }}}}}}|j                  t	        j                  ||||||dd|	«	      «       Œ7 t        j                  |t        j                   ¬«      |fS )Nr   rÞ   ÚQTrh  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   )re   rf   rr   rg   rh   ri   rj   rc   rŸ   rJ   rÈ   ÚyÚqÚcalendar_yearÚcalendar_monthÚvalÚarraysÚmthÚdÚhÚmnÚss                         rM   r´   r´   ß  sª  € ð €|ØˆØ€~ØˆØ€~ØˆØ
€{Øˆà€HàÐØˆ<Ü˜S¨DÔ1ˆDÜ×#Ñ#×)Ñ)‰Dä˜T¨TÔ2ˆDÜ×/Ñ/°Ó5ˆDØ”y×'Ñ'×-Ñ-Ò-Ü$Ð%=Ó>Ð>à—,‘,ˆÜ*¨4°Ó9‰ˆˆgÜ˜˜gÓ&ò 	!‰DˆAˆqÜ,3×,DÑ,DÀQÈÈ7Ó,SÑ)ˆM˜>Ü×*Ñ*Ø˜~¨q°!°Q¸¸1¸aÀóˆCð �O‰O˜CÕ ñ	!ô ˜¨Ô.ˆÜ×+Ñ+¨DÓ1ˆÜ# D¨%°°d¸FÀFÓKˆÜ#&¨ <ò 	WÑˆAˆs�A�q˜"˜aØ�O‰OœI×4Ñ4°Q¸¸QÀÀ2ÀqÈ!ÈQÐPTÓUÕVð	Wô �8‰8�H¤B§H¡HÔ-¨tÐ3Ð3rO   c            	     óx  — d }| D ]Q  }t        |t        t        j                  t        f«      sŒ)|�t        |«      |k7  rt        d«      ‚|�ŒGt        |«      }ŒS | D �cg c]R  }t        |t        j                  t        t        f«      rt        j                  |«      nt        j                  ||«      ‘ŒT c}S c c}w )NzMismatched Period array lengths)	rX   rÌ   r�   r”   r/   rë   r‡   rŽ   Úrepeat)rµ   ÚlengthrY   s      rM   r{  r{    s¬   € Ø€FØò  ˆÜ�aœ$¤§
¡
¬IÐ6Õ7ØÐ!¤c¨!£f°Ò&6Ü Ð!BÓCÐCØ‰~Ü˜Q›‘ð ð ö	ð ô �aœ"Ÿ*™*¤d¬IÐ6Ô7ô 	�
‰
�1Œä�Y‰Y�q˜&Ó!ñ	"òð ùò s   ÁAB7rE   )rL   r  rS   z
str | None)rB  r"   )NF)r¦   z,Sequence[Period | str | None] | AnyArrayLikerc   zstr | Tick | BaseOffset | Noner‚   rÊ   rB  rB   )rc   r?   rB  r?   )rc   ztimedelta | str | NonerB  r   )rc   z1BaseOffsetT | BaseOffset | timedelta | str | NonerB  r?   )rB  z(tuple[npt.NDArray[np.int64], BaseOffset])rÞ   )rs  Úint)NNNNNNNN)rB  ztuple[np.ndarray, BaseOffset])rB  zlist[np.ndarray])hÚ
__future__r   Údatetimer   r(  Ú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   rm  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Úcommonrp  Úcollections.abcr3   Úpandas._typingr4   r5   r6   r7   r8   r9   r:   r;   r<   r=   Úpandas.core.arrays.baser>   r?   rS  rT   ÚDatelikeOpsÚPeriodMixinrB   r‹   rc  r†   r­   r´   r{  r³   rO   rM   ú<module>r¨     s®  ðÝ "å Û ÷÷ ñ ó ã ÷õ .÷÷ ÷ ó ÷ñ õ
 6÷÷õ ÷õ 5÷÷÷ó õ ,å 2ß  Ð  áÝ(÷	÷ 	ó 	÷õ 7ñ �m¨:Ô6€ð ˆ]ðÐ ô
ôT,�#—/‘/ 9×#8Ñ#8ô T,ón&ðL ,0Øð`9Ø
6ð`9à
(ð`9ð ð`9ð ó	`9ðF 
òó 
ðð 
òó 
ðð"ØBð"àó"ðL ð%Nà-ó%NôP.ðd 
Ø
ØØØ	ØØØ	ð.4ð #ó.4ôbrO   