ó
    ÖÁ“iÙý  ã                   óÀ  • S r SSKrSSKrSSKrSSKJr  SSKJr  SSKJr  SSKJ	r	J
r
  SSKJr  SSKJr  SS	KJr  SS
KJrJrJrJrJrJrJrJrJrJrJrJrJr  SSKJr   SSK!J"r"  SSK#J$r$J%r%J&r&J'r'  SSK(J)r)J*r*  SSK+J,r,  \\\-4   r.\S   r/\S   r0\S   r1 " S S5      r2\2Rg                  \Rh                  5      \2l4        \2Rg                  \Rj                  5      \2l5        g)z_
Provides the :class:`Arrow <arrow.arrow.Arrow>` class, an enhanced ``datetime``
replacement.

é    N©Údate)Údatetime)Útime)Ú	timedeltaÚtimezone©Útzinfo)Útrunc)Ústruct_time)ÚAnyÚClassVarÚFinalÚ	GeneratorÚIterableÚListÚLiteralÚMappingÚOptionalÚTupleÚUnionÚcastÚoverload)Útz)Úrelativedelta)Ú	formatterÚlocalesÚparserÚutil)ÚDEFAULT_LOCALEÚDEHUMANIZE_LOCALES)ÚTimeFrameLiteral)ÚyearÚyearsÚmonthÚmonthsÚdayÚdaysÚhourÚhoursÚminuteÚminutesÚsecondÚsecondsÚmicrosecondÚmicrosecondsÚweekÚweeksÚquarterÚquarters)ú[)ú()z(]z[])	Úautor-   r+   r)   r'   r1   r%   r3   r#   c                   ó�	  • \ rS rSr% Sr\R                  r\\   \	S'   \S    \	S'   \S    \	S'   / SQr
\\\      \	S'   \
 V Vs/ s H  o S3PM	     snn r\\\      \	S	'   S
r\\   \	S'   Sr\\   \	S'   Sr\\   \	S'   Sr\\   \	S'   Sr\\   \	S'   Sr\\   \	S'   Sr\\   \	S'   Sr\\   \	S'   Sr\\   \	S'   S\\\\\\\S.r\\\\4      \	S'   \\	S'        S”S!\S"\S#\S$\S%\S&\S'\S(\\   S)\S*S 4S+ jjr \!S•S(\\"   S*S 4S, jj5       r#\!S–S- j5       r$\! S•S.\%\\\4   S(\\   S*S 4S/ jj5       r&\!S.\%\\\4   S*S 4S0 j5       r'\!S•S1\S(\\   S*S 4S2 jj5       r(\!S•S3\)S(\\   S*S 4S4 jj5       r*\! S•S5\S6\S(\\   S*S 4S7 jj5       r+\!S8\S*S 4S9 j5       r,\!   S—S:\-S;\%S \4   S<\%S \S 4   S=\\   S>\\   S*\.S?   4S@ jj5       r/    S˜S:\-SB\SC\0SD\1SE\S*\2SF   4SG jjr3S:\-S)\S*S 4SH jr4S:\-S)\S*S 4SI jr5\!    S™S:\-S;\S<\S=\\   S>\\   SC\0SD\1S*\6\2SF      4SJ jj5       r7\!    SšS:\-S;\S<\SK\S=\\   SC\0SD\1S*\6\2SF      4SL jj5       r8S*\4SM jr9S*\4SN jr:SO\S*\4SP jr;S*\4SQ jr<SR\S*\4SS jr=\>S*\"4ST j5       r?\>S*\4SU j5       r@\>S*\4SV j5       rAS*\4SW jrB\>S*\4SX j5       rC\>S*\4SY j5       rD\>S*\4SZ j5       rE\>S*\14S[ j5       rF\>S*\14S\ j5       rGS–S] jrHS)\S*S 4S^ jrIS›S_\1S)\S*S 4S` jjrJS=\S*S 4Sa jrKSb\L4S6\Sc\S*\4Sd jjrMS \LSASe4Sf\%S \S 4   Sc\Sg\1Sh\%\N\\N   4   S*\4
Si jjrOSœSj\Sc\S*S 4Sk jjrP S�S;S S<S SC\0S*\14Sl jjrQS*\)4Sm jr)S*\R4Sn jrSS*\R4So jrTS=\\"   S*\4Sp jrUS*\\   4Sq jrVS*\\   4Sr jrWS*\X4Ss jrYS*\X4St jrZS*\4Su jr[S*\4Sv jr\S*\4Sw jr]S*\2\\\4   4Sx jr^SžSy\Sz\S*\4S{ jjr_S*\4S| jr`S}\S*\4S~ jraS*\4S jrbSf\S*S 4S€ jrcSf\%\\d4   S*S 4S� jre\fSf\%\\d4   S*S 4S‚ j5       rg\fSf\%\S 4   S*\4Sƒ j5       rgSf\S*\%\S 4   4S„ jrgSf\S*\4S… jrhSf\S*\14S† jriSf\S*\14S‡ jrjSf\S*\14Sˆ jrkSf\S*\14S‰ jrlSf\S*\14SŠ jrmSf\S*\14S‹ jrn\oSŒ\\   S*\"4S� j5       rp\!SŽ\%S \\\\4   S*\4S� j5       rq\!SR\-S*\2\\\4   4S� j5       rr\!S<\S>\\   S*\2\\4   4S‘ j5       rs\oS3S S*\14S’ j5       rtS“rug s  snn f )ŸÚArrowéN   a  An :class:`Arrow <arrow.arrow.Arrow>` object.

Implements the ``datetime`` interface, behaving as an aware ``datetime`` while implementing
additional functionality.

:param year: the calendar year.
:param month: the calendar month.
:param day: the calendar day.
:param hour: (optional) the hour. Defaults to 0.
:param minute: (optional) the minute, Defaults to 0.
:param second: (optional) the second, Defaults to 0.
:param microsecond: (optional) the microsecond. Defaults to 0.
:param tzinfo: (optional) A timezone expression.  Defaults to UTC.
:param fold: (optional) 0 or 1, used to disambiguate repeated wall times. Defaults to 0.

.. _tz-expr:

Recognized timezone expressions:

    - A ``tzinfo`` object.
    - A ``str`` describing a timezone, similar to 'US/Pacific', or 'Europe/Berlin'.
    - A ``str`` in ISO 8601 style, as in '+07:00'.
    - A ``str``, one of the following:  'local', 'utc', 'UTC'.

Usage::

    >>> import arrow
    >>> arrow.Arrow(2013, 5, 5, 12, 30, 45)
    <Arrow [2013-05-05T12:30:45+00:00]>

Ú
resolutionÚminÚmax)r#   r%   r'   r)   r+   r-   r/   Ú_ATTRSÚsÚ_ATTRS_PLURALé   Ú_MONTHS_PER_QUARTERé   Ú_MONTHS_PER_YEARé<   Ú_SECS_PER_MINUTEi  Ú_SECS_PER_HOURi€Q Ú_SECS_PER_DAYi€:	 Ú_SECS_PER_WEEKg    àDAÚ_SECS_PER_MONTHg    P(^AÚ_SECS_PER_QUARTERi€3áÚ_SECS_PER_YEARg      ð?)r-   r+   r)   r'   r1   r%   r3   r#   Ú	_SECS_MAPÚ	_datetimeNr#   r%   r'   r)   r+   r-   r/   r
   ÚkwargsÚreturnc	                 óÀ  • Uc  [         R                  nO¦[        U[        5      (       a]  [	        US5      (       aL  [	        US5      (       a;  UR
                  (       a*  [        R                  R                  UR
                  5      nO4[        U[        5      (       a  [        R                  R                  U5      nU	R                  SS5      n
[        XX4XVXxU
S9	U l        g )NÚlocalizeÚzoneÚfoldr   ©rT   )r   ÚutcÚ
isinstanceÚ	dt_tzinfoÚhasattrrS   r   ÚTzinfoParserÚparseÚstrÚgetÚdt_datetimerN   )Úselfr#   r%   r'   r)   r+   r-   r/   r
   rO   rT   s              ÚH/home/mande/repo/quber/.venv/lib/python3.13/site-packages/arrow/arrow.pyÚ__init__ÚArrow.__init__”   s¦   € ð ‰>Ü—\‘\‰Fô �vœy×)Ñ)Ü˜ 
×+Ñ+Ü˜ ×'Ñ'Ø——ä×(Ñ(×.Ñ.¨v¯{©{Ó;‰FÜ˜¤×$Ñ$Ü×(Ñ(×.Ñ.¨vÓ6ˆFà�z‰z˜& !Ó$ˆä$Ø˜ F°KÈdñ
ˆ�ó    c                 ó`  • Uc-  [         R                  " 5       R                  5       R                  n[         R                  " U5      nU " UR                  UR
                  UR                  UR                  UR                  UR                  UR                  UR                  [        USS5      S9	$ )a  Constructs an :class:`Arrow <arrow.arrow.Arrow>` object, representing "now" in the given
timezone.

:param tzinfo: (optional) a ``tzinfo`` object. Defaults to local time.

Usage::

    >>> arrow.now('Asia/Baku')
    <Arrow [2019-01-24T20:26:31.146412+04:00]>

rT   r   rU   )r^   ÚnowÚ
astimezoner
   r#   r%   r'   r)   r+   r-   r/   Úgetattr)Úclsr
   Údts      r`   re   Ú	Arrow.nowµ   sƒ   € ð ‰>Ü —_’_Ó&×1Ñ1Ó3×:Ñ:ˆFä�_Š_˜VÓ$ˆáØ�G‰GØ�H‰HØ�F‰FØ�G‰GØ�I‰IØ�I‰IØ�N‰NØ�I‰IÜ˜˜V QÓ'ñ

ð 
	
rc   c                 ó  • [         R                  " [        R                  5      nU " UR                  UR
                  UR                  UR                  UR                  UR                  UR                  UR                  [        USS5      S9	$ )zªConstructs an :class:`Arrow <arrow.arrow.Arrow>` object, representing "now" in UTC
time.

Usage::

    >>> arrow.utcnow()
    <Arrow [2019-01-24T16:31:40.651108+00:00]>

rT   r   rU   )r^   re   r   rV   r#   r%   r'   r)   r+   r-   r/   r
   rg   )rh   ri   s     r`   ÚutcnowÚArrow.utcnowÔ   sg   € ô �_Š_œXŸ\™\Ó*ˆáØ�G‰GØ�H‰HØ�F‰FØ�G‰GØ�I‰IØ�I‰IØ�N‰NØ�I‰IÜ˜˜V QÓ'ñ

ð 
	
rc   Ú	timestampc                 ó^  • Uc.  [         R                  " 5       R                  5       R                  nO4[	        U[
        5      (       a  [        R                  R                  U5      n[        R                  " U5      (       d  [        SU< S35      e[        R                  " [        U5      5      n[         R                  " X5      nU " UR                  UR                   UR"                  UR$                  UR&                  UR(                  UR*                  UR                  [-        USS5      S9	$ )a  Constructs an :class:`Arrow <arrow.arrow.Arrow>` object from a timestamp, converted to
the given timezone.

:param timestamp: an ``int`` or ``float`` timestamp, or a ``str`` that converts to either.
:param tzinfo: (optional) a ``tzinfo`` object.  Defaults to local time.

úThe provided timestamp ú is invalid.rT   r   rU   )r^   re   rf   r
   rW   r\   r   rZ   r[   r   Úis_timestampÚ
ValueErrorÚnormalize_timestampÚfloatÚfromtimestampr#   r%   r'   r)   r+   r-   r/   rg   )rh   rn   r
   ri   s       r`   rv   ÚArrow.fromtimestampî   sã   € ð ‰>Ü —_’_Ó&×1Ñ1Ó3×:Ñ:‰FÜ˜¤×$Ñ$Ü×(Ñ(×.Ñ.¨vÓ6ˆFä× Ò  ×+Ñ+ÜÐ6°y±mÀ<ÐPÓQÐQä×,Ò,¬U°9Ó-=Ó>ˆ	Ü×&Ò& yÓ9ˆáØ�G‰GØ�H‰HØ�F‰FØ�G‰GØ�I‰IØ�I‰IØ�N‰NØ�I‰IÜ˜˜V QÓ'ñ

ð 
	
rc   c                 óº  • [         R                  " U5      (       d  [        SU< S35      e[         R                  " [	        U5      5      n[
        R                  " U[        R                  5      nU " UR                  UR                  UR                  UR                  UR                  UR                  UR                  [        R                  [!        USS5      S9	$ )z´Constructs an :class:`Arrow <arrow.arrow.Arrow>` object from a timestamp, in UTC time.

:param timestamp: an ``int`` or ``float`` timestamp, or a ``str`` that converts to either.

rp   rq   rT   r   rU   )r   rr   rs   rt   ru   r^   rv   r   rV   r#   r%   r'   r)   r+   r-   r/   rg   )rh   rn   ri   s      r`   ÚutcfromtimestampÚArrow.utcfromtimestamp  s¦   € ô × Ò  ×+Ñ+ÜÐ6°y±mÀ<ÐPÓQÐQä×,Ò,¬U°9Ó-=Ó>ˆ	Ü×&Ò& y´(·,±,Ó?ˆáØ�G‰GØ�H‰HØ�F‰FØ�G‰GØ�I‰IØ�I‰IØ�N‰NÜ�L‰LÜ˜˜V QÓ'ñ

ð 
	
rc   ri   c                 ó  • Uc*  UR                   c  [        R                  nOUR                   nU " UR                  UR                  UR
                  UR                  UR                  UR                  UR                  U[        USS5      S9	$ )aÁ  Constructs an :class:`Arrow <arrow.arrow.Arrow>` object from a ``datetime`` and
optional replacement timezone.

:param dt: the ``datetime``
:param tzinfo: (optional) A :ref:`timezone expression <tz-expr>`.  Defaults to ``dt``'s
    timezone, or UTC if naive.

Usage::

    >>> dt
    datetime.datetime(2021, 4, 7, 13, 48, tzinfo=tzfile('/usr/share/zoneinfo/US/Pacific'))
    >>> arrow.Arrow.fromdatetime(dt)
    <Arrow [2021-04-07T13:48:00-07:00]>

rT   r   rU   )r
   r   rV   r#   r%   r'   r)   r+   r-   r/   rg   )rh   ri   r
   s      r`   ÚfromdatetimeÚArrow.fromdatetime-  sr   € ð$ ‰>Ø�y‰yÑ Ü!Ÿ™‘àŸ™�áØ�G‰GØ�H‰HØ�F‰FØ�G‰GØ�I‰IØ�I‰IØ�N‰NØÜ˜˜V QÓ'ñ

ð 
	
rc   r   c                 óv   • Uc  [         R                  nU " UR                  UR                  UR                  US9$ )zúConstructs an :class:`Arrow <arrow.arrow.Arrow>` object from a ``date`` and optional
replacement timezone.  All time values are set to 0.

:param date: the ``date``
:param tzinfo: (optional) A :ref:`timezone expression <tz-expr>`.  Defaults to UTC.

r	   )r   rV   r#   r%   r'   )rh   r   r
   s      r`   ÚfromdateÚArrow.fromdateQ  s/   € ð ‰>Ü—\‘\ˆFá�4—9‘9˜dŸj™j¨$¯(©(¸6ÑBÐBrc   Údate_strÚfmtc                 ó
  • [         R                  " X5      nUc  UR                  nU " UR                  UR                  UR
                  UR                  UR                  UR                  UR                  U[        USS5      S9	$ )a"  Constructs an :class:`Arrow <arrow.arrow.Arrow>` object from a date string and format,
in the style of ``datetime.strptime``.  Optionally replaces the parsed timezone.

:param date_str: the date string.
:param fmt: the format string using datetime format codes.
:param tzinfo: (optional) A :ref:`timezone expression <tz-expr>`.  Defaults to the parsed
    timezone if ``fmt`` contains a timezone directive, otherwise UTC.

Usage::

    >>> arrow.Arrow.strptime('20-01-2019 15:49:10', '%d-%m-%Y %H:%M:%S')
    <Arrow [2019-01-20T15:49:10+00:00]>

rT   r   rU   )r^   Ústrptimer
   r#   r%   r'   r)   r+   r-   r/   rg   )rh   r�   r‚   r
   ri   s        r`   r„   ÚArrow.strptime`  so   € ô& ×!Ò! (Ó0ˆØ‰>Ø—Y‘YˆFáØ�G‰GØ�H‰HØ�F‰FØ�G‰GØ�I‰IØ�I‰IØ�N‰NØÜ˜˜V QÓ'ñ

ð 
	
rc   Úordinalc                 ó,  • [         R                  " U5        [        R                  " U5      nU " UR                  UR
                  UR                  UR                  UR                  UR                  UR                  UR                  [        USS5      S9	$ )zûConstructs an :class:`Arrow <arrow.arrow.Arrow>` object corresponding
    to the Gregorian Ordinal.

:param ordinal: an ``int`` corresponding to a Gregorian Ordinal.

Usage::

    >>> arrow.fromordinal(737741)
    <Arrow [2020-11-12T00:00:00+00:00]>

rT   r   rU   )r   Úvalidate_ordinalr^   Úfromordinalr#   r%   r'   r)   r+   r-   r/   r
   rg   )rh   r†   ri   s      r`   r‰   ÚArrow.fromordinalƒ  ss   € ô 	×Ò˜gÔ&Ü×$Ò$ WÓ-ˆÙØ�G‰GØ�H‰HØ�F‰FØ�G‰GØ�I‰IØ�I‰IØ�N‰NØ�I‰IÜ˜˜V QÓ'ñ

ð 
	
rc   ÚframeÚstartÚendr   Úlimit)r9   NNc              #   óª  #   • U R                  U5      u  pgnU R                  Uc  UR                  OU5      n	U R                  U5      R	                  U	S9nU R                  X55      u  p5U R                  U5      R	                  U	S9nU R                  U5      n
UR                  nSnSnX£::  a¡  XÕ:  a›  US-  nU
v •  U R                   Vs/ s H  n[        X®5      PM     nnU " USU	06R                  " SSS0Xx0D6n
US	;   a  U
R                  U:  a  SnU(       a%  U R                  U
5      (       d  U
R	                  US
9n
X£::  a  XÕ:  a  M™  ggggs  snf 7f)a‰  Returns an iterator of :class:`Arrow <arrow.arrow.Arrow>` objects, representing
points in time between two inputs.

:param frame: The timeframe.  Can be any ``datetime`` property (day, hour, minute...).
:param start: A datetime expression, the start of the range.
:param end: (optional) A datetime expression, the end of the range.
:param tz: (optional) A :ref:`timezone expression <tz-expr>`.  Defaults to
    ``start``'s timezone, or UTC if ``start`` is naive.
:param limit: (optional) A maximum number of tuples to return.

**NOTE**: The ``end`` or ``limit`` must be provided.  Call with ``end`` alone to
return the entire range.  Call with ``limit`` alone to return a maximum # of results from
the start.  Call with both to cap a range at a maximum # of results.

**NOTE**: ``tz`` internally **replaces** the timezones of both ``start`` and ``end`` before
iterating.  As such, either call with naive objects and ``tz``, or aware objects from the
same timezone and no ``tz``.

Supported frame values: year, quarter, month, week, day, hour, minute, second, microsecond.

Recognized datetime expressions:

    - An :class:`Arrow <arrow.arrow.Arrow>` object.
    - A ``datetime`` object.

Usage::

    >>> start = datetime(2013, 5, 5, 12, 30)
    >>> end = datetime(2013, 5, 5, 17, 15)
    >>> for r in arrow.Arrow.range('hour', start, end):
    ...     print(repr(r))
    ...
    <Arrow [2013-05-05T12:30:00+00:00]>
    <Arrow [2013-05-05T13:30:00+00:00]>
    <Arrow [2013-05-05T14:30:00+00:00]>
    <Arrow [2013-05-05T15:30:00+00:00]>
    <Arrow [2013-05-05T16:30:00+00:00]>

**NOTE**: Unlike Python's ``range``, ``end`` *may* be included in the returned iterator::

    >>> start = datetime(2013, 5, 5, 12, 30)
    >>> end = datetime(2013, 5, 5, 13, 30)
    >>> for r in arrow.Arrow.range('hour', start, end):
    ...     print(repr(r))
    ...
    <Arrow [2013-05-05T12:30:00+00:00]>
    <Arrow [2013-05-05T13:30:00+00:00]>

Nr	   Fr   é   r
   Úcheck_imaginaryT)r%   r3   r#   )r'   © )Ú_get_framesÚ_get_tzinfor
   Ú_get_datetimeÚreplaceÚ_get_iteration_paramsr|   r'   r>   rg   ÚshiftÚ_is_last_day_of_month)rh   r‹   rŒ   r�   r   rŽ   Ú_Úframe_relativeÚrelative_stepsr
   ÚcurrentÚoriginal_dayÚday_is_clippedÚiÚfÚvaluess                   r`   ÚrangeÚArrow.range¡  sY  é € ðv -0¯O©O¸EÓ,BÑ)ˆ˜>à—‘°± §¢ÀÓDˆà×!Ñ! %Ó(×0Ñ0¸Ð0Ð?ˆØ×.Ñ.¨sÓ:‰
ˆØ×Ñ Ó$×,Ñ,°FÐ,Ð;ˆà×"Ñ" 5Ó)ˆØ—y‘yˆØˆØˆà‹n £Ø�‰FˆAØŠMà36·:²:Ó>²:¨a”g˜gÖ)±:ˆFÐ>Ù˜6Ð1¨&Ñ1×7Ò7ñ Ø $ðØ)7Ð(HñˆGð Ð4Ó4¸¿¹À|Ó9SØ!%�æ c×&?Ñ&?À×&HÑ&HØ!Ÿ/™/¨l˜/Ð;�ð ‹n ¦ˆn ˆnùò ?ùs   ‚CEÃEÃA+EÅ
	EFÚcountÚboundsÚexactÚ
week_start)r9   r9   c                 ó\  • [         R                  " U5        U R                  U5      u  pgnUS:X  a  SUs=::  a  S::  d  O  [        S5      eSn	OUS:X  a  Sn	OUn	U n
U(       dû  U R                  R                  U	5      nU R                  SUS-    nU Vs/ s H  n[        X5      PM     nn[        S	[        U5      -
  5       H  nUR                  S5        M     U R                  " US
U R                  06n
US:X  a<  XPR                  5       :”  a  SOSnU
R                  U R                  5       U-
  * U-
  S9n
O&US:X  a   U
R                  U R                  S-
  S	-  * S9n
U
R                  " SSS0XrU-  0D6nUS   S:X  a  U
R                  SS9n
US   S:X  a  UR                  SS9nU
U4$ s  snf )an  Returns a tuple of two new :class:`Arrow <arrow.arrow.Arrow>` objects, representing the timespan
of the :class:`Arrow <arrow.arrow.Arrow>` object in a given timeframe.

:param frame: the timeframe.  Can be any ``datetime`` property (day, hour, minute...).
:param count: (optional) the number of frames to span.
:param bounds: (optional) a ``str`` of either '()', '(]', '[)', or '[]' that specifies
    whether to include or exclude the start and end values in the span. '(' excludes
    the start, '[' includes the start, ')' excludes the end, and ']' includes the end.
    If the bounds are not specified, the default bound '[)' is used.
:param exact: (optional) whether to have the start of the timespan begin exactly
    at the time specified by ``start`` and the end of the timespan truncated
    so as not to extend beyond ``end``.
:param week_start: (optional) only used in combination with the week timeframe. Follows isoweekday() where
    Monday is 1 and Sunday is 7.

Supported frame values: year, quarter, month, week, day, hour, minute, second.

Usage::

    >>> arrow.utcnow()
    <Arrow [2013-05-09T03:32:36.186203+00:00]>

    >>> arrow.utcnow().span('hour')
    (<Arrow [2013-05-09T03:00:00+00:00]>, <Arrow [2013-05-09T03:59:59.999999+00:00]>)

    >>> arrow.utcnow().span('day')
    (<Arrow [2013-05-09T00:00:00+00:00]>, <Arrow [2013-05-09T23:59:59.999999+00:00]>)

    >>> arrow.utcnow().span('day', count=2)
    (<Arrow [2013-05-09T00:00:00+00:00]>, <Arrow [2013-05-10T23:59:59.999999+00:00]>)

    >>> arrow.utcnow().span('day', bounds='[]')
    (<Arrow [2013-05-09T00:00:00+00:00]>, <Arrow [2013-05-10T00:00:00+00:00]>)

    >>> arrow.utcnow().span('week')
    (<Arrow [2021-02-22T00:00:00+00:00]>, <Arrow [2021-02-28T23:59:59.999999+00:00]>)

    >>> arrow.utcnow().span('week', week_start=6)
    (<Arrow [2021-02-20T00:00:00+00:00]>, <Arrow [2021-02-26T23:59:59.999999+00:00]>)

r1   r�   é   z,week_start argument must be between 1 and 7.r'   r3   r%   NrA   r
   r   )r(   )r&   r‘   TÚ(©r0   Ú)éÿÿÿÿr’   )r   Úvalidate_boundsr“   rs   r>   Úindexrg   r£   ÚlenÚappendÚ	__class__r
   Ú
isoweekdayr˜   r%   )r_   r‹   r¥   r¦   r§   r¨   Úframe_absoluter›   rœ   ÚattrÚfloorr°   Úframesr¡   r¢   rš   ÚdeltaÚceils                     r`   ÚspanÚ
Arrow.spanø  s»  € ôd 	×Ò˜VÔ$à9=×9IÑ9IÈ%Ó9PÑ6ˆ¨à˜VÓ#Ø˜
Õ' aÕ'Ü Ð!OÓPÐPØ‰DØ˜yÓ(Ø‰Dà!ˆDàˆÞØ—K‘K×%Ñ% dÓ+ˆEØ—[‘[  5¨1¡9Ð-ˆFá06Ó7²¨1”g˜dÖ&±ˆFÐ7ä˜1œs 6›{™?Ö+�Ø—‘˜aÖ ñ ,ð —N’N FÐ?°4·;±;Ñ?ˆEà Ó'à'¯/©/Ó*;Ó;™À�ØŸ™¨4¯?©?Ó+<¸zÑ+IÐ)JÈUÑ)R˜ÐS‘Ø 9Ó,ØŸ™¨d¯j©j¸1©nÀÑ-AÐ+B˜ÐC�à�{Š{ñ 
Ø ð
Ø%3¸^Ñ5KÐ$Lñ
ˆð �!‰9˜ÓØ—K‘K¨R�KÐ0ˆEà�!‰9˜ÓØ—:‘:¨2�:Ð.ˆDà�dˆ{Ðùò1 8s   ÂF)c                 ó.   • U R                   " U40 UD6S   $ )a£  Returns a new :class:`Arrow <arrow.arrow.Arrow>` object, representing the "floor"
of the timespan of the :class:`Arrow <arrow.arrow.Arrow>` object in a given timeframe.
Equivalent to the first element in the 2-tuple returned by
:func:`span <arrow.arrow.Arrow.span>`.

:param frame: the timeframe.  Can be any ``datetime`` property (day, hour, minute...).
:param week_start: (optional) only used in combination with the week timeframe. Follows isoweekday() where
    Monday is 1 and Sunday is 7.

Usage::

    >>> arrow.utcnow().floor('hour')
    <Arrow [2013-05-09T03:00:00+00:00]>

    >>> arrow.utcnow().floor('week', week_start=7)
    <Arrow [2021-02-21T00:00:00+00:00]>

r   ©r»   ©r_   r‹   rO   s      r`   r·   ÚArrow.floorV  ó   € ð( �yŠy˜Ñ) &Ñ)¨!Ñ,Ð,rc   c                 ó.   • U R                   " U40 UD6S   $ )a²  Returns a new :class:`Arrow <arrow.arrow.Arrow>` object, representing the "ceiling"
of the timespan of the :class:`Arrow <arrow.arrow.Arrow>` object in a given timeframe.
Equivalent to the second element in the 2-tuple returned by
:func:`span <arrow.arrow.Arrow.span>`.

:param frame: the timeframe.  Can be any ``datetime`` property (day, hour, minute...).
:param week_start: (optional) only used in combination with the week timeframe. Follows isoweekday() where
    Monday is 1 and Sunday is 7.

Usage::

    >>> arrow.utcnow().ceil('hour')
    <Arrow [2013-05-09T03:59:59.999999+00:00]>

    >>> arrow.utcnow().ceil('week', week_start=7)
    <Arrow [2021-02-27T23:59:59.999999+00:00]>

r�   r¾   r¿   s      r`   rº   Ú
Arrow.ceill  rÁ   rc   c              #   óÄ  #   • U R                  Uc  UR                  OU5      nU R                  X(5      R                  XS9S   nU R                  X85      nU R	                  XX4U5      n	U(       d  U	 H  n
U
R                  XUS9v •  M     U	 HO  n
U
R                  XUS9u  p¼XÃ:”  a  UnUS   S:X  a  U[        SS9-  nX³:X  a    gU[        SS9-   U:X  a    gX¼4v •  MQ     g7f)	aó	  Returns an iterator of tuples, each :class:`Arrow <arrow.arrow.Arrow>` objects,
representing a series of timespans between two inputs.

:param frame: The timeframe.  Can be any ``datetime`` property (day, hour, minute...).
:param start: A datetime expression, the start of the range.
:param end: (optional) A datetime expression, the end of the range.
:param tz: (optional) A :ref:`timezone expression <tz-expr>`.  Defaults to
    ``start``'s timezone, or UTC if ``start`` is naive.
:param limit: (optional) A maximum number of tuples to return.
:param bounds: (optional) a ``str`` of either '()', '(]', '[)', or '[]' that specifies
    whether to include or exclude the start and end values in each span in the range. '(' excludes
    the start, '[' includes the start, ')' excludes the end, and ']' includes the end.
    If the bounds are not specified, the default bound '[)' is used.
:param exact: (optional) whether to have the first timespan start exactly
    at the time specified by ``start`` and the final span truncated
    so as not to extend beyond ``end``.

**NOTE**: The ``end`` or ``limit`` must be provided.  Call with ``end`` alone to
return the entire range.  Call with ``limit`` alone to return a maximum # of results from
the start.  Call with both to cap a range at a maximum # of results.

**NOTE**: ``tz`` internally **replaces** the timezones of both ``start`` and ``end`` before
iterating.  As such, either call with naive objects and ``tz``, or aware objects from the
same timezone and no ``tz``.

Supported frame values: year, quarter, month, week, day, hour, minute, second, microsecond.

Recognized datetime expressions:

    - An :class:`Arrow <arrow.arrow.Arrow>` object.
    - A ``datetime`` object.

**NOTE**: Unlike Python's ``range``, ``end`` will *always* be included in the returned
iterator of timespans.

Usage:

    >>> start = datetime(2013, 5, 5, 12, 30)
    >>> end = datetime(2013, 5, 5, 17, 15)
    >>> for r in arrow.Arrow.span_range('hour', start, end):
    ...     print(r)
    ...
    (<Arrow [2013-05-05T12:00:00+00:00]>, <Arrow [2013-05-05T12:59:59.999999+00:00]>)
    (<Arrow [2013-05-05T13:00:00+00:00]>, <Arrow [2013-05-05T13:59:59.999999+00:00]>)
    (<Arrow [2013-05-05T14:00:00+00:00]>, <Arrow [2013-05-05T14:59:59.999999+00:00]>)
    (<Arrow [2013-05-05T15:00:00+00:00]>, <Arrow [2013-05-05T15:59:59.999999+00:00]>)
    (<Arrow [2013-05-05T16:00:00+00:00]>, <Arrow [2013-05-05T16:59:59.999999+00:00]>)
    (<Arrow [2013-05-05T17:00:00+00:00]>, <Arrow [2013-05-05T17:59:59.999999+00:00]>)

N)r§   r   ©r¦   r§   r�   r­   r®   r¬   )r”   r
   r|   r»   r£   r   )rh   r‹   rŒ   r�   r   rŽ   r¦   r§   r
   Ú_rangeÚrr·   rº   s                r`   Ú
span_rangeÚArrow.span_range‚  sï   é € ð| —‘°± §¢ÀÓDˆØ× Ñ  Ó/×4Ñ4°UÐ4ÐHÈÑKˆØ×Ñ˜sÓ+ˆØ—‘˜5¨°%Ó8ˆÞÛ�Ø—f‘f˜U¸�fÐ?Ô?ñ ó ˆAØŸ&™& ¸U˜&ÐC‰KˆEØ‹zØ�Ø˜!‘9 Ó#ØœM°rÑ:Ñ:�DØ‹|ÙØœ°BÑ7Ñ7¸3Ó>ÙØ�+Ôò ùs   ‚CC Úintervalc              #   ó  #   • US:  a  [        S5      e[        U R                  XX5XgS95      n  [        U5      u  pš[	        US-
  5       H  n [        U5      u  pºM     Xš4v •  M8  ! [
         a     M)  f = f! [
         a     gf = f7f)an  Returns an iterator of tuples, each :class:`Arrow <arrow.arrow.Arrow>` objects,
representing a series of intervals between two inputs.

:param frame: The timeframe.  Can be any ``datetime`` property (day, hour, minute...).
:param start: A datetime expression, the start of the range.
:param end: (optional) A datetime expression, the end of the range.
:param interval: (optional) Time interval for the given time frame.
:param tz: (optional) A timezone expression.  Defaults to UTC.
:param bounds: (optional) a ``str`` of either '()', '(]', '[)', or '[]' that specifies
    whether to include or exclude the start and end values in the intervals. '(' excludes
    the start, '[' includes the start, ')' excludes the end, and ']' includes the end.
    If the bounds are not specified, the default bound '[)' is used.
:param exact: (optional) whether to have the first timespan start exactly
    at the time specified by ``start`` and the final interval truncated
    so as not to extend beyond ``end``.

Supported frame values: year, quarter, month, week, day, hour, minute, second

Recognized datetime expressions:

    - An :class:`Arrow <arrow.arrow.Arrow>` object.
    - A ``datetime`` object.

Recognized timezone expressions:

    - A ``tzinfo`` object.
    - A ``str`` describing a timezone, similar to 'US/Pacific', or 'Europe/Berlin'.
    - A ``str`` in ISO 8601 style, as in '+07:00'.
    - A ``str``, one of the following:  'local', 'utc', 'UTC'.

Usage:

    >>> start = datetime(2013, 5, 5, 12, 30)
    >>> end = datetime(2013, 5, 5, 17, 15)
    >>> for r in arrow.Arrow.interval('hour', start, end, 2):
    ...     print(r)
    ...
    (<Arrow [2013-05-05T12:00:00+00:00]>, <Arrow [2013-05-05T13:59:59.999999+00:00]>)
    (<Arrow [2013-05-05T14:00:00+00:00]>, <Arrow [2013-05-05T15:59:59.999999+00:00]>)
    (<Arrow [2013-05-05T16:00:00+00:00]>, <Arrow [2013-05-05T17:59:59.999999+00:0]>)
r�   z%interval has to be a positive integerrÅ   N)rs   ÚiterrÈ   Únextr£   ÚStopIteration)rh   r‹   rŒ   r�   rÊ   r   r¦   r§   Ú	spanRangeÚ
intvlStartÚintvlEndrš   s               r`   rÊ   ÚArrow.intervalÔ  s¨   é € ðh �a‹<ÜÐDÓEÐEäØ�N‰N˜5¨¸ˆNÐMó
ˆ	ð ð	Ü'+¨I£Ñ$�
Ü˜x¨!™|Ö,�Að!Ü&*¨9£o™˜™8ñ -ð
 !Ð*Ò*ñ øô )ó !Ú ð!ûô !ó ÙðüsL   ‚-B°A8 ÁA'Á	A8 Á%BÁ'
A5Á1A8 Á4A5Á5A8 Á8
BÂBÂBÂBc                 óX   • SU R                   R                   SU R                  5        S3$ )NÚ<z [z]>)r³   Ú__name__Ú__str__©r_   s    r`   Ú__repr__ÚArrow.__repr__  s)   € Ø�4—>‘>×*Ñ*Ð+¨2¨d¯l©l«nÐ-=¸RÐ@Ð@rc   c                 ó6   • U R                   R                  5       $ ©N©rN   Ú	isoformatr×   s    r`   rÖ   ÚArrow.__str__  s   € Ø�~‰~×'Ñ'Ó)Ð)rc   Ú	formatstrc                 óX   • [        U5      S:”  a  U R                  U5      $ [        U 5      $ )Nr   )r±   Úformatr\   )r_   rß   s     r`   Ú
__format__ÚArrow.__format__"  s'   € Üˆy‹>˜AÓØ—;‘;˜yÓ)Ð)ä�4‹yÐrc   c                 ó6   • U R                   R                  5       $ rÛ   )rN   Ú__hash__r×   s    r`   rå   ÚArrow.__hash__(  s   € Ø�~‰~×&Ñ&Ó(Ð(rc   Únamec                 ó:  • US:X  a  U R                  5       S   $ US:X  a(  [        U R                  S-
  U R                  -  5      S-   $ UR	                  S5      (       d  [        U R                  US 5      nUb  U$ [        [        [        R                  X5      5      $ )Nr1   r�   r3   rš   )
ÚisocalendarÚintr%   rB   Ú
startswithrg   rN   r   ÚobjectÚ__getattribute__)r_   rç   Úvalues      r`   Ú__getattr__ÚArrow.__getattr__-  sŒ   € Ø�6‹>Ø×#Ñ#Ó% aÑ(Ð(à�9ÓÜ˜Ÿ
™
 Q™¨$×*BÑ*BÑBÓCÀaÑGÐGà�‰˜s×#Ñ#Ü#*¨4¯>©>¸4ÀÓ#FˆEàÑ Ø�ä”Cœ×0Ñ0°Ó<Ó=Ð=rc   c                 óJ   • [        [        U R                  R                  5      $ )z‹Gets the ``tzinfo`` of the :class:`Arrow <arrow.arrow.Arrow>` object.

Usage::

    >>> arw=arrow.utcnow()
    >>> arw.tzinfo
    tzutc()

)r   rX   rN   r
   r×   s    r`   r
   ÚArrow.tzinfo<  s   € ô ”I˜tŸ~™~×4Ñ4Ó5Ð5rc   c                 ó   • U R                   $ )zÖReturns a datetime representation of the :class:`Arrow <arrow.arrow.Arrow>` object.

Usage::

    >>> arw=arrow.utcnow()
    >>> arw.datetime
    datetime.datetime(2019, 1, 24, 16, 35, 27, 276649, tzinfo=tzutc())

©rN   r×   s    r`   r   ÚArrow.datetimeK  s   € ð �~‰~Ðrc   c                 ó4   • U R                   R                  SS9$ )a  Returns a naive datetime representation of the :class:`Arrow <arrow.arrow.Arrow>`
object.

Usage::

    >>> nairobi = arrow.now('Africa/Nairobi')
    >>> nairobi
    <Arrow [2019-01-23T19:27:12.297999+03:00]>
    >>> nairobi.naive
    datetime.datetime(2019, 1, 23, 19, 27, 12, 297999)

Nr	   )rN   r–   r×   s    r`   ÚnaiveÚArrow.naiveY  s   € ð �~‰~×%Ñ%¨TÐ%Ð2Ð2rc   c                 ó6   • U R                   R                  5       $ )z¦Returns a timestamp representation of the :class:`Arrow <arrow.arrow.Arrow>` object, in
UTC time.

Usage::

    >>> arrow.utcnow().timestamp()
    1616882340.256501

)rN   rn   r×   s    r`   rn   ÚArrow.timestampj  ó   € ð �~‰~×'Ñ'Ó)Ð)rc   c                 ó4   • [        U R                  5       5      $ )zªReturns an integer timestamp representation of the :class:`Arrow <arrow.arrow.Arrow>` object, in
UTC time.

Usage::

    >>> arrow.utcnow().int_timestamp
    1548260567

)rê   rn   r×   s    r`   Úint_timestampÚArrow.int_timestampw  s   € ô �4—>‘>Ó#Ó$Ð$rc   c                 ó"   • U R                  5       $ )z¹Returns a floating-point timestamp representation of the :class:`Arrow <arrow.arrow.Arrow>`
object, in UTC time.

Usage::

    >>> arrow.utcnow().float_timestamp
    1548260516.830896

)rn   r×   s    r`   Úfloat_timestampÚArrow.float_timestamp…  s   € ð �~‰~ÓÐrc   c                 ó.   • U R                   R                  $ )zLReturns the ``fold`` value of the :class:`Arrow <arrow.arrow.Arrow>` object.)rN   rT   r×   s    r`   rT   Ú
Arrow.fold“  s   € ð �~‰~×"Ñ"Ð"rc   c                 óB   • [         R                  " U R                  5      $ )zrIndicates whether the :class:`Arrow <arrow.arrow.Arrow>` object is a repeated wall time in the current
timezone.

)Údateutil_tzÚdatetime_ambiguousrN   r×   s    r`   Ú	ambiguousÚArrow.ambiguous™  s   € ô ×-Ò-¨d¯n©nÓ=Ð=rc   c                 óL   • [         R                  " U R                  5      (       + $ )z`Indicates whether the :class: `Arrow <arrow.arrow.Arrow>` object exists in the current timezone.)r  Údatetime_existsrN   r×   s    r`   Ú	imaginaryÚArrow.imaginary¢  s   € ô ×.Ò.¨t¯~©~Ó>Ô>Ð>rc   c                 ó8   • U R                  U R                  5      $ )zšReturns a new :class:`Arrow <arrow.arrow.Arrow>` object, cloned from the current one.

Usage:

    >>> arw = arrow.utcnow()
    >>> cloned = arw.clone()

)r|   rN   r×   s    r`   ÚcloneÚArrow.cloneª  s   € ð × Ñ  §¡Ó0Ð0rc   c                 óÀ  • 0 nUR                  5        HE  u  p4X0R                  ;   a  XBU'   M  US;   a  [        SU S35      eUS;  d  M7  [        SU< S35      e   U R                  R                  " S0 UD6nUR                  S5      nUb   U R                  U5      nUR	                  US9nUR                  S	5      nUb  UR	                  US
9nU R                  U5      $ )a  Returns a new :class:`Arrow <arrow.arrow.Arrow>` object with attributes updated
according to inputs.

Use property names to set their value absolutely::

    >>> import arrow
    >>> arw = arrow.utcnow()
    >>> arw
    <Arrow [2013-05-11T22:27:34.787885+00:00]>
    >>> arw.replace(year=2014, month=6)
    <Arrow [2014-06-11T22:27:34.787885+00:00]>

You can also replace the timezone without conversion, using a
:ref:`timezone expression <tz-expr>`::

    >>> arw.replace(tzinfo=tz.tzlocal())
    <Arrow [2013-05-11T22:27:34.787885-07:00]>

)r1   r3   zSetting absolute z is not supported.)r
   rT   zUnknown attribute: Ú.r
   r	   rT   rU   r’   )Úitemsr>   rs   rN   r–   r]   r”   r|   )r_   rO   Úabsolute_kwargsÚkeyrî   r�   r
   rT   s           r`   r–   ÚArrow.replace¶  sì   € ð* ˆà Ÿ,™,ž.‰JˆCØ—k‘kÓ!Ø', Ó$ØÐ+Ó+Ü Ð#4°S°EÐ9KÐ!LÓMÐMØÐ.Õ.Ü Ð#6°s±g¸QÐ!?Ó@Ð@ñ )ð —.‘.×(Ò(Ñ;¨?Ñ;ˆà—‘˜HÓ%ˆàÑØ×%Ñ% fÓ-ˆFØ—o‘o¨V�oÐ4ˆGà�z‰z˜&Ó!ˆàÑØ—o‘o¨4�oÐ0ˆGà× Ñ  Ó)Ð)rc   r‘   c                 ó  • 0 n/ SQnUR                  5        HJ  u  pVXPR                  ;   d  XT;   a  XcU'   M  SR                  U R                  U-   5      n[        SU S35      e   UR	                  SS5        US==   UR                  SS5      U R                  -  -  ss'   U R                  [        S0 UD6-   nU(       a1  [        R                  " U5      (       d  [        R                  " U5      nU R                  U5      $ )	a  Returns a new :class:`Arrow <arrow.arrow.Arrow>` object with attributes updated
according to inputs.

Parameters:
check_imaginary (bool): If True (default), will check for and resolve
imaginary times (like during DST transitions). If False, skips this check.


Use pluralized property names to relatively shift their current value:

>>> import arrow
>>> arw = arrow.utcnow()
>>> arw
<Arrow [2013-05-11T22:27:34.787885+00:00]>
>>> arw.shift(years=1, months=-1)
<Arrow [2014-04-11T22:27:34.787885+00:00]>

Day-of-the-week relative shifting can use either Python's weekday numbers
(Monday = 0, Tuesday = 1 .. Sunday = 6) or using dateutil.relativedelta's
day instances (MO, TU .. SU).  When using weekday numbers, the returned
date will always be greater than or equal to the starting date.

Using the above code (which is a Saturday) and asking it to shift to Saturday:

>>> arw.shift(weekday=5)
<Arrow [2013-05-11T22:27:34.787885+00:00]>

While asking for a Monday:

>>> arw.shift(weekday=0)
<Arrow [2013-05-13T22:27:34.787885+00:00]>

)r2   r4   Úweekdayú, z>Invalid shift time frame. Please select one of the following: r  r&   r   r4   r’   )r  r@   Újoinrs   Ú
setdefaultÚpoprB   rN   r   r  r
  Úresolve_imaginaryr|   )	r_   r‘   rO   Úrelative_kwargsÚadditional_attrsr  rî   Úsupported_attrr�   s	            r`   r˜   ÚArrow.shiftä  sü   € ðF ˆÚ;Ðà Ÿ,™,ž.‰JˆCØ×(Ñ(Ó(¨CÓ,CØ', Ó$à!%§¡¨4×+=Ñ+=Ð@PÑ+PÓ!Q�Ü ØTÐUcÐTdÐdeÐfóð ñ )ð 	×"Ñ" 8¨QÔ/Ø˜Ó!Ø×Ñ 
¨AÓ.°×1IÑ1IÑIñ	
Ó!ð —.‘.¤=Ñ#C°?Ñ#CÑCˆö ¤;×#>Ò#>¸w×#GÑ#GÜ!×3Ò3°GÓ<ˆGà× Ñ  Ó)Ð)rc   c                 ó„  • [        U[        5      (       d  [        R                  R	                  U5      nU R
                  R                  U5      nU R                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  [!        USS5      S9	$ )ao  Returns a new :class:`Arrow <arrow.arrow.Arrow>` object, converted
to the target timezone.

:param tz: A :ref:`timezone expression <tz-expr>`.

Usage::

    >>> utc = arrow.utcnow()
    >>> utc
    <Arrow [2013-05-09T03:49:12.311072+00:00]>

    >>> utc.to('US/Pacific')
    <Arrow [2013-05-08T20:49:12.311072-07:00]>

    >>> utc.to(tz.tzlocal())
    <Arrow [2013-05-08T20:49:12.311072-07:00]>

    >>> utc.to('-07:00')
    <Arrow [2013-05-08T20:49:12.311072-07:00]>

    >>> utc.to('local')
    <Arrow [2013-05-08T20:49:12.311072-07:00]>

    >>> utc.to('local').to('utc')
    <Arrow [2013-05-09T03:49:12.311072+00:00]>

rT   r   rU   )rW   rX   r   rZ   r[   rN   rf   r³   r#   r%   r'   r)   r+   r-   r/   r
   rg   )r_   r   ri   s      r`   ÚtoÚArrow.to!  s•   € ô: ˜"œi×(Ñ(Ü×$Ñ$×*Ñ*¨2Ó.ˆBà�^‰^×&Ñ& rÓ*ˆà�~‰~Ø�G‰GØ�H‰HØ�F‰FØ�G‰GØ�I‰IØ�I‰IØ�N‰NØ�I‰IÜ˜˜V QÓ'ð ð 

ð 
	
rc   zYYYY-MM-DD HH:mm:ssZZÚlocalec                 ób   • [         R                  " U5      R                  U R                  U5      $ )a%  Returns a string representation of the :class:`Arrow <arrow.arrow.Arrow>` object,
formatted according to the provided format string. For a list of formatting values,
see :ref:`supported-tokens`

:param fmt: the format string.
:param locale: the locale to format.

Usage::

    >>> arrow.utcnow().format('YYYY-MM-DD HH:mm:ss ZZ')
    '2013-05-09 03:56:47 -00:00'

    >>> arrow.utcnow().format('X')
    '1368071882'

    >>> arrow.utcnow().format('MMMM DD, YYYY')
    'May 09, 2013'

    >>> arrow.utcnow().format()
    '2013-05-09 03:56:47 -00:00'

)r   ÚDateTimeFormatterrá   rN   )r_   r‚   r$  s      r`   rá   ÚArrow.formatQ  s&   € ô4 ×*Ò*¨6Ó2×9Ñ9¸$¿.¹.È#ÓNÐNrc   r7   ÚotherÚonly_distanceÚgranularityc                 óè  ^ ^^^• Un[         R                  " U5      nUce  [        R                  " [        R
                  5      R                  [        R
                  S9nUR                  T R                  R                  5      nO±[        U[        5      (       a  UR                  nO�[        U[        5      (       aW  UR                  c$  UR                  T R                  R                  S9nOIUR                  T R                  R                  5      nO#[        S[        U5      R                  < S35      e[        T[        5      (       a  [!        T5      S:X  a  TS   m[#        [%        T R                  U-
  R'                  5       5      5      nUS:  a  SOSm[)        U5      =pš TS:X  GaÞ  U
S	:  a  UR+                  S
US9$ U
T R,                  :  a  TU	-  nUR+                  SX³S9$ U
T R,                  S-  :  a  UR+                  STUS9$ U
T R.                  :  a,  T[1        U	T R,                  -  S5      -  nUR+                  SXÃS9$ U
T R.                  S-  :  a  UR+                  STUS9$ U
T R2                  :  a,  T[1        U	T R.                  -  S5      -  nUR+                  SXÓS9$ T R                  U:  a  [5        UT R                  5      O[5        T R                  U5      nUR6                  T R8                  -  UR:                  -   nUR<                  S:”  a  US-  n[?        UT R8                  5      nU
T R2                  S-  :  a  UR+                  STUS9$ U
T R@                  :  a-  T[1        U	T R2                  -  S5      -  nUR+                  SUUS9$ US:¼  a=  U
T RB                  :  a-  US:X  a  UR+                  STUS9$ TU-  nUR+                  SUUS9$ U
T R@                  S-  :  a  UR+                  STUS9$ U
T RD                  :  a-  T[1        U	T R@                  -  S5      -  nUR+                  SUUS9$ U
T RB                  S-  :  a  UR+                  STUS9$ T[1        U	T RB                  -  S5      -  nUR+                  SUUS9$ [        T[F        5      (       Ga,  [I        [J        T5      mTS:X  a.  T[M        U	5      -  n[)        U5      S:  a  UR+                  S
US9$ OºTS:X  a  TU	-  T R,                  -  nO¡TS:X  a  TU	-  T R.                  -  nOˆTS:X  a  TU	-  T R2                  -  nOoTS:X  a  TU	-  T R@                  -  nOVTS:X  a  TU	-  T RD                  -  nO=TS:X  a  TU	-  T RN                  -  nO$TS:X  a  TU	-  T RB                  -  nO[Q        S5      e[S        [)        U5      5      S:w  a  TS-  mUR+                  TUUS9$ T(       d  [Q        S5      e/ mS [L        S![J        S"[L        4UU UU4S# jjn[M        U	5      nS$nU H  nU" UU5      nM     [!        T5      [!        T5      :  a  [Q        S5      eURU                  TUS9$ ! [V         a  n[Q        S%U S&U< S'35      eSnAff = f)(aQ  Returns a localized, humanized representation of a relative difference in time.

:param other: (optional) an :class:`Arrow <arrow.arrow.Arrow>` or ``datetime`` object.
    Defaults to now in the current :class:`Arrow <arrow.arrow.Arrow>` object's timezone.
:param locale: (optional) a ``str`` specifying a locale.  Defaults to 'en-us'.
:param only_distance: (optional) returns only time difference eg: "11 seconds" without "in" or "ago" part.
:param granularity: (optional) defines the precision of the output. Set it to strings 'second', 'minute',
                   'hour', 'day', 'week', 'month' or 'year' or a list of any combination of these strings

Usage::

    >>> earlier = arrow.utcnow().shift(hours=-2)
    >>> earlier.humanize()
    '2 hours ago'

    >>> later = earlier.shift(hours=4)
    >>> later.humanize(earlier)
    'in 4 hours'

Nr	   z!Invalid 'other' argument of type z4. Argument must be of type None, Arrow, or datetime.r�   r   r®   r7   é
   re   )r)  r.   é   r+   r,   r)   r*   é   r'   r(   r%   r&   r1   r2   r#   r$   r-   r3   z|Invalid level of granularity. Please select between 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter' or 'year'.r?   z†Empty granularity list provided. Please select one or more from 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year'.Ú_deltaÚ_framerP   c                 ó  >• UT;   aw  TU -  TR                   U   -  nU TR                   U   -  n [        [        U5      5      S:w  a&  TR                  [	        [
        US-   5      U45        U $ TR                  X45        U $ )Nr�   r?   )rM   r   Úabsr²   r   r"   )r/  r0  rî   r*  r_   ÚsignÚ
timeframess      €€€€r`   Úgather_timeframesÚ)Arrow.humanize.<locals>.gather_timeframes  s†   ø€ Ø Ó,Ø $ v¡°·±¸vÑ0FÑ F˜Ø $§.¡.°Ñ"8Ñ8˜Ü ¤ U£Ó,°Ó1Ø&×-Ñ-Ü!%Ô&6¸À¹Ó!EÀuÐ Môð
 "�Mð '×-Ñ-¨v¨oÔ>Ø!�Mrc   )r#   r3   r%   r1   r'   r)   r+   r-   zHumanization of the z0 granularity is not currently translated in the z> locale. Please consider making a contribution to this locale.),r   Ú
get_localer^   re   r   rV   r–   rf   rN   r
   rW   r9   Ú	TypeErrorÚtyperÕ   Úlistr±   rê   ÚroundÚtotal_secondsr2  ÚdescriberF   rG   r=   rH   r   r$   rD   r&   r(   r<   rI   rL   rJ   r\   r   r"   ru   rK   rs   r   Údescribe_multiÚKeyError)r_   r(  r$  r)  r*  Úlocale_namerV   ri   r/  Údelta_secondÚdiffr.   r,   r*   Úcalendar_diffÚcalendar_monthsr(   r&   r2   r$   r¹   r5  r¸   r‹   Úer3  r4  s   `   `                    @@r`   ÚhumanizeÚArrow.humanizem  sÔ  û€ ð8 ˆÜ×#Ò# FÓ+ˆà‰=Ü—/’/¤(§,¡,Ó/×7Ñ7¼x¿|¹|Ð7ÐLˆCØ—‘ §¡× 5Ñ 5Ó6‰Bä˜œu×%Ñ%Ø—‘‰Bä˜œ{×+Ñ+Ø�|‰|Ñ#Ø—]‘]¨$¯.©.×*?Ñ*?�]Ð@‘à×%Ñ% d§n¡n×&;Ñ&;Ó<‘ô Ø3´D¸³K×4HÑ4HÑ3Kð LEð Eóð ô
 �k¤4×(Ñ(¬S°Ó-=ÀÓ-BØ% a™.ˆKä”U˜DŸN™N¨RÑ/×>Ñ>Ó@ÓAÓBˆØ˜a“Z‰r QˆÜ! &›kÐ)ˆðX	Ø˜fÔ$Ø˜"“9Ø!Ÿ?™?¨5À˜?ÐNÐNà˜$×/Ñ/Ó/Ø" \Ñ1�GØ!Ÿ?™?Ø! 7ð +ð ð ð ˜D×1Ñ1°AÑ5Ó5Ø!Ÿ?™?¨8°TÈ˜?ÐWÐWà˜D×/Ñ/Ó/Ø"¤S¨¸×9NÑ9NÑ)NÐPQÓ%RÑR�GØ!Ÿ?™?Ø! 7ð +ð ð ð ˜D×/Ñ/°!Ñ3Ó3Ø!Ÿ?™?¨6°4À}˜?ÐUÐUà˜D×.Ñ.Ó.Ø ¤3 |°t×7JÑ7JÑ'JÈAÓ#NÑN�EØ!Ÿ?™?¨7°E˜?ÐWÐWð —~‘~¨Ó*ô " " d§n¡nÔ5ä& t§~¡~°rÓ:ð ð "×'Ñ'¨$×*?Ñ*?Ñ?À-×BVÑBVÑVð  ð
 !×%Ñ%¨Ó*Ø# qÑ(�Oä"% o°t×7LÑ7LÓ"M�à˜$×,Ñ,¨qÑ0Ó0Ø!Ÿ?™?¨5°$Àm˜?ÐTÐTà˜D×/Ñ/Ó/Ø¤# l°d×6HÑ6HÑ&HÈ!Ó"LÑL�DØ!Ÿ?™?¨6°4À}˜?ÐUÐUà$¨Ó)¨d°T×5HÑ5HÓ.HØ&¨!Ó+Ø%Ÿ™Ø# T¸ð  /ð  ð ð "&¨Ñ!7˜Ø%Ÿ™Ø$ f¸Mð  /ð  ð ð ˜D×/Ñ/°!Ñ3Ó3Ø!Ÿ?™?¨6°4À}˜?ÐUÐUà˜D×0Ñ0Ó0Ø ¤3 |°t×7JÑ7JÑ'JÈAÓ#NÑN�EØ!Ÿ?™?¨7°EÈ˜?ÐWÐWà˜D×/Ñ/°!Ñ3Ó3Ø!Ÿ?™?¨6°4À}˜?ÐUÐUð !¤3 |°t×7JÑ7JÑ'JÈAÓ#NÑN�EØ!Ÿ?™?¨7°EÈ˜?ÐWÐWä˜K¬×-Ò-Ü"Ô#3°[ÓA�à (Ó*Ø ¤5¨Ó#6Ñ6�EÜ˜5“z A“~Ø%Ÿ™¨uÀM˜ÐRÐRð &à  HÓ,Ø  <Ñ/°$×2GÑ2GÑG‘EØ  FÓ*Ø  <Ñ/°$×2EÑ2EÑE‘EØ  EÓ)Ø  <Ñ/°$×2DÑ2DÑD‘EØ  FÓ*Ø  <Ñ/°$×2EÑ2EÑE‘EØ  GÓ+Ø  <Ñ/°$×2FÑ2FÑF‘EØ  IÓ-Ø  <Ñ/°$×2HÑ2HÑH‘EØ  FÓ*Ø  <Ñ/°$×2EÑ2EÑE‘Eä$ðyóð ô
 œ˜U›Ó$¨Ó)Ø 3Ñ&�KØ—‘ {°EÈ�ÐWÐWö #Ü$ð@óð ð
 DF�
ð
"¬eð 
"Ô=Mð 
"ÔRW÷ 
"ò 
"ô ˜lÓ+�ð	8�ó $�EÙ-¨e°UÓ;’Eñ $ô �z“?¤S¨Ó%5Ó5Ü$ðyóð ð
 ×,Ñ,¨ZÀ}Ð,ÐUÐUøäó 	ÜØ& q cÐ)YÐZeÑYhð iHð Hóð ûð	ús|   Æ%Y Ç$Y Ç'#Y È;Y É#Y É+;Y Ê'B0Y Í<Y Î,Y ÏY Ï#Y Ï<<Y Ð9#Y Ñ,Y Ò
AY Ó#C(Y ×BY Ù
Y1ÙY,Ù,Y1Úinput_stringc                 ó®  • [         R                  " U5      nUR                  5       R                  SS5      nU[        ;  a  [        SU S35      eU R                  U R                  5      n[        R                  / SQS5      n[        R                  / SQS5      n[        R                  " S	5      nUR                  R                  5        GH:  u  pš[        U
[        5      (       a  U
nOU	[!        U
5      0nUR                  5        Hû  u  pÍ[!        U5      nUR#                  S	5      n[        R                  " S
U 35      nUR%                  U5      nU(       d  MT  UR'                  5       nUR%                  U5      nU(       d,  UR)                  5       (       d  SO[+        [-        U5      5      nO[-        UR'                  5       5      nU	S:X  a  SXy'   MÍ  [!        U	5      nU[!        U5      S   S:w  a  SOS-  nUUU'   SUU'   Mý     GM=     [/        UR                  5        VVs/ s H  u  nnU(       d  M  SPM     snn5      (       d  [        S5      eUR0                  nUR#                  S5      n[        R                  " SU S35      nUR3                  U5      nUR4                  nUR#                  S5      n[        R                  " SU S35      nUR3                  U5      nU(       a  SnO"U(       a  SnOUS   (       a  SnO[        S5      eUR                  5        VVs0 s H  u  nnUUU-  _M     nnnUR6                  " SSS0UD6$ s  snnf s  snnf )a  Returns a new :class:`Arrow <arrow.arrow.Arrow>` object, that represents
the time difference relative to the attributes of the
:class:`Arrow <arrow.arrow.Arrow>` object.

:param timestring: a ``str`` representing a humanized relative time.
:param locale: (optional) a ``str`` specifying a locale.  Defaults to 'en-us'.

Usage::

        >>> arw = arrow.utcnow()
        >>> arw
        <Arrow [2021-04-20T22:27:34.787885+00:00]>
        >>> earlier = arw.dehumanize("2 days ago")
        >>> earlier
        <Arrow [2021-04-18T22:27:34.787885+00:00]>

        >>> arw = arrow.utcnow()
        >>> arw
        <Arrow [2021-04-20T22:27:34.787885+00:00]>
        >>> later = arw.dehumanize("in a month")
        >>> later
        <Arrow [2021-05-18T22:27:34.787885+00:00]>

rš   Ú-z*Dehumanize does not currently support the zN locale, please consider making a contribution to add support for this locale.)r.   r,   r*   r(   r2   r&   r$   r   )re   r.   r,   r*   r(   r2   r&   r$   Fz\d+z	(^|\b|\d)r�   re   Tr®   r?   Ú zËInput string not valid. Note: Some locales do not support the week granularity in Arrow. If you are attempting to use the week granularity on an unsupported locale, this could be the cause of this error.z.*Ú^Ú$z¾Invalid input String. String does not contain any relative time information. String should either represent a time in the future or a time in the past. Ex: 'in 5 seconds' or '5 seconds ago'.r‘   r’   )r   r7  Úlowerr–   r!   rs   r|   rN   ÚdictÚfromkeysÚreÚcompiler4  r  rW   r   r\   rá   ÚsearchÚgroupÚ	isnumericr2  rê   ÚanyÚfutureÚfindallÚpastr˜   )r_   rH  r$  Ú
locale_objÚnormalized_locale_nameÚcurrent_timeÚtime_object_infoÚunit_visitedÚnum_patternÚunitÚunit_objectÚstrings_to_searchÚ
time_deltaÚtime_stringÚsearch_stringÚpatternÚmatchÚmatch_stringÚ	num_matchÚchange_valueÚtime_unit_to_changeÚkÚvÚfuture_stringÚfuture_patternÚfuture_pattern_matchÚpast_stringÚpast_patternÚpast_pattern_matchÚsign_valÚtime_changess                                  r`   Ú
dehumanizeÚArrow.dehumanize@  sK  € ô6 ×'Ò'¨Ó/ˆ
ð "(§¡£×!7Ñ!7¸¸SÓ!AÐà!Ô);Ó;ÜØ<¸V¸Hð  ESð  Tóð ð ×(Ñ(¨¯©Ó8ˆô  Ÿ=™=ÚOÐQRó
Ðô
 —}‘}ÚVØó
ˆô —j’j Ó(ˆð ",×!6Ñ!6×!<Ñ!<×!>ÑˆDä˜+¤w×/Ñ/Ø$/Ñ!à%)¬3¨{Ó+;Ð$<Ð!ð
 ,=×+BÑ+BÖ+DÑ'�
ä # KÓ 0�Ø -× 4Ñ 4°VÓ <�ô Ÿ*š*¨	°-°Ð%AÓB�ØŸ™ |Ó4�ö Ùà$Ÿ{™{›}�Ø'×.Ñ.¨|Ó<�	ö !à!+×!5Ñ!5×!7Ñ!7™¼SÄÀZÃÓ=Qñ !ô $' y§¡Ó'8Ó#9�Lð ˜5“=Ø)-�LÑ&Ùô '*¨$£iÐ#Ø#ÜÐ 3Ó4°RÑ8¸CÓ?‘CÀbñÐ#ð 9EÐ Ð!4Ñ5Ø48�Ð0Ó1ôI ,Eñ "?ôb  \×%7Ñ%7Ô%9Ô?Ò%9™T˜Q ¼Q—DÑ%9Ò?×@Ñ@ÜðEóð ð #×)Ñ)ˆØ%×,Ñ,¨TÓ2ˆÜŸš q¨¨°qÐ$9Ó:ˆØ-×5Ñ5°lÓCÐà —o‘oˆØ!×(Ñ(¨Ó.ˆÜ—z’z Q { m°1Ð"5Ó6ˆØ)×1Ñ1°,Ó?Ðö Ø‰HÞ!Ø‰HØ˜%× Ø‰Häð9óð ð 5E×4JÑ4JÔ4LÔMÒ4L©D¨A¨q˜˜8 a™<šÑ4LˆÑMà×!Ò!ÑG°$ÐG¸,ÑGÐGùóE @ùó@ Ns   È"M
È4M
Ì!Mc                 óÆ  • [         R                  " U5        [        U[        5      (       d  [	        S[        U5      < S35      e[        U[        5      (       d  [	        S[        U5      < S35      eUS   S:H  nUS   S:H  nU R                  nUR                  nUR                  nXvs=:*  =(       a    U:*  Os  =(       a!    U=(       d    Xv:  =(       a    U=(       d    Xh:  $ )af  Returns a boolean denoting whether the :class:`Arrow <arrow.arrow.Arrow>` object is between
the start and end limits.

:param start: an :class:`Arrow <arrow.arrow.Arrow>` object.
:param end: an :class:`Arrow <arrow.arrow.Arrow>` object.
:param bounds: (optional) a ``str`` of either '()', '(]', '[)', or '[]' that specifies
    whether to include or exclude the start and end values in the range. '(' excludes
    the start, '[' includes the start, ')' excludes the end, and ']' includes the end.
    If the bounds are not specified, the default bound '()' is used.

Usage::

    >>> start = arrow.get(datetime(2013, 5, 5, 12, 30, 10))
    >>> end = arrow.get(datetime(2013, 5, 5, 12, 30, 36))
    >>> arrow.get(datetime(2013, 5, 5, 12, 30, 27)).is_between(start, end)
    True

    >>> start = arrow.get(datetime(2013, 5, 5))
    >>> end = arrow.get(datetime(2013, 5, 8))
    >>> arrow.get(datetime(2013, 5, 8)).is_between(start, end, '[]')
    True

    >>> start = arrow.get(datetime(2013, 5, 5))
    >>> end = arrow.get(datetime(2013, 5, 8))
    >>> arrow.get(datetime(2013, 5, 8)).is_between(start, end, '[)')
    False

z)Cannot parse start date argument type of r  z'Cannot parse end date argument type of r   Ú[r�   Ú])r   r¯   rW   r9   r8  r9  r   )	r_   rŒ   r�   r¦   Úinclude_startÚinclude_endÚ	target_tsÚstart_tsÚend_tss	            r`   Ú
is_betweenÚArrow.is_betweenÍ  sØ   € ôF 	×Ò˜VÔ$ä˜%¤×'Ñ'ÜØ;¼DÀ»K¹?È!ÐLóð ô ˜#œu×%Ñ%ÜÐEÄdÈ5ÃkÁ_ÐTUÐVÓWÐWà˜q™	 SÑ(ˆØ˜Q‘i 3Ñ&ˆà×(Ñ(ˆ	Ø×(Ñ(ˆØ×$Ñ$ˆð ×,Ó, fÔ,÷ 4Ø×6 (Ñ"6÷4à×2 	Ñ 2ð	
rc   c                 ó6   • U R                   R                  5       $ )z…Returns a ``date`` object with the same year, month and day.

Usage::

    >>> arrow.utcnow().date()
    datetime.date(2019, 1, 23)

)rN   r   r×   s    r`   r   Ú
Arrow.date	  ó   € ð �~‰~×"Ñ"Ó$Ð$rc   c                 ó6   • U R                   R                  5       $ )z™Returns a ``time`` object with the same hour, minute, second, microsecond.

Usage::

    >>> arrow.utcnow().time()
    datetime.time(12, 15, 34, 68352)

)rN   r   r×   s    r`   r   Ú
Arrow.time  r„  rc   c                 ó6   • U R                   R                  5       $ )z¶Returns a ``time`` object with the same hour, minute, second, microsecond and
tzinfo.

Usage::

    >>> arrow.utcnow().timetz()
    datetime.time(12, 5, 18, 298893, tzinfo=tzutc())

)rN   Útimetzr×   s    r`   rˆ  ÚArrow.timetz!  s   € ð �~‰~×$Ñ$Ó&Ð&rc   c                 ó8   • U R                   R                  U5      $ )aW  Returns a ``datetime`` object, converted to the specified timezone.

:param tz: a ``tzinfo`` object.

Usage::

    >>> pacific=arrow.now('US/Pacific')
    >>> nyc=arrow.now('America/New_York').tzinfo
    >>> pacific.astimezone(nyc)
    datetime.datetime(2019, 1, 20, 10, 24, 22, 328172, tzinfo=tzfile('/usr/share/zoneinfo/America/New_York'))

)rN   rf   )r_   r   s     r`   rf   ÚArrow.astimezone.  s   € ð �~‰~×(Ñ(¨Ó,Ð,rc   c                 ó6   • U R                   R                  5       $ )z»Returns a ``timedelta`` object representing the whole number of minutes difference from
UTC time.

Usage::

    >>> arrow.now('US/Pacific').utcoffset()
    datetime.timedelta(-1, 57600)

)rN   Ú	utcoffsetr×   s    r`   r�  ÚArrow.utcoffset>  rû   rc   c                 ó6   • U R                   R                  5       $ )zpReturns the daylight savings time adjustment.

Usage::

    >>> arrow.utcnow().dst()
    datetime.timedelta(0)

)rN   Údstr×   s    r`   r�  Ú	Arrow.dstK  s   € ð �~‰~×!Ñ!Ó#Ð#rc   c                 ó6   • U R                   R                  5       $ )zäReturns a ``time.struct_time``, in the current timezone.

Usage::

    >>> arrow.utcnow().timetuple()
    time.struct_time(tm_year=2019, tm_mon=1, tm_mday=20, tm_hour=15, tm_min=17, tm_sec=8, tm_wday=6, tm_yday=20, tm_isdst=0)

)rN   Ú	timetupler×   s    r`   r“  ÚArrow.timetupleW  ó   € ð �~‰~×'Ñ'Ó)Ð)rc   c                 ó6   • U R                   R                  5       $ )zÛReturns a ``time.struct_time``, in UTC time.

Usage::

    >>> arrow.utcnow().utctimetuple()
    time.struct_time(tm_year=2019, tm_mon=1, tm_mday=19, tm_hour=21, tm_min=41, tm_sec=7, tm_wday=5, tm_yday=19, tm_isdst=0)

)rN   Úutctimetupler×   s    r`   r—  ÚArrow.utctimetuplec  s   € ð �~‰~×*Ñ*Ó,Ð,rc   c                 ó6   • U R                   R                  5       $ )znReturns the proleptic Gregorian ordinal of the date.

Usage::

    >>> arrow.utcnow().toordinal()
    737078

)rN   Ú	toordinalr×   s    r`   rš  ÚArrow.toordinalo  r•  rc   c                 ó6   • U R                   R                  5       $ )zcReturns the day of the week as an integer (0-6).

Usage::

    >>> arrow.utcnow().weekday()
    5

)rN   r  r×   s    r`   r  ÚArrow.weekday{  s   € ð �~‰~×%Ñ%Ó'Ð'rc   c                 ó6   • U R                   R                  5       $ )zjReturns the ISO day of the week as an integer (1-7).

Usage::

    >>> arrow.utcnow().isoweekday()
    6

)rN   r´   r×   s    r`   r´   ÚArrow.isoweekday‡  s   € ð �~‰~×(Ñ(Ó*Ð*rc   c                 ó6   • U R                   R                  5       $ )z~Returns a 3-tuple, (ISO year, ISO week number, ISO weekday).

Usage::

    >>> arrow.utcnow().isocalendar()
    (2019, 3, 6)

)rN   ré   r×   s    r`   ré   ÚArrow.isocalendar“  s   € ð �~‰~×)Ñ)Ó+Ð+rc   ÚsepÚtimespecc                 ó8   • U R                   R                  X5      $ )z˜Returns an ISO 8601 formatted representation of the date and time.

Usage::

    >>> arrow.utcnow().isoformat()
    '2019-01-19T18:30:52.442118+00:00'

rÜ   )r_   r¢  r£  s      r`   rÝ   ÚArrow.isoformatŸ  s   € ð �~‰~×'Ñ'¨Ó6Ð6rc   c                 ó6   • U R                   R                  5       $ )zˆReturns a ctime formatted representation of the date and time.

Usage::

    >>> arrow.utcnow().ctime()
    'Sat Jan 19 18:26:50 2019'

)rN   Úctimer×   s    r`   r§  ÚArrow.ctime«  s   € ð �~‰~×#Ñ#Ó%Ð%rc   rá   c                 ó8   • U R                   R                  U5      $ )z¬Formats in the style of ``datetime.strftime``.

:param format: the format string.

Usage::

    >>> arrow.utcnow().strftime('%d-%m-%Y %H:%M:%S')
    '23-01-2019 12:28:17'

)rN   Ústrftime)r_   rá   s     r`   rª  ÚArrow.strftime·  s   € ð �~‰~×&Ñ& vÓ.Ð.rc   c                 ó"   • U R                  5       $ )zŒSerializes for the ``for_json`` protocol of simplejson.

Usage::

    >>> arrow.utcnow().for_json()
    '2019-01-19T18:25:36.760079+00:00'

)rÝ   r×   s    r`   Úfor_jsonÚArrow.for_jsonÅ  s   € ð �~‰~ÓÐrc   c                 óª   • [        U[        [        45      (       a3  U R                  U R                  U-   U R                  R
                  5      $ [        $ rÛ   )rW   r   r   r|   rN   r
   ÚNotImplemented©r_   r(  s     r`   Ú__add__ÚArrow.__add__Ó  s@   € Ü�eœi¬Ð7×8Ñ8Ø×$Ñ$ T§^¡^°eÑ%;¸T¿^¹^×=RÑ=RÓSÐSäÐrc   c                 ó$   • U R                  U5      $ rÛ   )r²  r±  s     r`   Ú__radd__ÚArrow.__radd__Ù  s   € Ø�|‰|˜EÓ"Ð"rc   c                 ó   • g rÛ   r’   r±  s     r`   Ú__sub__ÚArrow.__sub__Ü  ó   € àrc   c                 ó   • g rÛ   r’   r±  s     r`   r¸  r¹  à  rº  rc   c                 óN  • [        U[        [        45      (       a3  U R                  U R                  U-
  U R                  R
                  5      $ [        U[        5      (       a  U R                  U-
  $ [        U[        5      (       a  U R                  UR                  -
  $ [        $ rÛ   )	rW   r   r   r|   rN   r
   r^   r9   r°  r±  s     r`   r¸  r¹  ä  s|   € Ü�eœi¬Ð7×8Ñ8Ø×$Ñ$ T§^¡^°eÑ%;¸T¿^¹^×=RÑ=RÓSÐSä˜œ{×+Ñ+Ø—>‘> EÑ)Ð)ä˜œu×%Ñ%Ø—>‘> E§O¡OÑ3Ð3äÐrc   c                 óT   • [        U[        5      (       a  XR                  -
  $ [        $ rÛ   )rW   r^   rN   r°  r±  s     r`   Ú__rsub__ÚArrow.__rsub__ð  s"   € Ü�eœ[×)Ñ)ØŸ>™>Ñ)Ð)äÐrc   c                 óv   • [        U[        [        45      (       d  gU R                  U R	                  U5      :H  $ )NF)rW   r9   r^   rN   r•   r±  s     r`   Ú__eq__ÚArrow.__eq__ø  s1   € Ü˜%¤%¬Ð!5×6Ñ6Øà�~‰~ ×!3Ñ!3°EÓ!:Ñ:Ð:rc   c                 óf   • [        U[        [        45      (       d  gU R                  U5      (       + $ )NT)rW   r9   r^   rÁ  r±  s     r`   Ú__ne__ÚArrow.__ne__þ  s)   € Ü˜%¤%¬Ð!5×6Ñ6Øà—;‘;˜uÓ%Ô%Ð%rc   c                 ó€   • [        U[        [        45      (       d  [        $ U R                  U R                  U5      :„  $ rÛ   ©rW   r9   r^   r°  rN   r•   r±  s     r`   Ú__gt__ÚArrow.__gt__  ó4   € Ü˜%¤%¬Ð!5×6Ñ6Ü!Ð!à�~‰~ × 2Ñ 2°5Ó 9Ñ9Ð9rc   c                 ó€   • [        U[        [        45      (       d  [        $ U R                  U R                  U5      :¬  $ rÛ   rÇ  r±  s     r`   Ú__ge__ÚArrow.__ge__
  ó4   € Ü˜%¤%¬Ð!5×6Ñ6Ü!Ð!à�~‰~ ×!3Ñ!3°EÓ!:Ñ:Ð:rc   c                 ó€   • [        U[        [        45      (       d  [        $ U R                  U R                  U5      :  $ rÛ   rÇ  r±  s     r`   Ú__lt__ÚArrow.__lt__  rÊ  rc   c                 ó€   • [        U[        [        45      (       d  [        $ U R                  U R                  U5      :*  $ rÛ   rÇ  r±  s     r`   Ú__le__ÚArrow.__le__  rÎ  rc   Útz_exprc                 óä   • U c  [         R                  $ [        U [        5      (       a  U $  [        R
                  R                  U 5      $ ! [        R                   a    [        U < S35      ef = f)z1Get normalized tzinfo object from various inputs.z not recognized as a timezone.)	r   rV   rW   rX   r   rZ   r[   ÚParserErrorrs   )rÕ  s    r`   r”   ÚArrow._get_tzinfo  sl   € ð ‰?Ü—<‘<ÐÜ�gœy×)Ñ)ØˆNðOÜ×*Ñ*×0Ñ0°Ó9Ð9øÜ×%Ñ%ó OÜ  G¡;Ð.LÐ!MÓNÐNðOús   ¬A Á$A/Úexprc                 ó  • [        U[        5      (       a  UR                  $ [        U[        5      (       a  U$ [        R
                  " U5      (       a&  [        U5      nU R                  U5      R                  $ [        U< S35      e)z0Get datetime object from a specified expression.z+ not recognized as a datetime or timestamp.)	rW   r9   r   r^   r   rr   ru   ry   rs   )rh   rÙ  rn   s      r`   r•   ÚArrow._get_datetime*  sq   € ô
 �dœE×"Ñ"Ø—=‘=Ð Ü˜œk×*Ñ*ØˆKÜ×Ò˜t×$Ñ$Ü˜d›ˆIØ×'Ñ'¨	Ó2×;Ñ;Ð;ä ™xÐ'RÐSÓTÐTrc   c                 óÜ   • XR                   ;   a  X S3S4$ US   S:X  a  USS U R                   ;   a  USS US4$ US;   a  gUS;   a  gS	R                  / S
Q5      n[        SU SU S35      e)zªFinds relevant timeframe and steps for use in range and span methods.

Returns a 3 element tuple in the form (frame, plural frame, step), for example ("day", "days", 1)

r?   r�   r®   N)r1   r2   )r1   r2   r�   )r3   r4   )r3   r&   rA   r  )	zyear(s)zmonth(s)zday(s)zhour(s)z	minute(s)z	second(s)zmicrosecond(s)zweek(s)z
quarter(s)zRange or span over frame z" not supported. Supported frames: r  )r>   r  rs   )rh   rç   Ú	supporteds      r`   r“   ÚArrow._get_frames9  sž   € ð —:‘:ÓØ˜6 ˜ QÐ&Ð&Ø�"‰X˜‹_  c r ¨c¯j©jÓ!8Ø˜˜�9˜d AÐ%Ð%ØÐ&Ó&Ø%ØÐ,Ó,Ø)àŸ	™	ò
óˆIô Ø+¨D¨6Ð1SÐT]ÐS^Ð^_Ð`óð rc   c                 óp   • Uc  Uc  [        S5      eU R                  U4$ Uc  U[        R                  4$ X4$ )z3Sets default end and limit values for range method.z$One of 'end' or 'limit' is required.)rs   r=   ÚsysÚmaxsize)rh   r�   rŽ   s      r`   r—   ÚArrow._get_iteration_paramsZ  sF   € ð ‰;Ø‰}Ü Ð!GÓHÐHà—7‘7˜E�>Ð!ð ‰}ØœCŸK™KÐ'Ð'Ø�:Ðrc   c                 ó”   • [        [        U R                  5      [        R                  " U R
                  U R                  5      S   :H  $ )zOReturns a boolean indicating whether the datetime is the last day of the month.r�   )r   rê   r'   ÚcalendarÚ
monthranger#   r%   r   s    r`   r™   ÚArrow._is_last_day_of_monthh  s5   € ô ”C˜Ÿ™Ó"¤h×&9Ò&9¸$¿)¹)ÀTÇZÁZÓ&PÐQRÑ&SÑSÐSrc   rô   )r   r   r   r   NrÛ   )rP   r9   )NNN)r�   r5   Fr�   )NNr5   F)r�   Nr5   F)T)Úen_us)r6   )ÚTr7   )vrÕ   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r^   r;   r   r   Ú__annotations__r>   r   r   r\   r@   rB   rê   rD   rF   rG   rH   rI   rJ   ru   rK   rL   rM   r   r"   r   ÚTZ_EXPRr   ra   ÚclassmethodrX   re   rl   r   rv   ry   r|   r   r   r„   r‰   Ú	_T_FRAMESr   r£   Ú_BOUNDSÚboolr   r»   r·   rº   r   rÈ   rÊ   rØ   rÖ   râ   rå   rï   Úpropertyr
   r   r÷   rn   rý   r   rT   r  r  r  r–   r˜   r"  r    rá   Ú_GRANULARITYrF  rv  r€  Údt_timer   rˆ  rf   r�  r�  r   r“  r—  rš  r  r´   ré   rÝ   r§  rª  r­  r²  r   rµ  r   r¸  r¾  rÁ  rÄ  rÈ  rÌ  rÐ  rÓ  Ústaticmethodr”   r•   r“   r—   r™   Ú__static_attributes__)Ú.0Úas   00r`   r9   r9   N   sÁ
  ‡ ñð@ '2×&<Ñ&<€J�˜Ñ#Ó<Ø	�'Ñ	ÓØ	�'Ñ	Óò €FˆE�$�s‘)Ñó ñ 9?Ô&?º°1¨¨A£w¹Ò&?€M�5˜˜c™Ñ#Ó?Ø&'Ð˜˜s™Ó'Ø#%Ð�e˜C‘jÓ%Ø#%Ð�e˜C‘jÓ%Ø!(€N�E˜#‘JÓ(Ø ,€M�5˜‘:Ó,Ø!1€N�E˜#‘JÓ1Ø$7€O�U˜5‘\Ó7Ø&=Ð�u˜U‘|Ó=Ø!3€N�E˜#‘JÓ3ð Ø"ØØØØ Ø$Øñ	:€Iˆu�WÐ-¨uÐ4Ñ5Ñ6ó 	ð Óð ØØØØ$(ñ
àð
ð ð
ð ð	
ð
 ð
ð ð
ð ð
ð ð
ð ˜Ñ!ð
ð ð
ð 
õ
ðB ñ
˜ )Ñ,ð 
¸ô 
ó ð
ð< ó
ó ð
ð2 ð %)ñ"
à˜˜e S˜Ñ)ð"
ð ˜Ñ!ð"
ð 
ô	"
ó ð"
ðH ð
¨¨s°E¸3¨Ñ)?ð 
ÀGó 
ó ð
ð2 ñ!
˜kð !
°8¸GÑ3Dð !
ÐPWô !
ó ð!
ðF ñC˜Dð C¨(°7Ñ*;ð CÀwô Có ðCð àBFñ 
Øð 
Ø!$ð 
Ø.6°wÑ.?ð 
à	ô 
ó ð 
ðD ð
 #ð 
¨'ó 
ó ð
ð: ð
 26Ø $Ø#ñT<àðT<ð �W˜kÐ)Ñ*ðT<ð �7˜K¨Ð-Ñ.ð	T<ð
 �WÑðT<ð ˜‰}ðT<ð 
Ð&Ñ	'ôT<ó ðT<ðr ØØØñ\àð\ð ð\ð ð	\ð
 ð\ð ð\ð 
ÐÑ	 õ\ð|-˜9ð -°ð -¸ô -ð,-˜)ð -¨sð -°wô -ð, ð !%Ø#ØØñOàðOð ðOð ð	Oð
 �WÑðOð ˜‰}ðOð ðOð ðOð 
�%Ð(Ñ)Ñ	*ôOó ðOðb ð Ø $ØØñCàðCð ðCð ð	Cð
 ðCð �WÑðCð ðCð ðCð 
�%Ð(Ñ)Ñ	*ôCó ðCðNA˜#ô Að*˜ô *ð Cð ¨Cô ð)˜#ô )ð
> ð >¨ô >ð ð6˜	ó 6ó ð6ð ð˜+ó ó ðð ð3�{ó 3ó ð3ð *˜5ô *ð ð%˜só %ó ð%ð ð  ó  ó ð ð ð#�có #ó ð#ð
 ð>˜4ó >ó ð>ð ð?˜4ó ?ó ð?ô
1ð,* ð ,*¨ô ,*ñ\;* Tð ;*¸Cð ;*ÀGõ ;*ðz,
�Wð ,
 ô ,
ðb 1ÀñOØðOØ:=ðOà	õOð< 48Ø$Ø#Ø?EñQà�W˜k¨4Ð/Ñ0ðQð ðQð ð	Qð
 ˜<¨¨lÑ);Ð;Ñ<ðQð 
õQñfIH sð IH°Cð IHÀgõ IHðb ñ	8
àð8
ð ð8
ð ð	8
ð
 
õ8
ðx
%�dô 
%ð
%�gô 
%ð'˜ô 'ð-˜X iÑ0ð -°[ô -ð *˜8 IÑ.ô *ð
$�X˜iÑ(ô 
$ð
*˜;ô 
*ð
-˜kô 
-ð
*˜3ô 
*ð
(˜ô 
(ð
+˜Cô 
+ð
,˜U 3¨¨S =Ñ1ô 
,ñ
7˜Sð 
7°#ð 
7À3õ 
7ð
&�sô 
&ð/˜sð / sô /ð
 ˜#ô 
 ð˜Sð  Wô ð#˜e I¨}Ð$<Ñ=ð #À'ô #ð ð˜U 9¨mÐ#;Ñ<ð Àó ó ðð ð˜U ;°Ð#7Ñ8ð ¸Yó ó ðð
˜Sð 
 U¨9°gÐ+=Ñ%>ô 
ð˜cð  iô ð;˜Cð ; Dô ;ð&˜Cð & Dô &ð:˜Cð : Dô :ð;˜Cð ; Dô ;ð:˜Cð : Dô :ð;˜Cð ; Dô ;ð ð
O˜X gÑ.ð 
O°9ó 
Oó ð
Oð ðUØ˜ +¨s°E¸3Ð>Ñ?ðUà	óUó ðUð ð˜yð ¨U°3¸¸S°=Ñ-Aó ó ðð@ ð¨ð °H¸S±Mð ÀeÈCÐQTÈHÁoó ó ðð ðT Gð T°ó Tó óTùó[7 '@s   ÁSr9   )6rì  rä  rQ  rà  r   r   r^   r   rõ  r   r   r
   rX   Úmathr   r   Útypingr   r   r   r   r   r   r   r   r   r   r   r   r   Údateutilr   r  Údateutil.relativedeltar   Úarrowr   r   r   r   Úarrow.constantsr    r!   Úarrow.localesr"   r\   rî  rð  rñ  rô  r9   r|   r<   r=   r’   rc   r`   Ú<module>r     sÈ   ðñó Û 	Û 
Ý Ý ,Ý $ß (Ý (Ý Ý ÷÷ ÷ õ õ  'Ý 0ç 2Ó 2ß >Ý *à
�	˜3�Ñ
€àðñ€	ð* Ð(Ñ
)€àðñ
€÷]Tñ ]Tð@9 ×Ñ˜{Ÿ™Ó/€„	Ø×Ñ˜{Ÿ™Ó/€…	rc   