Ë
    ¤eh"J  ã                  ó:  — d dl mZ d dlmZmZ d dlmZ d dlZd dlZd dl	m
Z d dlmZmZmZmZmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z"m#Z#m$Z$m%Z% d dl&m'c m(Z) d dl*m'c m+c m,Z- d dl*m.Z. d dl/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5 erd dl6m7Z7 d dl8m9Z9m:Z:m;Z;m<Z<  e=e-j|                  «      Z>e>j                  ddi«       ddiZ@d„ ZA e5g d¢e"j„                  z   e"d¬«       e5dge"«       G d„ de0«      «       «       ZC	 	 	 	 	 d!	 	 	 	 	 d"d „ZDy)#é    )Úannotations)ÚdatetimeÚ	timedelta)ÚTYPE_CHECKINGN)Úindex)Ú
BaseOffsetÚNaTÚPeriodÚ
ResolutionÚTick)ÚOFFSET_TO_PERIOD_FREQSTR)Úcache_readonlyÚdoc)Úfind_stack_level)Ú
is_integer)ÚPeriodDtype)Ú	ABCSeries)Úis_valid_na_for_dtype)ÚPeriodArrayÚperiod_arrayÚraise_on_incompatibleÚvalidate_dtype_freq)Úmaybe_extract_name)ÚDatetimeIndexOpsMixin)ÚDatetimeIndexÚIndex)Úinherit_names)ÚHashable)ÚDtypeÚDtypeObjÚSelfÚnptÚtarget_klasszPeriodIndex or list of PeriodsÚklassr   c                óÎ   — |j                  d«      }|j                  dk(  r=|j                  dd «      }t        |«      }t        ||¬«      } | j                  |fi |¤ŽS  | |fi |¤ŽS )NÚdataÚint64Úfreq©Údtype)Úpopr*   r   r   Ú_simple_new)ÚclsÚdÚvaluesr(   r*   s        úX/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pandas/core/indexes/period.pyÚ_new_PeriodIndexr1   D   sg   € à�U‰U�6‹]€FØ‡|�|�wÒØ�u‰u�V˜TÓ"ˆÜ˜DÓ!ˆÜ˜V¨5Ô1ˆØˆs�‰˜vÑ+¨Ñ+Ð+á�6Ñ˜QÑÐó    )ÚstrftimeÚ
start_timeÚend_timeT)ÚwrapÚis_leap_yearc            
      ó  ‡ — e Zd ZU dZdZded<   ded<   ded<   eZd	Ze	d&d
„«       Z
ed'd„«       Z eej                  fdddœe¤Žd(d)d„«       Z eej                   «      d*d+d„«       Ze	 eej"                  j$                  «      d,d„«       «       Ze	 eej&                  j$                  «      d,d„«       «       Ze	 eej(                  j$                  «      d,d„«       «       Z	 	 	 	 	 	 d-	 	 	 	 	 	 	 d.d„Zedddddddddœ	 d/d„«       Zeddœd/d„«       Ze	d0d„«       Zd1d„Zd2d„Zd3ˆ fd„Ze	d4d„«       Ze	d5d„«       Zˆ fd„Zd „ Z d6d!„Z!d7d"„Z" ee#jH                  «      d8ˆ fd#„«       Z$d9d$„Z% ee#jL                  «      d:d;d%„«       Z&ˆ xZ'S )<ÚPeriodIndexaí  
    Immutable ndarray holding ordinal values indicating regular periods in time.

    Index keys are boxed to Period objects which carries the metadata (eg,
    frequency information).

    Parameters
    ----------
    data : array-like (1d int np.ndarray or PeriodArray), optional
        Optional period-like data to construct index with.
    copy : bool
        Make a copy of input ndarray.
    freq : str or period object, optional
        One of pandas period strings or corresponding objects.
    year : int, array, or Series, default None

        .. deprecated:: 2.2.0
           Use PeriodIndex.from_fields instead.
    month : int, array, or Series, default None

        .. deprecated:: 2.2.0
           Use PeriodIndex.from_fields instead.
    quarter : int, array, or Series, default None

        .. deprecated:: 2.2.0
           Use PeriodIndex.from_fields instead.
    day : int, array, or Series, default None

        .. deprecated:: 2.2.0
           Use PeriodIndex.from_fields instead.
    hour : int, array, or Series, default None

        .. deprecated:: 2.2.0
           Use PeriodIndex.from_fields instead.
    minute : int, array, or Series, default None

        .. deprecated:: 2.2.0
           Use PeriodIndex.from_fields instead.
    second : int, array, or Series, default None

        .. deprecated:: 2.2.0
           Use PeriodIndex.from_fields instead.
    dtype : str or PeriodDtype, default None

    Attributes
    ----------
    day
    dayofweek
    day_of_week
    dayofyear
    day_of_year
    days_in_month
    daysinmonth
    end_time
    freq
    freqstr
    hour
    is_leap_year
    minute
    month
    quarter
    qyear
    second
    start_time
    week
    weekday
    weekofyear
    year

    Methods
    -------
    asfreq
    strftime
    to_timestamp
    from_fields
    from_ordinals

    See Also
    --------
    Index : The base pandas Index type.
    Period : Represents a period of time.
    DatetimeIndex : Index with datetime64 data.
    TimedeltaIndex : Index of timedelta64 data.
    period_range : Create a fixed-frequency PeriodIndex.

    Examples
    --------
    >>> idx = pd.PeriodIndex.from_fields(year=[2000, 2002], quarter=[1, 3])
    >>> idx
    PeriodIndex(['2000Q1', '2002Q3'], dtype='period[Q-DEC]')
    Úperiodindexr   Ú_datar   r(   r   r*   Tc                ó"   — t         j                  S ©N)ÚlibindexÚPeriodEngine©Úselfs    r0   Ú_engine_typezPeriodIndex._engine_type¼   s   € ä×$Ñ$Ð$r2   c                ó.   — | j                   j                  S r=   )r*   Ú_resolution_objr@   s    r0   rD   zPeriodIndex._resolution_objÀ   s   € ð �z‰z×)Ñ)Ð)r2   zpandas.arrays.PeriodArray)ÚotherÚ
other_nameNc                ó†   — | j                   j                  ||«      }t        | «      j                  || j                  ¬«      S ©N©Úname)r;   ÚasfreqÚtyper,   rJ   ©rA   r(   ÚhowÚarrs       r0   rK   zPeriodIndex.asfreqÉ   s8   € ð �j‰j×Ñ  cÓ*ˆÜ�D‹z×%Ñ% c°·	±	Ð%Ó:Ð:r2   c                ó|   — | j                   j                  ||«      }t        j                  || j                  ¬«      S rH   )r;   Úto_timestampr   r,   rJ   rM   s       r0   rQ   zPeriodIndex.to_timestampÓ   s/   € à�j‰j×%Ñ% d¨CÓ0ˆÜ×(Ñ(¨°4·9±9Ô=Ð=r2   c                óX   — t        | j                  j                  | j                  ¬«      S rH   )r   r;   ÚhourrJ   r@   s    r0   rS   zPeriodIndex.hourØ   s   € ô �T—Z‘Z—_‘_¨4¯9©9Ô5Ð5r2   c                óX   — t        | j                  j                  | j                  ¬«      S rH   )r   r;   ÚminuterJ   r@   s    r0   rU   zPeriodIndex.minuteÝ   ó   € ô �T—Z‘Z×&Ñ&¨T¯Y©YÔ7Ð7r2   c                óX   — t        | j                  j                  | j                  ¬«      S rH   )r   r;   ÚsecondrJ   r@   s    r0   rX   zPeriodIndex.secondâ   rV   r2   c                óÎ  — h d£}d }	|s"t        |t        t        f«      r|j                  }	t	        |«      j                  |«      s.t        t        t	        |«      |z
  «      «      }
t        d|
› �«      ‚t        |«      r$t        j                  dt        t        «       ¬«       |�$t        j                  dt        t        «       ¬«       t        ||| «      }|€8|€6|s| j                  d «        | j                   di |¤d|i¤Žj"                  }d}n²|r|�t%        d«      ‚t%        d	«      ‚t'        ||«      }|r,t        || «      r |j(                  |k7  r|j+                  |«      }|€@|�>t-        j.                  |t,        j0                  ¬
«      }t3        |«      }t5        ||¬
«      }n|�|�t%        d«      ‚t7        ||¬«      }|r|j9                  «       }| j;                  |||	¬«      S )N>   ÚdayrS   ÚyearÚmonthrU   rX   Úquarterz-__new__() got an unexpected keyword argument zXConstructing PeriodIndex from fields is deprecated. Use PeriodIndex.from_fields instead.)Ú
stacklevelz‚The 'ordinal' keyword in PeriodIndex is deprecated and will be removed in a future version. Use PeriodIndex.from_ordinals instead.r(   Fz Cannot pass both data and fieldsz#Cannot pass both ordinal and fieldsr)   z!Cannot pass both data and ordinal)r&   r(   )rJ   Úrefs© )Ú
isinstancer   r   Ú_referencesÚsetÚissubsetÚnextÚiterÚ	TypeErrorÚlenÚwarningsÚwarnÚFutureWarningr   r   Ú_raise_scalar_data_errorÚfrom_fieldsr;   Ú
ValueErrorr   r(   rK   ÚnpÚasarrayr'   r   r   r   Úcopyr,   )r-   r&   Úordinalr(   r*   rq   rJ   ÚfieldsÚvalid_field_setr_   Úarguments              r0   Ú__new__zPeriodIndex.__new__ê   sÏ  € ò
ˆð ˆÙœ
 4¬%´Ð);Ô<Ø×#Ñ#ˆDä�6‹{×#Ñ# OÔ4ÜœD¤ V£¨Ñ!>Ó?Ó@ˆHÜÐKÈHÈ:ÐVÓWÐWÜ�Œ[ä�M‰Mð3äÜ+Ó-õ	ð Ðä�M‰Mðô Ü+Ó-õô " $¨¨cÓ2ˆàˆ<˜G˜Oáà×,Ñ,¨TÔ2Ø"�3—?‘?Ñ7 VÑ7°$Ò7×=Ñ=ˆDØ‰DáØÐÜ Ð!CÓDÐDÜÐBÓCÐCô ' u¨dÓ3ˆDñ
 œ
 4¨Ô-°$·)±)¸tÒ2Cð —{‘{ 4Ó(�àˆ| Ð 3ÜŸ*™* W´B·H±HÔ=�Ü# DÓ)�Ü" 7°%Ô8‘ØÐ! gÐ&9Ü Ð!DÓEÐEô $¨°DÔ9�áØ—9‘9“;ˆDà�‰˜t¨$°TˆÓ:Ð:r2   )r[   r]   r\   rZ   rS   rU   rX   r(   c               ó¾   — |||||||dœ}	|	j                  «       D �
�ci c]  \  }
}|€Œ	|
|“Œ }	}
}t        j                  |	|¬«      }| j                  |«      S c c}}
w )N)r[   r]   r\   rZ   rS   rU   rX   )rs   r(   )Úitemsr   Ú_from_fieldsr,   )r-   r[   r]   r\   rZ   rS   rU   rX   r(   rs   ÚkeyÚvaluerO   s                r0   rm   zPeriodIndex.from_fieldsA  so   € ð ØØØØØØñ
ˆð 06¯|©|«~×S¡  eÀÑAR�#�u‘*ÐSˆÑSÜ×&Ñ&¨f¸4Ô@ˆØ�‰˜sÓ#Ð#ùó Ts
   ž
A©ArI   c               ó¶   — t        j                  |t         j                  ¬«      }t        |«      }t	        j
                  ||¬«      }| j                  ||¬«      S )Nr)   rI   )ro   rp   r'   r   r   r,   )r-   Úordinalsr(   rJ   r*   r&   s         r0   Úfrom_ordinalszPeriodIndex.from_ordinals[  sE   € ä—:‘:˜h¬b¯h©hÔ7ˆÜ˜DÓ!ˆÜ×&Ñ& x°uÔ=ˆØ�‰˜t¨$ˆÓ/Ð/r2   c                ó8   — t        j                  | t        ¬«      S )Nr)   )ro   rp   Úobjectr@   s    r0   r/   zPeriodIndex.valuese  s   € ä�z‰z˜$¤fÔ-Ð-r2   c                óÄ  — t        |t        t        j                  t        t        j
                  f«      r7t        | j                  t        «      r‡| j                  j                  |«      }|S t        |t        «      r;|j                  | j                  j                  k(  r|j                  S t        | |«      ‚t        |«      rt        |t        «      sJ ‚|S t        | d«      ‚)aÅ  
        Convert timedelta-like input to an integer multiple of self.freq

        Parameters
        ----------
        other : timedelta, np.timedelta64, DateOffset, int, np.ndarray

        Returns
        -------
        converted : int, np.ndarray[int64]

        Raises
        ------
        IncompatibleFrequency : if the input cannot be written as a multiple
            of self.freq.  Note IncompatibleFrequency subclasses ValueError.
        N)ra   r   ro   Útimedelta64r   Úndarrayr(   r;   Ú _check_timedeltalike_freq_compatr   ÚbaseÚnr   r   Úint)rA   rE   Údeltas      r0   Ú_maybe_convert_timedeltaz$PeriodIndex._maybe_convert_timedeltai  s¦   € ô" �eœi¬¯©¼¼r¿z¹zÐJÔKÜ˜$Ÿ)™)¤TÔ*àŸ
™
×CÑCÀEÓJ�Ø�Ü˜œzÔ*Ø�z‰z˜TŸY™YŸ^™^Ò+Ø—w‘w�ä'¨¨eÓ4Ð4Ü˜ÔÜ˜e¤SÔ)Ð)Ð)ØˆLô $ D¨$Ó/Ð/r2   c                ó    — | j                   |k(  S )zF
        Can we compare values of the given dtype to our own?
        r)   )rA   r*   s     r0   Ú_is_comparable_dtypez PeriodIndex._is_comparable_dtype‹  s   € ð �z‰z˜UÑ"Ð"r2   c                ó¾   •— t        |t        «      r"t        |j                  | j                  ¬«      }nt        |t        «      st        d«      ‚t        ‰| �  ||«      S )z�
        where : array of timestamps
        mask : np.ndarray[bool]
            Array of booleans where data is not NA.
        ©r(   z6asof_locs `where` must be DatetimeIndex or PeriodIndex)ra   r   r9   Ú_valuesr(   rg   ÚsuperÚ	asof_locs)rA   ÚwhereÚmaskÚ	__class__s      €r0   r�   zPeriodIndex.asof_locs”  sK   ø€ ô �eœ]Ô+Ü §¡°D·I±IÔ>‰EÜ˜E¤;Ô/ÜÐTÓUÐUä‰wÑ  ¨Ó-Ð-r2   c                ó°   — t        | «      dk(  ry| j                  st        d«      ‚| j                  }t	        |dd |dd z
  dk  j                  «       «      S )z‰
        Returns True if this PeriodIndex is range-like in that all Periods
        between start and end are present, in order.
        r   TzIndex is not monotonicé   Néÿÿÿÿé   )rh   Úis_monotonic_increasingrn   Úasi8ÚboolÚall)rA   r/   s     r0   Úis_fullzPeriodIndex.is_full¡  sZ   € ô ˆt‹9˜Š>ØØ×+Ò+ÜÐ5Ó6Ð6Ø—‘ˆÜ�f˜Q˜R�j 6¨#¨2 ;Ñ.°!Ñ3×8Ñ8Ó:Ó;Ð;r2   c                 ó   — y)NÚperiodr`   r@   s    r0   Úinferred_typezPeriodIndex.inferred_type®  s   € ð r2   c                ó|   •— t         ‰| �  ||«      }| j                  |j                  k(  r| j                  |«      }|S r=   )r�   Ú_convert_tolerancer*   r‰   )rA   Ú	toleranceÚtargetr“   s      €r0   r¡   zPeriodIndex._convert_tolerance·  s<   ø€ ô
 ‘GÑ.¨y¸&ÓAˆ	à�:‰:˜Ÿ™Ò%à×5Ñ5°iÓ@ˆIàÐr2   c                óÎ  — |}| j                  |«       t        || j                  «      rt        }nÄt	        |t
        «      re	 | j                  |«      \  }}| j                  |«      r	 | j                  ||«      S || j                  k(  r| j                  |«      }nZt        |«      ‚t	        |t        «      r| j                  |«       n-t	        |t        «      r| j                  |«      }nt        |«      ‚	 t!        j"                  | |«      S # t        $ r}t        d|› d�«      |‚d}~ww xY w# t        $ r}t        |«      |‚d}~ww xY w# t        $ r}t        |«      |‚d}~ww xY w)a»  
        Get integer location for requested label.

        Parameters
        ----------
        key : Period, NaT, str, or datetime
            String or datetime key must be parsable as Period.

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

        Raises
        ------
        KeyError
            Key is not present in the index.
        TypeError
            If key is listlike or otherwise not hashable.
        zCannot interpret 'z' as periodN)Ú_check_indexing_errorr   r*   r	   ra   ÚstrÚ_parse_with_resorn   ÚKeyErrorÚ_can_partial_date_sliceÚ_partial_date_slicerD   Ú_cast_partial_indexing_scalarr
   Ú_disallow_mismatched_indexingr   r   Úget_loc)rA   rz   Úorig_keyÚparsedÚresoÚerrs         r0   r­   zPeriodIndex.get_locÄ  s\  € ð( ˆà×"Ñ" 3Ô'ä   d§j¡jÔ1Ü‰Cä˜œSÔ!ðOØ#×4Ñ4°SÓ9‘�˜ð
 ×+Ñ+¨DÔ1ð1Ø×3Ñ3°D¸&ÓAÐAð �t×+Ñ+Ò+ð ×8Ñ8¸Ó@‘ä˜s“mÐ#ä˜œVÔ$Ø×.Ñ.¨sÕ3ä˜œXÔ&Ø×4Ñ4°SÓ9‰Cô ˜3“-Ðð	.Ü—=‘=  sÓ+Ð+øô9 ò OäÐ!3°C°5¸ÐDÓEÈ3ÐNûðOûô  ò 1Ü" 3›-¨SÐ0ûð1ûô, ò 	.Ü˜8Ó$¨#Ð-ûð	.úsH   ÁD Á(D- Ã6E
 Ä	D*ÄD%Ä%D*Ä-	EÄ6EÅEÅ
	E$ÅEÅE$c                óL   — |j                   | j                  k7  rt        |«      ‚y r=   )Ú_dtyper*   r¨   )rA   rz   s     r0   r¬   z)PeriodIndex._disallow_mismatched_indexing  s!   € Ø�:‰:˜Ÿ™Ò#Ü˜3“-Ðð $r2   c                óp   — 	 t        || j                  ¬«      }|S # t        $ r}t        |«      |‚d }~ww xY w)Nr�   )r
   r(   rn   r¨   )rA   Úlabelrž   r±   s       r0   r«   z)PeriodIndex._cast_partial_indexing_scalar  s<   € ð	+Ü˜E¨¯	©	Ô2ˆFð ˆøô ò 	+ä˜5“/ sÐ*ûð	+ús   ‚ ›	5¤0°5c                óf   •— t        |t        «      r| j                  |«      }t        ‰| �  ||«      S r=   )ra   r   r«   r�   Ú_maybe_cast_slice_bound)rA   rµ   Úsider“   s      €r0   r·   z#PeriodIndex._maybe_cast_slice_bound  s/   ø€ ä�eœXÔ&Ø×6Ñ6°uÓ=ˆEä‰wÑ.¨u°dÓ;Ð;r2   c                óä   — t        j                  |j                  |j                  «      }t        ||¬«      }|j	                  | j
                  d¬«      |j	                  | j
                  d¬«      fS )Nr�   Ústart)rN   Úend)r   ÚgetÚattr_abbrevr
   rK   r(   )rA   r°   r¯   r(   Úivs        r0   Ú_parsed_string_to_boundsz$PeriodIndex._parsed_string_to_bounds  sY   € Ü'×+Ñ+¨D×,<Ñ,<¸d×>NÑ>NÓOˆÜ�F Ô&ˆØ—	‘	˜$Ÿ)™)¨�	Ó1°2·9±9¸T¿Y¹YÈE°9Ó3RÐSÐSr2   c                óT   — |�"t        dt        | «      j                  › d�«      ‚| |z   S )Nz%`freq` argument is not supported for z.shift)rg   rL   Ú__name__)rA   Úperiodsr(   s      r0   ÚshiftzPeriodIndex.shift  s8   € àÐÜØ7¼¸T»
×8KÑ8KÐ7LÈFÐSóð ð �g‰~Ðr2   )Úreturnztype[libindex.PeriodEngine])rÄ   r   )NÚE)rN   r¦   rÄ   r!   )Nrº   )rN   r¦   rÄ   r   )rÄ   r   )NNNNFN)r*   zDtype | Nonerq   rš   rJ   úHashable | NonerÄ   r!   )rÄ   r!   )rÄ   znpt.NDArray[np.object_])rÄ   zint | npt.NDArray[np.int64])r*   r    rÄ   rš   )r‘   r   r’   znpt.NDArray[np.bool_]rÄ   z
np.ndarray)rÄ   rš   )rÄ   r¦   )rz   r
   rÄ   ÚNone)rµ   r   rÄ   r
   )r¸   r¦   )r°   r   r¯   r   )r•   N)rÂ   r‡   rÄ   r!   )(rÁ   Ú
__module__Ú__qualname__Ú__doc__Ú_typÚ__annotations__r   Ú	_data_clsÚ!_supports_partial_string_indexingÚpropertyrB   r   rD   r   rK   Ú_shared_doc_kwargsrQ   rS   ÚfgetrU   rX   rv   Úclassmethodrm   r~   r/   r‰   r‹   r�   rœ   rŸ   r¡   r­   r¬   r«   r   r·   r¿   rÃ   Ú__classcell__)r“   s   @r0   r9   r9   P   sn  ø… ñZðx €DàÓØ
ÓØÓà€IØ(,Ð%àò%ó ð%ð ò*ó ð*ñ 	Ø×Ñðà)Ø ñð ñ	ó;óð;ñ 	ˆ×	!Ñ	!Ó"ó>ó #ð>ð Ùˆ×	Ñ	×	Ñ	Óò6ó  ó ð6ð Ùˆ×	Ñ	×	 Ñ	 Ó!ò8ó "ó ð8ð Ùˆ×	Ñ	×	 Ñ	 Ó!ò8ó "ó ð8ð ØØØ"ØØ $ðU;ð
 ðU;ð ðU;ð ðU;ð 
óU;ðn ð ØØØØØØØñ$ð 
ò$ó ð$ð2 Ø37ô 0ó ð0ð ò.ó ð.ó 0óD#õ.ð ò
<ó ð
<ð òó ðôò<.ó| óñ 	Ð	×	6Ñ	6Ó7ô<ó 8ð<óTñ
 	Ð	×	$Ñ	$Ó%óó &ôr2   r9   c                ó  — t        j                  | ||«      dk7  rt        d«      ‚|€"t        | t        «      st        |t        «      sd}t        j                  | |||«      \  }}t        |«      }t        ||¬«      }t        ||¬«      S )a  
    Return a fixed frequency PeriodIndex.

    The day (calendar) is the default frequency.

    Parameters
    ----------
    start : str, datetime, date, pandas.Timestamp, or period-like, default None
        Left bound for generating periods.
    end : str, datetime, date, pandas.Timestamp, or period-like, default None
        Right bound for generating periods.
    periods : int, default None
        Number of periods to generate.
    freq : str or DateOffset, optional
        Frequency alias. By default the freq is taken from `start` or `end`
        if those are Period objects. Otherwise, the default is ``"D"`` for
        daily frequency.
    name : str, default None
        Name of the resulting PeriodIndex.

    Returns
    -------
    PeriodIndex

    Notes
    -----
    Of the three parameters: ``start``, ``end``, and ``periods``, exactly two
    must be specified.

    To learn more about the frequency strings, please see `this link
    <https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#offset-aliases>`__.

    Examples
    --------
    >>> pd.period_range(start='2017-01-01', end='2018-01-01', freq='M')
    PeriodIndex(['2017-01', '2017-02', '2017-03', '2017-04', '2017-05', '2017-06',
             '2017-07', '2017-08', '2017-09', '2017-10', '2017-11', '2017-12',
             '2018-01'],
            dtype='period[M]')

    If ``start`` or ``end`` are ``Period`` objects, they will be used as anchor
    endpoints for a ``PeriodIndex`` with frequency matching that of the
    ``period_range`` constructor.

    >>> pd.period_range(start=pd.Period('2017Q1', freq='Q'),
    ...                 end=pd.Period('2017Q2', freq='Q'), freq='M')
    PeriodIndex(['2017-03', '2017-04', '2017-05', '2017-06'],
                dtype='period[M]')
    r—   zOOf the three parameters: start, end, and periods, exactly two must be specifiedÚDr)   rI   )	ÚcomÚcount_not_nonern   ra   r
   r   Ú_generate_ranger   r9   )rº   r»   rÂ   r(   rJ   r&   r*   s          r0   Úperiod_rangerÙ   #  s‰   € ôp ×Ñ˜%  gÓ.°!Ò3Üð,ó
ð 	
ð €|œZ¨¬vÔ6¼zÈ#ÌvÔ?VØˆä×,Ñ,¨U°C¸À$ÓG�J€Dˆ$Ü˜Ó€EÜ�t 5Ô)€DÜ�t $Ô'Ð'r2   )NNNNN)rÂ   z
int | NonerJ   rÆ   rÄ   r9   )EÚ
__future__r   r   r   Útypingr   ri   Únumpyro   Úpandas._libsr   r>   Úpandas._libs.tslibsr   r	   r
   r   r   Úpandas._libs.tslibs.dtypesr   Úpandas.util._decoratorsr   r   Úpandas.util._exceptionsr   Úpandas.core.dtypes.commonr   Úpandas.core.dtypes.dtypesr   Úpandas.core.dtypes.genericr   Úpandas.core.dtypes.missingr   Úpandas.core.arrays.periodr   r   r   r   Úpandas.core.commonÚcoreÚcommonrÖ   Úpandas.core.indexes.baseÚindexesr…   Úibaser   Ú pandas.core.indexes.datetimeliker   Úpandas.core.indexes.datetimesr   r   Úpandas.core.indexes.extensionr   Úcollections.abcr   Úpandas._typingr   r    r!   r"   ÚdictÚ_index_doc_kwargsÚupdaterÐ   r1   Ú
_field_opsr9   rÙ   r`   r2   r0   ú<module>rö      s7  ðÝ "÷õ !Û ã å *÷õ õ @÷õ 5å 0Ý 1Ý 0Ý <÷ó ÷ !Ð  ß (Ó (Ý 7Ý B÷õ 8áÝ(÷ó ñ ˜×0Ñ0Ó1Ð Ø × Ñ ˜.Ð*JÐKÔ Làˆ]ðÐ ò	 ñ Ú*¨[×-CÑ-CÑCØØ	ôñ
 �Ð Ó-ôJÐ'ó Jó .óðJð\ ØØØ	Ø ðC(ð ðC(ð
 ðC(ð ôC(r2   