
    h9                    $   d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlZd dl	m
Z
 d dl	mZ d d	l	mZ d d
l	mZ d dlmZ erd dlmZ ddZ G d de      Z ed      e_         eddddd      e_         ed      e_         G d de      Zy)    )annotations)	timedelta)TYPE_CHECKING)cast)overloadN)SECONDS_PER_DAY)SECONDS_PER_HOUR)SECONDS_PER_MINUTE)US_PER_SECOND)PYPY)Selfc                    t        | |      \  }}t        |      }|dz  }|dkD  r||kD  n||k  }|s||k(  r|dz  dk(  r|dz  }|S )zdivide a by b and round result to the nearest integer

    When the ratio is exactly half-way between two integers,
    the even integer is returned.
       r      )divmodint)abqrgreater_than_halfs        \/var/www/html/retail-simulation-api/retail/lib/python3.12/site-packages/pendulum/duration.py_divide_and_roundr      s`     !Q<DAq 	AA
 FA!"QAAEAFq1uz	QH    c                     e Zd ZU dZdZded<   dZded<   dZded<   dZded<   dZ	ded	<   dZ
ded
<   dZded<   dZded<   dZdZdZdZdZdZdZdZ	 	 	 	 	 	 	 	 	 d7	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d8dZd9dZd9dZd9dZd9dZerd9dZed:d       Zed:d       Zed:d       Zer	ed:d       Z ed:d       Z!ed:d       Z"ed:d       Z#ed:d       Z$ed:d       Z%ed:d       Z&ed;d       Z'd:dZ(d:d Z)d:d!Z*d:d"Z+d:d#Z,d<d=d$Z-d>d%Z.d?d&Z/d@d'Z0d@d(Z1dAd)Z2e2Z3dAd*Z4dBd+Z5d:d,Z6dCd-Z7e7Z8e9dDd.       Z:e9dEd/       Z:dFd0Z:e9dGd1       Z;e9dHd2       Z;dId3Z;e:Z<dAd4Z=dJd5Z>dKd6Z?y)LDurationzo
    Replacement for the standard timedelta class.

    Provides several improvements over the base class.
    r   float_totalr   _years_months_weeks_days_remaining_days_seconds_microsecondsNc
           
     n   t        |t              rt        |	t              st        d      t        j                  | ||dz  z   |	dz  z   ||||||      }
|
j                         |dz  |	dz  z   t        z  z
  }||
_        d}|dk  rd}t        ||z  dz        |
_	        t        t        |            t        z  |z  |
_        t        t        |            t        z  |z  }||
_        t        |      dz  |z  |
_        t        |      dz  |z  |
_        |	|
_        ||
_        ||	|||||||d	z  z   d
|
_        |
S )N'Float year and months are not supportedm     r   r       .A   i  )yearsmonthsweeksdayshoursminutessecondsmicroseconds)
isinstancer   
ValueErrorr   __new__total_secondsr   r   roundr%   absr$   r"   r#   r!   r    r   
_signature)clsr0   r3   r4   millisecondsr2   r1   r/   r-   r.   selftotalmr"   s                 r   r7   zDuration.__new__G   sS    %%Z-DFGG  53;",	
 ""$frk(A_'TT19A"519s?3CJ/9A=CJ?2Q6
"5zA~1%jAo) (<$+>>	
 r   c                0    | j                         t        z  S N)r8   r
   r>   s    r   total_minuteszDuration.total_minutes   s    !!#&888r   c                0    | j                         t        z  S rB   )r8   r	   rC   s    r   total_hourszDuration.total_hours   s    !!#&666r   c                0    | j                         t        z  S rB   )r8   r   rC   s    r   
total_dayszDuration.total_days   s    !!#o55r   c                (    | j                         dz  S )Nr,   )rH   rC   s    r   total_weekszDuration.total_weeks   s     1$$r   c                V   d}t        | d      r|| j                  dz  z  }t        | d      r|| j                  dz  z  }t        | d      r || j                  dz  | j                  z   z  }n|| j
                  z  }|t        z  | j                  z   t        z  | j                  z   t        z  S )Nr   r   r(   r    r)   r#   r,   )
hasattrr   r    r!   r#   r"   r   r$   r   r%   )r>   r0   s     r   r8   zDuration.total_seconds   s    DtX&c))tY'r))t./a$*>*>>>

" '$--7=H$$% r   c                    | j                   S rB   )r   rC   s    r   r-   zDuration.years       {{r   c                    | j                   S rB   )r    rC   s    r   r.   zDuration.months   s    ||r   c                    | j                   S rB   )r!   rC   s    r   r/   zDuration.weeks   rN   r   c                Z    | j                   dz  | j                  dz  z   | j                  z   S )Nr(   r)   )r   r    r"   rC   s    r   r0   zDuration.days   s(    ;;$t||b'884::EEr   c                    | j                   S rB   )r#   rC   s    r   remaining_dayszDuration.remaining_days   s    ###r   c                    | j                   I| j                  }d| _         t        |      dk\  r(t        |      dz  dz  | j                  |      z  | _         | j                   S )Nr   i     )_hr$   r:   _signr>   r3   s     r   r1   zDuration.hours   sS    77?mmGDG7|t#w<4/"4

78KKwwr   c                    | j                   I| j                  }d| _         t        |      dk\  r(t        |      dz  dz  | j                  |      z  | _         | j                   S )Nr   <   )_ir$   r:   rW   rX   s     r   r2   zDuration.minutes   sS    77?mmGDG7|r!w<2-2djj6IIwwr   c                    | j                   S rB   )r$   rC   s    r   r3   zDuration.seconds   s    }}r   c                    | j                   J| j                  | _         t        | j                         dz  | j                  | j                         z  | _         | j                   S )NrZ   )_sr$   r:   rW   rC   s    r   remaining_secondszDuration.remaining_seconds   sE    77?mmDG$''lR'$**TWW*==DGwwr   c                    | j                   S rB   )r%   rC   s    r   r4   zDuration.microseconds   s    !!!r   c                b    | j                   | j                         dk  | _         | j                   S Nr   )_invertr8   rC   s    r   invertzDuration.invert   s+    <<--/!3DL||r   c                4    t        | j                               S rB   )r   rJ   rC   s    r   in_weekszDuration.in_weeks       4##%&&r   c                4    t        | j                               S rB   )r   rH   rC   s    r   in_dayszDuration.in_days   s    4??$%%r   c                4    t        | j                               S rB   )r   rF   rC   s    r   in_hourszDuration.in_hours   rg   r   c                4    t        | j                               S rB   )r   rD   rC   s    r   
in_minuteszDuration.in_minutes       4%%'((r   c                4    t        | j                               S rB   )r   r8   rC   s    r   
in_secondszDuration.in_seconds   rn   r   c                ,   d| j                   fd| j                  fd| j                  fd| j                  fd| j                  fd| j
                  fd| j                  fg}|t        j                         }t        j                  |      }g }|D ]e  }|\  }}t        |      dkD  s|j                  d	| d
|j                  t        |                   }	|j                  |	j                  |             g |sd}
t        | j                        dkD  r/d|j                  d       }t        | j                        dz  d}
nd|j                  d       }|j                  |      }	|j                  |	j                  |
             |j!                  |      S )z
        Get the current interval in words in the current locale.

        Ex: 6 jours 23 heures 58 minutes

        :param locale: The locale to use. Defaults to current locale.
        :param separator: The separator to use between each unit
        yearmonthweekdayhourminutesecondr   zunits..zunits.second.r   r+   z.2fzunits.microsecond.)r-   r.   r/   rS   r1   r2   r_   pendulum
get_localelocaler:   translationpluralappendformatr4   join)r>   r|   	separator	intervalsloaded_localepartsintervalunitinterval_countr}   counts              r   in_wordszDuration.in_words   s    TZZ dkk"TZZ D''(TZZ t||$t--.
	 >((*F /!H#+ D.>"Q&+77TF!M$8$8^9L$M#NO [//?@ "  E4$$%)&}';';A'>&?@t001C7<+M,@,@,C+DE'33D9KLL++E23~~e$$r   c                    |dk  ryy)Nr   r*   r    )r>   values     r   rW   zDuration._sign  s    19r   c                6    t        | j                               S )z<
        Return the interval as a native timedelta.
        r3   )r   r8   rC   s    r   as_timedeltazDuration.as_timedelta$  s     !3!3!566r   c                "    | j                         S rB   )r   rC   s    r   __str__zDuration.__str__*  s    }}r   c                R   | j                   j                   d}| j                  r|d| j                   dz  }| j                  r|d| j                   dz  }| j                  r|d| j                   dz  }| j
                  r|d| j                   dz  }| j                  r|d| j                   dz  }| j                  r|d| j                   dz  }| j                  r|d	| j                   dz  }| j                  r|d
| j                   dz  }|dz  }|j                  dd      S )N(zyears=z, zmonths=zweeks=zdays=zhours=zminutes=zseconds=zmicroseconds=)z, ))	__class____name__r   r    r!   r"   r#   r1   r2   r_   r4   replace)r>   reps     r   __repr__zDuration.__repr__-  s0   (()+;;VDKK=++C<<WT\\N"--C;;VDKK=++C::U4//033C::VDJJ<r**C<<Xdll^2..C!!Xd445R88C]4#4#4"5R88Cs
{{5#&&r   c                    t        |t              r1| j                  | j                         |j                         z         S t        S Nr   r5   r   r   r8   NotImplementedr>   others     r   __add__zDuration.__add__L  :    eY'>>$*<*<*>ATATAV*V>WWr   c                    t        |t              r1| j                  | j                         |j                         z
        S t        S r   r   r   s     r   __sub__zDuration.__sub__T  r   r   c                    | j                  | j                   | j                   | j                   | j                   | j
                   | j                         S )N)r-   r.   r/   r0   r3   r4   )r   r   r    r!   r#   r$   r%   rC   s    r   __neg__zDuration.__neg__Z  sT    ~~;;,LL=;;,&&&]]N,,,  
 	
r   c                Z    | j                   dz  | j                  z   dz  | j                  z   S )NiQ i@B )r"   r$   r%   rC   s    r   _to_microsecondszDuration._to_microsecondsd  s*    

i(4==8GCdFXFXXXr   c                J   t        |t              r;| j                  | j                  |z  | j                  |z  | j
                  |z        S t        |t              rC| j                         }|j                         \  }}| j                  ddt        ||z  |            S t        S )N)r-   r.   r3   r   )r5   r   r   r   r    r   r   r   as_integer_ratior   r   r>   r   usecr   r   s        r   __mul__zDuration.__mul__g  s    eS!>>kkE)||e+e+ "   eU#((*D))+DAq>>!Q(9$(A(FGGr   c                     y rB   r   r   s     r   __floordiv__zDuration.__floordiv__y      r   c                     y rB   r   r   s     r   r   zDuration.__floordiv__}  r   r   c                D   t        |t        t        f      st        S | j	                         }t        |t              r!t        t        ||j	                         z        S t        |t              r3| j                  dd||z  | j                  |z  | j                  |z        S y Nr   )r-   r.   )	r5   r   r   r   r   r   r   r   r    )r>   r   r   s      r   r   zDuration.__floordiv__  s    %#y!12!!$$&eY'TU3355  eS!>>kkU*||u, "   "r   c                     y rB   r   r   s     r   __truediv__zDuration.__truediv__  r   r   c                     y rB   r   r   s     r   r   zDuration.__truediv__  r   r   c           
     Z   t        |t        t        t        f      st        S | j                         }t        |t              r!t        t        ||j                         z        S t        |t              rH| j                  ddt        ||      t        | j                  |      t        | j                  |            S t        |t              ra|j                         \  }}| j                  ddt        ||z  |      t        | j                  |z  |      t        | j                  |            S y r   )r5   r   r   r   r   r   r   r   r   r   r    r   r   s        r   r   zDuration.__truediv__  s   %#ui!89!!$$&eY'te4466  eS!>>!$.'U;(u= "   eU#))+DAq>>!!d(A.'a;(u= "   $r   c                    t        |t              r4| j                         |j                         z  }| j                  dd|      S t        S rb   )r5   r   r   r   r   )r>   r   r   s      r   __mod__zDuration.__mod__  sA    eY'%%'%*@*@*BBA>>!Q**r   c                    t        |t              r@t        | j                         |j                               \  }}|| j	                  dd|      fS t
        S rb   )r5   r   r   r   r   r   )r>   r   r   r   s       r   
__divmod__zDuration.__divmod__  sR    eY'%%'&&(DAq
 dnnQ1---r   c           	         | j                  | j                  | j                  | j                  | j                  | j
                  | j                  | j                        S )N)r0   r3   r4   r2   r1   r-   r.   )r   rS   r_   r4   r2   r1   r-   r.   )r>   _s     r   __deepcopy__zDuration.__deepcopy__  sO    ~~$$****LL****;;  
 	
r   	r   r   r   r   r   r   r   r   r   )r0   r   r3   r   r4   r   r=   r   r2   r   r1   r   r/   r   r-   r   r.   r   returnr   r   r   )r   r   r   bool)N )r|   z
str | Noner   strr   r   )r   r   r   r   )r   r   )r   r   )r   r   r   r   )r   r   )r   zint | floatr   r   )r   r   r   r   )r   r   r   r   )r   zint | timedeltar   zint | Duration)r   r   r   r   )r   r   r   r   )r   zint | float | timedeltar   zSelf | float)r   r   r   ztuple[int, Duration])r   zdict[int, Self]r   r   )@r   
__module____qualname____doc__r   __annotations__r   r    r!   r"   r#   r$   r%   _y_m_w_drV   r[   r^   rc   r7   rD   rF   rH   rJ   r   r8   propertyr-   r.   r/   r0   rS   r1   r2   r3   r_   r4   rd   rf   ri   rk   rm   rp   r   rW   r   r   r   r   __radd__r   r   r   r   __rmul__r   r   r   __div__r   r   r   r   r   r   r   r   .   s    FEFCOGSFCOE3NOSHcM3	B	B	B	B	B	B	BG 77 7 	7
 7 7 7 7 7 7 
7r976% 	&       		F 
	F $ $         " "  '&'))+%Z7'> H
Y  H   &    < G		
r   r   i6e)r0   iɚ;   ;   i?B )r0   r1   r2   r3   r4   r   )r4   c                  l    e Zd ZdZ	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddZed	d       Zy)
AbsoluteDurationzG
    Duration that expresses a time difference in absolute values.
    c
           
     "   t        |t              rt        |	t              st        d      t        j                  | |||||||      }
t        |||||||      }|j                         |
_        t        |
j                        }t        |dz  dz        |
_	        t        t        |      t              \  }|
_        t        ||dz  z   |	dz  z         |
_        t        |d      \  |
_        |
_        t        |	      |
_        t        |      |
_        |
S )Nr'   r   r+   r(   r)   r,   )r5   r   r6   r   r7   r8   r   r:   r9   r%   r   r   r$   r"   r!   r#   r    r   )r<   r0   r3   r4   r=   r2   r1   r/   r-   r.   r>   deltar?   s                r   r7   zAbsoluteDuration.__new__  s     %%Z-DFGG  wlGUE
 '<wu

 ))+DKK "519s?3$SZAdm+frk9:
,24O)T)6{%jr   c                ,    t        | j                        S rB   )r:   r   rC   s    r   r8   zAbsoluteDuration.total_seconds  s    4;;r   c                Z    | j                   | j                  dk  | _         | j                   S rb   )rc   r   rC   s    r   rd   zAbsoluteDuration.invert  s%    <<;;?DL||r   Nr   )r0   r   r3   r   r4   r   r=   r   r2   r   r1   r   r/   r   r-   r   r.   r   r   r   r   r   )r   r   r   r   r7   r8   r   rd   r   r   r   r   r     s     $$ $ 	$
 $ $ $ $ $ $ 
$L   r   r   )r   r   r   r   r   r   )
__future__r   datetimer   typingr   r   r   rz   pendulum.constantsr   r	   r
   r   pendulum.utils._compatr   typing_extensionsr   r   r   minmax
resolutionr   r   r   r   <module>r      s    "       . / 1 , ' &2j
y j
Z Z(	"b"6 A. 3x 3r   