
    (ph                        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	  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  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)  \RT                  S:  a	  SSK+J,r,J-r-  OSSKJ,r,J-r-  \\\.4   r/\-S   r0\-S   r1\-S   r2 " S S5      r3\3Ri                  \Rj                  5      \3l5        \3Ri                  \Rl                  5      \3l6        g)z_
Provides the :class:`Arrow <arrow.arrow.Arrow>` class, an enhanced ``datetime``
replacement.

    Ndate)datetime)time)	timedeltatzinfo)trunc)struct_time)AnyClassVar	GeneratorIterableListMappingOptionalTupleUnioncastoverload)tz)relativedelta)	formatterlocalesparserutil)DEFAULT_LOCALEDEHUMANIZE_LOCALES)TimeFrameLiteral)      )FinalLiteral)yearyearsmonthmonthsdaydayshourhoursminuteminutessecondsecondsmicrosecondmicrosecondsweekweeksquarterquarters)[)()z(]z[])	autor.   r,   r*   r(   r2   r&   r4   r$   c                   l	   \ 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\\\\\\\S.r\\\\4      \	S'   \\	S'        SS\S \S!\S"\S#\S$\S%\S&\\   S'\S(S4S) jjr\ SS&\\!   S(S 4S* jj5       r"\ SS+ j5       r#\  SS,\$\\\4   S&\\   S(S 4S- jj5       r%\ S,\$\\\4   S(S 4S. j5       r&\ SS/\S&\\   S(S 4S0 jj5       r'\ SS1\(S&\\   S(S 4S2 jj5       r)\  SS3\S4\S&\\   S(S 4S5 jj5       r*\ S6\S(S 4S7 j5       r+\    SS8\,S9\$S \4   S:\$S \S4   S;\\   S<\\   S(\-S=   4S> jj5       r.    SS8\,S@\SA\/SB\0SC\S(\1SD   4SE jjr2S8\,S(S 4SF jr3S8\,S(S 4SG jr4\     SS8\,S9\S:\S;\\   S<\\   SA\/SB\0S(\5\1SD      4SH jj5       r6\     SS8\,S9\S:\SI\S;\\   SA\/SB\0S(\5\1SD      4SJ jj5       r7S(\4SK jr8S(\4SL jr9SM\S(\4SN jr:S(\4SO jr;SP\S(\4SQ jr<\=S(\!4SR j5       r>\=S(\4SS j5       r?\=S(\4ST j5       r@S(\4SU jrA\=S(\4SV j5       rB\=S(\4SW j5       rC\=S(\4SX j5       rD\=S(\04SY j5       rE\=S(\04SZ j5       rFSS[ jrGS'\S(S 4S\ jrHS'\S(S 4S] jrIS;\S(S 4S^ jrJS_\K4S4\S`\S(\4Sa jjrLS\KS?Sb4Sc\$S \S4   S`\Sd\0Se\$\M\\M   4   S(\4
Sf jjrNSSg\S`\S(S 4Sh jjrO SS9S S:S SA\/S(\04Si jjrPS(\(4Sj jr(S(\Q4Sk jrRS(\Q4Sl jrSS;\\!   S(\4Sm jrTS(\\   4Sn jrUS(\\   4So jrVS(\W4Sp jrXS(\W4Sq jrYS(\4Sr jrZS(\4Ss jr[S(\4St jr\S(\1\\\4   4Su jr]SSv\Sw\S(\4Sx jjr^S(\4Sy jr_Sz\S(\4S{ jr`S(\4S| jraSc\S(S 4S} jrbSc\$\\c4   S(S 4S~ jrd\eSc\$\\c4   S(S 4S j5       rf\eSc\$\S 4   S(\4S j5       rfSc\S(\$\S 4   4S jrfSc\S(\4S jrgSc\S(\04S jrhSc\S(\04S jriSc\S(\04S jrjSc\S(\04S jrkSc\S(\04S jrlSc\S(\04S jrm\nS\\   S(\!4S j5       ro\ S\$S \\\\4   S(\4S j5       rp\ SP\,S(\1\\\4   4S j5       rq\ S:\S<\\   S(\1\\4   4S j5       rr\nS1S S(\04S j5       rsSrtgs  snn f )ArrowS   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.   r0   _ATTRSs_ATTRS_PLURALr    _MONTHS_PER_QUARTER<   _SECS_PER_MINUTEi  _SECS_PER_HOURiQ _SECS_PER_DAYi:	 _SECS_PER_WEEKg    DA_SECS_PER_MONTHg    P(^A_SECS_PER_QUARTERi3_SECS_PER_YEARg      ?)r.   r,   r*   r(   r2   r&   r4   r$   	_SECS_MAP	_datetimeNr$   r&   r(   r*   r,   r.   r0   r	   kwargsreturnc	                    Uc  [         R                  " 5       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   rR   )dateutil_tztzutc
isinstance	dt_tzinfohasattrrQ   r   TzinfoParserparsestrgetdt_datetimerL   )selfr$   r&   r(   r*   r,   r.   r0   r	   rM   rR   s              >/var/www/html/venv/lib/python3.13/site-packages/arrow/arrow.py__init__Arrow.__init__   s     > &&(F vy))
++''((..v{{;F$$((..v6Fzz&!$$FKd
    c                 0   Uc  [         R                  " 5       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]>

rR   r   rS   )rT   tzlocalr]   nowr$   r&   r(   r*   r,   r.   r0   r	   getattr)clsr	   dts      r_   re   	Arrow.now   sv     > ((*F__V$GGHHFFGGIIIINNIIVQ'

 
	
rb   c                 &   [         R                  " [        R                  " 5       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	$ )zConstructs an :class:`Arrow <arrow.arrow.Arrow>` object, representing "now" in UTC
time.

Usage::

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

rR   r   rS   )r]   re   rT   rU   r$   r&   r(   r*   r,   r.   r0   r	   rf   )rg   rh   s     r_   utcnowArrow.utcnow   sl     __[..01GGHHFFGGIIIINNIIVQ'

 
	
rb   	timestampc                 .   Uc  [         R                  " 5       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.rR   r   rS   )rT   rd   rV   r[   r   rY   rZ   r   is_timestamp
ValueErrornormalize_timestampfloatr]   fromtimestampr$   r&   r(   r*   r,   r.   r0   r	   rf   )rg   rm   r	   rh   s       r_   ru   Arrow.fromtimestamp   s     > ((*F$$((..v6F  ++6ym<PQQ,,U9-=>	&&y9GGHHFFGGIIIINNIIVQ'

 
	
rb   c                    [         R                  " U5      (       d  [        SU< S35      e[         R                  " [	        U5      5      n[
        R                  " U5      nU " UR                  UR                  UR                  UR                  UR                  UR                  UR                  [        R                  " 5       [!        USS5      S9	$ )zConstructs 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.

ro   rp   rR   r   rS   )r   rq   rr   rs   rt   r]   utcfromtimestampr$   r&   r(   r*   r,   r.   r0   rT   rU   rf   )rg   rm   rh   s      r_   rx   Arrow.utcfromtimestamp  s       ++6ym<PQQ,,U9-=>	)))4GGHHFFGGIIIINNVQ'

 
	
rb   rh   c                 $   Uc/  UR                   c  [        R                  " 5       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]>

rR   r   rS   )r	   rT   rU   r$   r&   r(   r*   r,   r.   r0   rf   )rg   rh   r	   s      r_   fromdatetimeArrow.fromdatetime1  sw    $ >yy $**,GGHHFFGGIIIINNVQ'

 
	
rb   r   c                     Uc  [         R                  " 5       nU " UR                  UR                  UR                  US9$ )zConstructs 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   )rT   rU   r$   r&   r(   )rg   r   r	   s      r_   fromdateArrow.fromdateU  s4     > &&(F499djj$((6BBrb   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]>

rR   r   rS   )r]   strptimer	   r$   r&   r(   r*   r,   r.   r0   rf   )rg   r   r   r	   rh   s        r_   r   Arrow.strptimed  so    & !!(0>YYFGGHHFFGGIIIINNVQ'

 
	
rb   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	$ )zConstructs 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]>

rR   r   rS   )r   validate_ordinalr]   fromordinalr$   r&   r(   r*   r,   r.   r0   r	   rf   )rg   r   rh   s      r_   r   Arrow.fromordinal  ss     	g&$$W-GGHHFFGGIIIINNIIVQ'

 
	
rb   framestartendr   limit)r:   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[        X5      PM     nnU " USU	06R                  " 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	   )r&   r4   r$   T)r(    )_get_frames_get_tzinfor	   _get_datetimereplace_get_iteration_paramsr{   r(   r?   rf   shift_is_last_day_of_month)rg   r   r   r   r   r   _frame_relativerelative_stepsr	   currentoriginal_dayday_is_clippedifvaluess                   r_   rangeArrow.range  sQ    v -0OOE,B)>D!!%(000?..s:
$,,F,;""5)yynFAM36::>:agg):F>61&177 !2G 44|9S!%c&?&?&H&H!//l/; nnn ?s   CEEA)E	EFcountboundsexact
week_start)r:   r:   c                 X   SUs=::  a  S::  d  O  [        S5      e[        R                  " U5        U R                  U5      u  pgnUS:X  a  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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]>)

r      z,week_start argument must be between 1 and 7.r2   r(   r4   r&   Nr    r	   r   )r)   )r'   (r1   )r   )rr   r   validate_boundsr   r?   indexrf   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   b J#!#KLLV$9=9I9I%9P6V#Dy(D!DKK%%d+E[[519-F0671gd&F71s6{?+a  , NNF?4;;?E''//*;;4??+<z+I)JU)RS9,djj1n-A+BC{{Fnn.DEF!9KKRK0E!9::2:.Dd{- 8s   F'c                 *    U R                  U5      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...).

Usage::

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

r   r   r^   r   s     r_   r   Arrow.floorX       yy""rb   c                 *    U R                  U5      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...).

Usage::

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

r   r   r   s     r_   r   
Arrow.ceili  r   rb   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  pX:  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X4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   )rg   r   r   r   r   r   r   r   r	   _rangerr   r   s                r_   
span_rangeArrow.span_rangez  s     | D  /44U4HKs+5%8ffUf??  A&&U&CKEz!9#Mr::D|B773>+ 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  pM     X4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)rr   iterr   nextr   StopIteration)rg   r   r   r   r   r   r   r   	spanRange
intvlStartintvlEndr   s               r_   r   Arrow.interval  s     h a<DEENN5NM
	 	'+I$
x!|,A!&*9o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>>**+2dlln-=R@@rb   c                 6    U R                   R                  5       $ NrL   	isoformatr   s    r_   r   Arrow.__str__  s    ~~''))rb   	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))4yrb   c                 6    U R                   R                  5       $ r   )rL   __hash__r   s    r_   r   Arrow.__hash__   s    ~~&&((rb   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      $ )Nr2   r   r4   r   )
isocalendarintr&   rB   
startswithrf   rL   r   object__getattribute__)r^   r   values      r_   __getattr__Arrow.__getattr__%  s    6>##%a((9

Q$*B*BBCaGGs###*4>>4#FE C00<==rb   c                 J    [        [        U R                  R                  5      $ )zGets the ``tzinfo`` of the :class:`Arrow <arrow.arrow.Arrow>` object.

Usage::

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

)r   rW   rL   r	   r   s    r_   r	   Arrow.tzinfo4  s     It~~4455rb   c                     U R                   $ )zReturns 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())

rL   r   s    r_   r   Arrow.datetimeC  s     ~~rb   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   )rL   r   r   s    r_   naiveArrow.naiveQ  s     ~~%%T%22rb   c                 6    U R                   R                  5       $ )zReturns a timestamp representation of the :class:`Arrow <arrow.arrow.Arrow>` object, in
UTC time.

Usage::

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

)rL   rm   r   s    r_   rm   Arrow.timestampb       ~~''))rb   c                 4    [        U R                  5       5      $ )zReturns an integer timestamp representation of the :class:`Arrow <arrow.arrow.Arrow>` object, in
UTC time.

Usage::

    >>> arrow.utcnow().int_timestamp
    1548260567

)r   rm   r   s    r_   int_timestampArrow.int_timestampo  s     4>>#$$rb   c                 "    U R                  5       $ )zReturns a floating-point timestamp representation of the :class:`Arrow <arrow.arrow.Arrow>`
object, in UTC time.

Usage::

    >>> arrow.utcnow().float_timestamp
    1548260516.830896

)rm   r   s    r_   float_timestampArrow.float_timestamp}  s     ~~rb   c                 .    U R                   R                  $ )zLReturns the ``fold`` value of the :class:`Arrow <arrow.arrow.Arrow>` object.)rL   rR   r   s    r_   rR   
Arrow.fold  s     ~~"""rb   c                 B    [         R                  " U R                  5      $ )zrIndicates whether the :class:`Arrow <arrow.arrow.Arrow>` object is a repeated wall time in the current
timezone.

)rT   datetime_ambiguousrL   r   s    r_   	ambiguousArrow.ambiguous  s     --dnn==rb   c                 L    [         R                  " U R                  5      (       + $ )z`Indicates whether the :class: `Arrow <arrow.arrow.Arrow>` object exists in the current timezone.)rT   datetime_existsrL   r   s    r_   	imaginaryArrow.imaginary  s     ..t~~>>>rb   c                 8    U R                  U R                  5      $ )zReturns a new :class:`Arrow <arrow.arrow.Arrow>` object, cloned from the current one.

Usage:

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

)r{   rL   r   s    r_   cloneArrow.clone  s       00rb   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]>

)r2   r4   zSetting absolute z is not supported.)r	   rR   zUnknown attribute: .r	   r   rR   rS   r   )itemsr?   rr   rL   r   r\   r   r{   )r^   rM   absolute_kwargskeyr   r   r	   rR   s           r_   r   Arrow.replace  s    *  ,,.JCkk!',$++ #4SE9K!LMM.. #6sgQ!?@@ ) ..((;?;H%%%f-FooVo4Gzz&!oo4o0G  ))rb   c                    0 n/ SQnUR                  5        HJ  u  pEX@R                  ;   d  XC;   a  XRU'   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[        R                  " U5      (       d  [        R                  " U5      nU R                  U5      $ )	al  Returns a new :class:`Arrow <arrow.arrow.Arrow>` object with attributes updated
according to inputs.

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]>

)r3   r5   weekday, z>Invalid shift time frame. Please select one of the following: r  r'   r   r5   r   )r  rA   joinrr   
setdefaultpoprB   rL   r   rT   r  resolve_imaginaryr{   )r^   rM   relative_kwargsadditional_attrsr  r   supported_attrr   s           r_   r   Arrow.shift  s    < ; ,,.JC(((C,C',$!%4+=+=@P+P!Q TUcTddef  ) 	""8Q/!
A.1I1II	
! ..=#C?#CC**733!33G<G  ))rb   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]>

rR   r   rS   )rV   rW   r   rY   rZ   rL   
astimezoner   r$   r&   r(   r*   r,   r.   r0   r	   rf   )r^   r   rh   s      r_   toArrow.to  s    : "i(($$**2.B^^&&r*~~GGHHFFGGIIIINNIIVQ'  

 
	
rb   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.

: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   rL   )r^   r   r"  s      r_   r   Arrow.formatC  s&    2 **6299$..#NNrb   r8   otheronly_distancegranularityc                   ^ ^^^ Un[         R                  " U5      nUc[  [        R                  " 5       R	                  [
        R                  " 5       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XS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XS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XS9$ U
T R2                  S-  :  a  UR+                  STUS9$ U
T R4                  :  a,  T[1        U	T R2                  -  S5      -  nUR+                  SXS9$ U
T R4                  S-  :  a  UR+                  STUS9$ U
T R6                  :  a,  T[1        U	T R4                  -  S5      -  nUR+                  SXS9$ U
T R6                  S-  :  a  UR+                  STUS9$ U
T R8                  :  ax  T R                  R:                  S-  T R                  R<                  -   nUR:                  S-  UR<                  -   nT[1        [)        UU-
  5      S5      -  nUR+                  SUUS9$ U
T R8                  S-  :  a  UR+                  STUS9$ T[1        U	T R8                  -  S5      -  nUR+                  SUUS9$ [        T[>        5      (       Ga,  [A        [B        T5      mTS:X  a.  T[E        U	5      -  n[)        U5      S:  a  UR+                  S
US9$ OTS:X  a  TU	-  T R,                  -  nOTS:X  a  TU	-  T R.                  -  nOTS:X  a  TU	-  T R2                  -  nOoTS:X  a  TU	-  T R4                  -  nOVTS:X  a  TU	-  T R6                  -  nO=TS:X  a  TU	-  T RF                  -  nO$TS:X  a  TU	-  T R8                  -  nO[I        S5      e[K        [)        U5      5      S:w  a  TS-  mUR+                  TUUS9$ T(       d  [I        S5      e/ mS [D        S![B        S"[D        4UU UU4S# jjn[E        U	5      nS$nU H  nU" UU5      nM     [!        T5      [!        T5      :  a  [I        S5      eURM                  TUS9$ ! [N         a  n[I        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   r8   
   re   )r'  r/      r,   r-   r*   r+   r(   r)   r2   r3   r&      r'   r$   r%   r.   r4   z|Invalid level of granularity. Please select between 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter' or 'year'.r@   zEmpty granularity list provided. Please select one or more from 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year'._delta_framerN   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@   )rK   r
   absr   r   r   )r-  r.  r   r(  r^   sign
timeframess      r_   gather_timeframes)Arrow.humanize.<locals>.gather_timeframes  s    , $vv0F F$.."88 U,1&--!%&6!Eu M
 "M '--vo>!Mrb   )r$   r4   r&   r2   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]   rk   r   rT   rU   r  rL   r	   rV   r:   	TypeErrortyper   listr   r   roundtotal_secondsr0  describerD   rE   r>   rF   rG   rH   rJ   r$   r&   r[   r   r   rt   rI   rr   r
   describe_multiKeyError)r^   r&  r"  r'  r(  locale_nameutcrh   r-  delta_seconddiffr/   r-   r+   r)   r3   self_monthsother_monthsr'   r%   r   r3  r   r   er1  r2  s   `   `                    @@r_   humanizeArrow.humanize^  s   8 ##F+=$$&..k6G6G6I.JC 5 56Bu%%B{++||#]]$..*?*?]@%%dnn&;&;< 3DK4H4H3K LE E 
 k4((S-=-B%a.KUDNNR/>>@ABaZrQ!&k)E	f$"9!??5?NN$///"\1G!??!7 +   D11A55!??8T?WWD///"S9N9N)NPQ%RRG!??!7 +   D//!33!??64}?UUD... 3|t7J7J'JA#NNE!??7E?WWD..22!??5$m?TTD///#ld6H6H&H!"LLD!??64?UUD//!33!??64}?UUD000 3|t7J7J'JA#NNE!??7E?WWD00144!??7D?VVD///"&.."5"5":T^^=Q=Q"QK#%77R<"((#:L!CL;,F(G$KKF!?? & +   D//!33!??64}?UU 3|t7J7J'JA#NNE!??7E?WWK--"#3[A(* 5#66E5zA~%uMRR & H, </$2G2GGE F* </$2E2EEE E) </$2D2DDE F* </$2E2EEE G+ </$2F2FFE I- </$2H2HHE F* </$2E2EEE$y 
 U$)3&K{EWW #$@ 
 DF

"e 
"=M 
"RW 
" 
" l+	8 $E-eU;E $ z?S%55$y 
 ,,Z},UU 	&qc)YZeYh iH H 	s|   X 8$X #X ;X =#X !;X #X ;X =#X !;X #X BX 	#X -,X AX 3C(X BX 
Y)X<<Y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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)   r3   r'   r%   r   )re   r/   r-   r+   r)   r3   r'   r%   Fz\d+z	(^|\b|\d)r   re   Tr   r@    zInput 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.*^$zInvalid 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   r5  lowerr   r   rr   r{   rL   dictfromkeysrecompiler2  r  rV   r   r[   r   searchgroup	isnumericr0  r   anyfuturefindallpastr   )r^   rG  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  sF   6 ''/
 "(!7!7S!A!);;<VH  ES  T  ((8  ==OQR

 }}V
 jj( ",!6!6!<!<!>D+w//$/!%)3{+;$<!
 ,=+B+B+D'
 #K 0 - 4 4V < **	-%AB|4 ${{}'..|<	 !!+!5!5!7!7SZ=Q ! $'y'8#9L 5=)-L& '*$i## 34R8C?Cb# 9E !454801I ,E "?b \%7%7%9?%9TQQD%9?@@E  #))%,,T2qq$9:-55lC oo!((.zzQ{m1"56)11,? H!H% H9  5E4J4J4LM4LDAq8a<4LM!!1L11E @@ 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   rV   r:   r6  r7  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%%Ed5k_TUVWWq	S(Qi3&((	(($$ ,,f, 46("642	 2	
rb   c                 6    U R                   R                  5       $ )zReturns a ``date`` object with the same year, month and day.

Usage::

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

)rL   r   r   s    r_   r   
Arrow.date       ~~""$$rb   c                 6    U R                   R                  5       $ )zReturns a ``time`` object with the same hour, minute, second, microsecond.

Usage::

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

)rL   r   r   s    r_   r   
Arrow.time  r  rb   c                 6    U R                   R                  5       $ )zReturns a ``time`` object with the same hour, minute, second, microsecond and
tzinfo.

Usage::

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

)rL   timetzr   s    r_   r  Arrow.timetz  s     ~~$$&&rb   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'))

)rL   r  )r^   r   s     r_   r  Arrow.astimezone  s     ~~((,,rb   c                 6    U R                   R                  5       $ )zReturns a ``timedelta`` object representing the whole number of minutes difference from
UTC time.

Usage::

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

)rL   	utcoffsetr   s    r_   r  Arrow.utcoffset  r   rb   c                 6    U R                   R                  5       $ )zpReturns the daylight savings time adjustment.

Usage::

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

)rL   dstr   s    r_   r  	Arrow.dst)  s     ~~!!##rb   c                 6    U R                   R                  5       $ )zReturns 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)

)rL   	timetupler   s    r_   r  Arrow.timetuple5       ~~''))rb   c                 6    U R                   R                  5       $ )zReturns 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)

)rL   utctimetupler   s    r_   r  Arrow.utctimetupleA  s     ~~**,,rb   c                 6    U R                   R                  5       $ )znReturns the proleptic Gregorian ordinal of the date.

Usage::

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

)rL   	toordinalr   s    r_   r  Arrow.toordinalM  r  rb   c                 6    U R                   R                  5       $ )zcReturns the day of the week as an integer (0-6).

Usage::

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

)rL   r  r   s    r_   r  Arrow.weekdayY  s     ~~%%''rb   c                 6    U R                   R                  5       $ )zjReturns the ISO day of the week as an integer (1-7).

Usage::

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

)rL   r   r   s    r_   r   Arrow.isoweekdaye  s     ~~((**rb   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)

)rL   r   r   s    r_   r   Arrow.isocalendarq  s     ~~))++rb   septimespecc                 8    U R                   R                  X5      $ )zReturns 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6rb   c                 6    U R                   R                  5       $ )zReturns a ctime formatted representation of the date and time.

Usage::

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

)rL   ctimer   s    r_   r  Arrow.ctime  s     ~~##%%rb   r   c                 8    U R                   R                  U5      $ )zFormats 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'

)rL   strftime)r^   r   s     r_   r  Arrow.strftime  s     ~~&&v..rb   c                 "    U R                  5       $ )zSerializes 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     ~~rb   c                     [        U[        [        45      (       a3  U R                  U R                  U-   U R                  R
                  5      $ [        $ r   )rV   r   r   r{   rL   r	   NotImplementedr^   r&  s     r_   __add__Arrow.__add__  s@    ei788$$T^^e%;T^^=R=RSSrb   c                 $    U R                  U5      $ r   )r  r  s     r_   __radd__Arrow.__radd__  s    ||E""rb   c                     g r   r   r  s     r_   __sub__Arrow.__sub__      rb   c                     g r   r   r  s     r_   r  r    r  rb   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   )	rV   r   r   r{   rL   r	   r]   r:   r  r  s     r_   r  r    s|    ei788$$T^^e%;T^^=R=RSS{++>>E))u%%>>EOO33rb   c                 T    [        U[        5      (       a  XR                  -
  $ [        $ r   )rV   r]   rL   r  r  s     r_   __rsub__Arrow.__rsub__  s"    e[))>>))rb   c                 v    [        U[        [        45      (       d  gU R                  U R	                  U5      :H  $ )NF)rV   r:   r]   rL   r   r  s     r_   __eq__Arrow.__eq__  s1    %%!566~~!3!3E!:::rb   c                 f    [        U[        [        45      (       d  gU R                  U5      (       + $ )NT)rV   r:   r]   r  r  s     r_   __ne__Arrow.__ne__  s)    %%!566;;u%%%rb   c                     [        U[        [        45      (       d  [        $ U R                  U R                  U5      :  $ r   rV   r:   r]   r  rL   r   r  s     r_   __gt__Arrow.__gt__  4    %%!566!!~~ 2 25 999rb   c                     [        U[        [        45      (       d  [        $ U R                  U R                  U5      :  $ r   r  r  s     r_   __ge__Arrow.__ge__  4    %%!566!!~~!3!3E!:::rb   c                     [        U[        [        45      (       d  [        $ U R                  U R                  U5      :  $ r   r  r  s     r_   __lt__Arrow.__lt__  r  rb   c                     [        U[        [        45      (       d  [        $ U R                  U R                  U5      :*  $ r   r  r  s     r_   __le__Arrow.__le__  r  rb   tz_exprc                     U c  [         R                  " 5       $ [        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.)	rT   rU   rV   rW   r   rY   rZ   ParserErrorrr   )r  s    r_   r   Arrow._get_tzinfo  sq     ?$$&&gy))NO**0099%% O G;.L!MNNOs   A $A4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.)	rV   r:   r   r]   r   rq   rt   rx   rr   )rg   r  rm   s      r_   r   Arrow._get_datetime  sq    
 dE""== k**Kt$$dI''	2;;;x'RSTTrb   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)zFinds 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)r2   r3   )r2   r3   r   )r4   r5   )r4   r'   r    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  rr   )rg   r   	supporteds      r_   r   Arrow._get_frames  s     ::6Q&&"X_crcjj!89dA%%&&%,,)		
I +D61ST]S^^_` rb   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.)rr   r>   sysmaxsize)rg   r   r   s      r_   r   Arrow._get_iteration_params8  sF     ;} !GHH77E>! }CKK'':rb   c                 x    U R                   [        R                  " U R                  U R                  5      S   :H  $ )zOReturns a boolean indicating whether the datetime is the last day of the month.r   )r(   calendar
monthranger$   r&   r   s    r_   r   Arrow._is_last_day_of_monthF  s-     xx8..tyy$**EaHHHrb   r   )r   r   r   r   Nr   )rN   r:   )NNN)r   r6   Fr   )NNr6   F)r   Nr6   F)en_us)r7   )Tr8   )ur   
__module____qualname____firstlineno____doc__r]   r<   r   r   __annotations__r?   r"   r   r[   rA   rB   r   rD   rE   rF   rG   rH   rt   rI   rJ   rK   r   r   r   TZ_EXPRr   r`   classmethodrW   re   rk   r   ru   rx   r{   r   r~   r   r   	_T_FRAMESr   r   _BOUNDSboolr   r   r   r   r   r   r   r   r   r   r   r   propertyr	   r   r   rm   r   r   rR   r  r  r  r   r   r   r   r   _GRANULARITYrE  ru  r  dt_timer   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  r  r  staticmethodr   r   r   r   r   __static_attributes__).0as   00r_   r:   r:   S   s
   @ '2&<&<J#<	'		'	 FE$s)  9?&?1Aw&?M5c#?&'s'#%eCj%!(NE#J( ,M5:,!1NE#J1$7OU5\7&=uU|=!3NE#J3 " $	:IuW-u456 	  $(

 
 	

 
 
 
 
 !
 
 

B 
), 
 
 
< 
 
2  %)"
eS)"
 !"
 
	"
 "
H 
sE3)? 
G 
 
2 !
k !
8G3D !
PW !
 !
F CD C(7*; Cw C C BF 
 
!$ 
.6w.? 
	 
  
D 
# 
' 
 
: 
 26 $#T<T< Wk)*T< 7K-.	T<
 WT< }T< 
&	'T< T<r ZZ Z 	Z
 Z Z 
	 Zx#9 # #"#) # #"  !%#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,* ,* ,*\5*c 5*g 5*n,
W ,
 ,
b 1OO:=O	O: 48$#?E~Wk4/0~ ~ 	~
 <l);;<~ 
~@I2s I2C I2g I2b 	8
8
 8
 	8

 
8
x
%d 
%
%g 
%' '-Xi0 -[ - *8I. *
$Xi( 
$
*; 
*
-k 
-
*3 
*
( 
(
+C 
+
,U3S=1 
,
7S 
7# 
73 
7
&s 
&/s /s /
 # 
 S W #eI}$<= #' # U9m#;<    U;#78 Y  
S 
U9g+=%> 
c i ;C ;D ;&C &D &:C :D :;C ;D ;:C :D :;C ;D ; 
OXg. 
O9 
O 
O U+sE3>?U	U U y U3S=-A  @  HSM eCQTHo   IG I I IM6 '@s   R0r:   )7r  r  rP  r  r   r   r]   r   r  r   r	   rW   mathr
   r   typingr   r   r   r   r   r   r   r   r   r   r   dateutilr   rT   dateutil.relativedeltar   arrowr   r   r   r   arrow.constantsr   r   arrow.localesr   version_infotyping_extensionsr"   r#   r[   r  r  r  r  r:   r{   r=   r>   r   rb   r_   <module>r     s     	 
  , $  (      ' 0 2 2 > *f00% 	3
	* (
)
vI vIr7 {/	{/	rb   