o
    GXîhŸÔ ã                   @   s  	 d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZmZ d dlZd dlm Z m!Z! d dlm"Z" d dlm#Z# d d	lm$Z$ d d
lm%Z% d dlm&Z&mZ d dl$Z'd dl(Z(d dl)Z)ej*ej+hZ,dd„ e-ej.d ƒD ƒZ/dddi g dfZ0e1dƒZ2e1dƒZ3G dd„ dej4ƒZ5G dd„ de#ƒZ6G dd„ de6ƒZ7G dd„ de#ƒZ8G dd„ dej4ƒZ9G dd „ d ej4ƒZ:G d!d"„ d"ƒZ;G d#d$„ d$e;ej4ƒZ<G d%d&„ d&ej4ƒZ=G d'd(„ d(e&ƒZ>G d)d*„ d*e;ej4ƒZ?G d+d,„ d,eƒZ@G d-d.„ d.e?ƒZAG d/d0„ d0eAƒZBG d1d2„ d2e$ƒZCG d3d4„ d4e;ej4ƒZDG d5d6„ d6ƒZEG d7d8„ d8eDeEej4ƒZFG d9d:„ d:eAeEej4ƒZGd;d<„ ZHe"d ƒZIe"dd=ZJe"dd>ZKe"dd?ZLedd@ddAƒZMedddBdƒZNG dCdD„ dDe#ƒZOeOdEdFdGdHƒZPeOdIdJdKdLƒZQeOdMdNdOdPƒZReOdQdRdSdTƒZSe6d dUd ƒZTe6dVdWd ƒZUG dXdY„ dYej4ƒZVG dZd[„ d[ej4ƒZWG d\d]„ d]e#ƒZXG d^d_„ d_eXƒZYeYdEd`dGdHƒZZeYdIdadKdLƒZ[eYdMdbdOdPƒZ\eYdQdcdSdTƒZ]G ddde„ dee#ƒZ^G dfdg„ dgej4ƒZ_e"d dƒZ`dhdi„ ZaG djdk„ dke#ƒZbG dldm„ dmej4ƒZcG dndo„ doejdƒZeG dpdq„ dqecƒZfG drds„ dsej4ƒZgdtdu„ ZheidvkrFe j¡  dS dS )wé    N)Úarray)	ÚltÚleÚgtÚgeÚeqÚneÚtruedivÚfloordivÚmod)Úsupport)Úis_resource_enabledÚ	ALWAYS_EQÚLARGESTÚSMALLEST)ÚMINYEARÚMAXYEAR©Ú	timedelta©Útzinfo)Útime©Útimezone)ÚdateÚdatetimec                 C   s   g | ]}t t |f‘qS © )Úpickle)Ú.0Úprotor   r   ú=/opt/python-3.10.19/usr/lib/python3.10/test/datetimetester.pyÚ
<listcomp>*   s    ÿr!   é   é
   g     @A@Úabcr   ÚinfÚnanc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú
TestModulec                 C   s$   t }|  |jd¡ |  |jd¡ d S )Nr"   é'  )Údatetime_moduleÚassertEqualr   r   )Úselfr   r   r   r    Útest_constants=   s   zTestModule.test_constantsc                 C   s&   	 t tƒ}tjD ]}|  ||¡ qd S ©N)Údirr)   Ú__all__ÚassertIn)r+   Z	all_attrsÚattrr   r   r    Útest_allB   s
   
ÿzTestModule.test_allc                 C   sT   d| j jv r|  d¡ t}tdd„ t|ƒD ƒƒ}tg d¢ƒ}|  || tg ƒ¡ d S )NZ_Purez"Only run for Fast C implementationc                 s   s(    | ]}|  d ¡s| d ¡s|V  qdS )Ú__N)Ú
startswithÚendswith)r   Únamer   r   r    Ú	<genexpr>M   s   € ÿÿz/TestModule.test_name_cleanup.<locals>.<genexpr>)
r   r   r   r   Zdatetime_CAPIr   r   r   r   Úsys)Ú	__class__Ú__name__ÚskipTestr)   Úsetr.   r*   )r+   r   ÚnamesÚallowedr   r   r    Útest_name_cleanupH   s   
zTestModule.test_name_cleanupc                 C   s  d| j jv r|  d¡ tj}|  |ddƒd¡ |  |ddƒd¡ |  |ddƒd	¡ |  |d
dƒd¡ |  |ddƒd¡ |  |d
dƒd	¡ |  |ddƒd	¡ |  |ddƒd¡ |  |ddƒd¡ |  |ddƒd	¡ |  |ddƒd	¡ |  |ddƒd¡ |  |ddƒd¡ |  |ddƒd	¡ d S )NÚ_Fastz'Only run for Pure Python implementationéöÿÿÿéýÿÿÿé   é   éþÿÿÿé   é   éùÿÿÿr#   é   éüÿÿÿé   éúÿÿÿ)r9   r:   r;   r)   Z_divide_and_roundr*   )r+   Zdarr   r   r    Útest_divide_and_roundT   s"   
z TestModule.test_divide_and_roundN)r:   Ú
__module__Ú__qualname__r,   r2   r?   rM   r   r   r   r    r'   ;   s
    r'   c                   @   s6   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚFixedOffseté*   c                 C   s>   t |tƒr
t|d}t |tƒrt|d}|| _|| _|| _d S ©N©Úminutes)Ú
isinstanceÚintr   Ú_FixedOffset__offsetÚ_FixedOffset__nameÚ_FixedOffset__dstoffset©r+   Úoffsetr6   Z	dstoffsetr   r   r    Ú__init__u   s   




zFixedOffset.__init__c                 C   s
   | j  ¡ S r-   )rX   Úlower©r+   r   r   r    Ú__repr__}   ó   
zFixedOffset.__repr__c                 C   ó   | j S r-   )rW   ©r+   Údtr   r   r    Ú	utcoffset   ó   zFixedOffset.utcoffsetc                 C   ra   r-   )rX   rb   r   r   r    Útzname   re   zFixedOffset.tznamec                 C   ra   r-   )rY   rb   r   r   r    Údstƒ   re   zFixedOffset.dstN©rQ   )r:   rN   rO   r\   r_   rd   rf   rg   r   r   r   r    rP   s   s    
rP   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚPicklableFixedOffsetNc                 C   s   t  | |||¡ d S r-   )rP   r\   rZ   r   r   r    r\   ˆ   s   zPicklableFixedOffset.__init__c                 C   ra   r-   )Ú__dict__r^   r   r   r    Ú__getstate__‹   re   z!PicklableFixedOffset.__getstate__)NNN)r:   rN   rO   r\   rk   r   r   r   r    ri   †   s    
ri   c                   @   ó   e Zd Zdd„ ZdS )Ú_TZInfoc                 C   s   t   ¡ S r-   )Úrandom)r+   r)   r   r   r    rd      s   z_TZInfo.utcoffsetN©r:   rN   rO   rd   r   r   r   r    rm   Ž   ó    rm   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )Ú
TestTZInfoc              	   C   sT   t ƒ }tddddddd|ƒ}|  t¡ | ¡  W d   ƒ d S 1 s#w   Y  d S )NéÞ  rF   é   é   é    rC   r   )rm   r   ÚassertRaisesÚ	TypeErrorrd   )r+   Ztz1Údt1r   r   r    Útest_refcnt_crash_bug_22044”   s
   
"ÿz&TestTZInfo.test_refcnt_crash_bug_22044c                 C   s@   t ƒ }tj}|  t|j|¡ |  t|j|¡ |  t|j|¡ d S r-   )r   r   Úmaxrv   ÚNotImplementedErrorrf   rd   rg   )r+   Zuselessrc   r   r   r    Útest_non_abstractnessš   s
   z TestTZInfo.test_non_abstractnessc                 C   sr   G dd„ dt ƒ}|  t|t ƒ¡ |ddƒ}|  |t ¡ t ¡ }|  t|j|¡ |  t|j	|¡ |  t|j
|¡ d S )Nc                   @   rl   )z9TestTZInfo.test_subclass_must_override.<locals>.NotEnoughc                 S   s   || _ || _d S r-   )Z_NotEnough__offsetZ_NotEnough__name)r+   r[   r6   r   r   r    r\   ¦   s   
zBTestTZInfo.test_subclass_must_override.<locals>.NotEnough.__init__N)r:   rN   rO   r\   r   r   r   r    Ú	NotEnough¥   rp   r}   rC   ZNotByALongShot)r   Ú
assertTrueÚ
issubclassÚassertIsInstancer   Únowrv   r{   rf   rd   rg   )r+   r}   r   rc   r   r   r    Útest_subclass_must_override¤   s   
z&TestTZInfo.test_subclass_must_overridec                 C   sn   t ddƒ}|  |t¡ t ¡ d fD ]#}|  | |¡tdd¡ |  | |¡d¡ |  | 	|¡tdd¡ qd S )NrC   ZThreerS   rQ   )
rP   r€   r   r   r   r*   rd   r   rf   rg   )r+   Úforc   r   r   r    Útest_normal²   s   
ýzTestTZInfo.test_normalc                 C   sT   t  t ¡}|  t|ƒt ¡ tD ]\}}}| ||¡}| |¡}|  t|ƒt ¡ qd S r-   )r   Ú__new__ÚassertIsÚtypeÚpickle_choicesÚdumpsÚloads)r+   ÚorigÚpicklerÚ	unpicklerr   ÚgreenÚderivedr   r   r    Útest_pickling_baseº   s   

ýzTestTZInfo.test_pickling_basec                 C   sð   t dd}t|dfft|fft|dfffD ]`\}}||Ž }| d ¡}|  |t¡ |  t|ƒ|¡ |  | 	d ¡|¡ |  | d ¡|¡ t
D ]0\}}}| ||¡}	| |	¡}
|  |
t¡ |  t|
ƒ|¡ |  |
 	d ¡|¡ |  |
 d ¡|¡ qDqd S )NéÔþÿÿrS   ÚcookieÚEST)r   ri   r   rf   r€   r   r†   r‡   r*   rd   rˆ   r‰   rŠ   )r+   r[   ZotypeÚargsr‹   ZonamerŒ   r   r   rŽ   r   r   r   r    Útest_pickling_subclassÅ   s(   


ý

úöz!TestTZInfo.test_pickling_subclassc                    s`   t dd ‰ ‰G ‡ ‡fdd„dtƒ}|ƒ }tddddd|d	}| |¡}|  || ¡  |¡ d S )
Nr"   ©Úhoursc                       s.   e Zd Z	 ‡fdd„Z‡ fdd„Zdd„ ZdS )z0TestTZInfo.test_issue23600.<locals>.UKSummerTimec                    ó   ˆ S r-   r   rb   )Ú	DSTOFFSETr   r    rd   â   ó   z:TestTZInfo.test_issue23600.<locals>.UKSummerTime.utcoffsetc                    r˜   r-   r   rb   )ÚDSTDIFFr   r    rg   å   rš   z4TestTZInfo.test_issue23600.<locals>.UKSummerTime.dstc                 S   ó   dS )NÚUKSummerTimer   rb   r   r   r    rf   è   rš   z7TestTZInfo.test_issue23600.<locals>.UKSummerTime.tznameN©r:   rN   rO   rd   rg   rf   r   ©r›   r™   r   r    r   Ý   s
    r   rr   rI   é   é   r   )r   r   r   Úfromutcr*   rd   )r+   r   ÚtzÚuÚtr   rŸ   r    Útest_issue23600Ú   s   
zTestTZInfo.test_issue23600N)
r:   rN   rO   ry   r|   r‚   r„   r   r•   r¦   r   r   r   r    rq   ’   s    
rq   c                   @   s”   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#S )$ÚTestTimeZonec                 C   s8   t tdddƒ| _t tdd dƒ| _tdddƒ| _d S )Nç      #@r–   ÚACDTrD   r“   éÚ  r"   )r   r   r©   r“   r   ÚDTr^   r   r   r    ÚsetUpó   s   zTestTimeZone.setUpc                 C   s8   | j | jtjtjtjfD ]}|  t|ƒ| d ¡¡ qd S r-   )	r©   r“   r   ÚutcÚminrz   r*   Ústrrf   ©r+   r£   r   r   r    Útest_strø   s
   ÿþzTestTimeZone.test_strc                 C   s>   t }| j| jtjtjtjfD ]}t|ƒ}|  |t	|ƒ¡ qd S r-   )
r)   r©   r“   r   r­   r®   rz   Úreprr*   Úeval)r+   r   r£   Ztzrepr   r   r    Ú	test_reprý   s   ÿüzTestTimeZone.test_reprc                 C   sN   t ddd}|  tj d ¡t¡ |  tj d ¡| ¡ |  tj d ¡|¡ d S )Né   é;   ©r—   rT   )r   r*   r   r­   rd   ÚZEROr®   rz   )r+   Úlimitr   r   r    Útest_class_members  s   zTestTimeZone.test_class_membersc                 C   sÂ  |   tjttdƒƒ¡ |  tjttdƒdƒ¡ |  tjttdƒdƒ¡ tddtddfD ]}t|ƒ}|  | d ¡tdd d¡ q-tddƒtdƒfD ]}|  t	t|¡ |  t	t| ¡ qK|  t
¡ td ƒ W d   ƒ n1 sqw   Y  |  t
¡ tdƒ W d   ƒ n1 sŠw   Y  |  t
¡ ttd ƒ W d   ƒ n1 s¤w   Y  |  t
¡ ttdƒ W d   ƒ n1 s¾w   Y  |  t
¡ ttdd	ƒ W d   ƒ d S 1 sÚw   Y  d S )
Nr   ÚUTCr"   ©Úmicroseconds©ÚsecondsrS   rQ   ÚABCÚextra)r†   r   r­   r   ÚassertIsNotr*   ÚassertNotEqualrd   rv   Ú
ValueErrorrw   r¸   )r+   Z	subminuter£   Úinvalidr   r   r    Útest_constructor  s   2244<zTestTimeZone.test_constructorc                 C   s    |   tjt¡ |   | jt¡ d S r-   )r€   r   r­   r   r“   r^   r   r   r    Útest_inheritance  s   zTestTimeZone.test_inheritancec                 C   sº   | j }dD ]}|t }|  |t|ƒ |¡¡ |  | t| ƒ |¡¡ q|  t¡ | j d¡ W d   ƒ n1 s:w   Y  |  t¡ | j d¡ W d   ƒ d S 1 sVw   Y  d S )N)r   g      ø?r¡   Ú rD   )r«   ÚHOURr*   r   rd   rv   rw   r“   )r+   ÚdummyÚhr[   r   r   r    Útest_utcoffset!  s   6<zTestTimeZone.test_utcoffsetc                 C   s†   |   tj | j¡¡ |  t¡ | j d¡ W d   ƒ n1 s w   Y  |  t¡ | j d¡ W d   ƒ d S 1 s<w   Y  d S )NrÈ   rD   )ÚassertIsNoner   r­   rg   r«   rv   rw   r“   r^   r   r   r    Útest_dst,  s   6<zTestTimeZone.test_dstc                 C   s˜  |   dtj d ¡¡ |   dttƒ d ¡¡ |   dtdt ƒ d ¡¡ |   dtdt ƒ d ¡¡ |   dttddƒ d ¡¡ |   d	tdt d	ƒ d ¡¡ |   d
ttd
ƒ d ¡¡ |   dttddƒƒ d ¡¡ |   dttddƒ ƒ d ¡¡ |   dttdddƒƒ d ¡¡ |   dttdddƒ ƒ d ¡¡ |  t¡ | j	 d¡ W d   ƒ n1 s©w   Y  |  t¡ | j	 d¡ W d   ƒ d S 1 sÅw   Y  d S )Nr»   z	UTC-05:00éûÿÿÿz	UTC+09:30r¨   z	UTC-00:01éÿÿÿÿrS   ZXYZõ   í €zUTC+01:06:40r   é   zUTC-01:06:40zUTC+01:06:40.000001r"   zUTC-01:06:40.000001rÈ   rD   )
r*   r   r­   rf   r¸   rÉ   r   rv   rw   r“   r^   r   r   r    Útest_tzname2  s&   ÿÿÿ6<zTestTimeZone.test_tznamec                 C   sÌ   |   t¡ tj | j¡ W d   ƒ n1 sw   Y  |   t¡ tj d¡ W d   ƒ n1 s2w   Y  | j| jt	fD ]%}| jj
|d}| |¡}|  || | |¡¡ |  || jj
tjd¡ q>d S )Nznot datetimer   )rv   rÄ   r   r­   r¢   r«   rw   r“   r©   ÚEasternÚreplacer*   rd   )r+   r£   ZutctimeÚlocalr   r   r    Útest_fromutcH  s   ÿÿ
ÿüzTestTimeZone.test_fromutcc                 C   sR  |   ttƒttƒ¡ |  ttƒttƒ¡ |  tdt ƒtdt dƒ¡ |  t¡ ttƒttƒk  W d   ƒ n1 s;w   Y  |  ttƒttƒh¡ |  ttƒd k¡ |  	ttƒd k¡ ttƒ}|  |t
k¡ |  	|t
k¡ |  |tk ¡ |  	|tk¡ |  |tk¡ |  	|tk¡ |  	|tk ¡ |  |tk¡ |  	|tk¡ |  |tk¡ d S )NrÏ   r“   )rÃ   r   r¸   rÉ   r*   rv   rw   r0   r~   ÚassertFalser   r   r   r°   r   r   r    Útest_comparisonT  s$   :zTestTimeZone.test_comparisonc                 C   s€   t dddƒ}tjtjtjfD ]/}|  | |¡|j|d ¡ ¡ |  | |¡|j|d ¡ ¡ |  | 	|¡|j|d 	¡ ¡ qd S )Nr"   r   )
r   r   r®   rz   r­   r*   rf   rÕ   rd   rg   ©r+   r¥   r£   r   r   r    Útest_aware_datetimei  s   ÿÿÿûz TestTimeZone.test_aware_datetimec                 C   s€   | j | jtjtjfD ]}tD ]\}}}| | ||¡¡}|  ||¡ qq
tj	}tD ]\}}}| | ||¡¡}|  
||¡ q)d S r-   )r©   r“   r   r®   rz   rˆ   rŠ   r‰   r*   r­   r†   )r+   r£   rŒ   r   r   Útz_copyr   r   r    Útest_picklet  s   þþzTestTimeZone.test_picklec                 C   sP   | j | jtjtjfD ]}t |¡}|  ||¡ q
tj}t |¡}|  ||¡ d S r-   )	r©   r“   r   r®   rz   Úcopyr*   r­   r†   ©r+   r£   rÜ   r   r   r    Ú	test_copy~  ó   

zTestTimeZone.test_copyc                 C   sP   | j | jtjtjfD ]}t |¡}|  ||¡ q
tj}t |¡}|  	||¡ d S r-   )
r©   r“   r   r®   rz   rÞ   Údeepcopyr*   r­   r†   rß   r   r   r    Útest_deepcopy†  rá   zTestTimeZone.test_deepcopyc              
   C   s  t dddt ddddt dddddg}| dd„ |D ƒ¡ |D ]}| jd	|d
 t|ƒ W d   ƒ n1 s8w   Y  q t ddt dddg}| dd„ |D ƒ¡ |D ]2}| jd|d
! |  t¡ t|ƒ W d   ƒ n1 ssw   Y  W d   ƒ n1 s‚w   Y  qUd S )Nrµ   r¶   r·   ©r—   rT   r¿   é?B ©r—   rT   r¿   r½   c                 S   ó   g | ]}| ‘qS r   r   ©r   Údeltar   r   r    r!   •  ó    z7TestTimeZone.test_offset_boundaries.<locals>.<listcomp>Zgood)Z	test_typeré   é   r–   r"   )r—   r½   c                 S   rç   r   r   rè   r   r   r    r!      rê   Zbad)r   ÚextendÚsubTestr   rv   rÄ   )r+   Ztime_deltasré   Zbad_time_deltasr   r   r    Útest_offset_boundariesŽ  s.   
ý
ÿ€
þ
ÿ€ÿ€ÿz#TestTimeZone.test_offset_boundariesc                 C   s,   |   tjtƒ ¡ |   ttddƒtƒ ¡ d S )Nr"   r–   )rÃ   r   r­   r   r   r^   r   r   r    Útest_comparison_with_tzinfo§  s   z(TestTimeZone.test_comparison_with_tzinfoN)r:   rN   rO   r¬   r±   r´   rº   rÆ   rÇ   rÌ   rÎ   rÓ   r×   rÙ   rÛ   rÝ   rà   rã   rî   rï   r   r   r   r    r§   ñ   s$    
r§   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚHarmlessMixedComparisonc                 C   sþ   |   ddd¡}|  |dk¡ |  |dk¡ |  d|k¡ |  d|k¡ |  |ddg |g¡ |  g |ddg g¡ |  |tk¡ |  |tk¡ |  |tk ¡ |  |tk¡ |  |tk¡ |  |tk¡ |  |tk ¡ |  |tk¡ |  |tk¡ |  |tk¡ d S )Nr"   r   é   )ÚtheclassrØ   r~   r0   r   r   r   )r+   Úmer   r   r    Útest_harmless_mixed_comparison·  s"   z6HarmlessMixedComparison.test_harmless_mixed_comparisonc                    s²   |   ddd¡‰ |  t‡ fdd„¡ |  t‡ fdd„¡ |  t‡ fdd„¡ |  t‡ fdd„¡ |  t‡ fdd„¡ |  t‡ fdd„¡ |  t‡ fd	d„¡ |  t‡ fd
d„¡ d S )Nr"   c                      ó   ˆ dk S ©Nr   r   r   ©rô   r   r    Ú<lambda>×  ó    zGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>c                      s   ˆ dkS r÷   r   r   rø   r   r    rù   Ø  rú   c                      s   ˆ dkS r÷   r   r   rø   r   r    rù   Ù  rú   c                      s   ˆ dkS r÷   r   r   rø   r   r    rù   Ú  rú   c                      ó   dˆ k S r÷   r   r   rø   r   r    rù   Ü  rú   c                      s   dˆ kS r÷   r   r   rø   r   r    rù   Ý  rú   c                      s   dˆ kS r÷   r   r   rø   r   r    rù   Þ  rú   c                      s   dˆ kS r÷   r   r   rø   r   r    rù   ß  rú   )ró   rv   rw   r^   r   rø   r    Útest_harmful_mixed_comparisonÔ  s   z5HarmlessMixedComparison.test_harmful_mixed_comparisonN)r:   rN   rO   rõ   rü   r   r   r   r    rñ   ±  s    rñ   c                   @   sô   e Zd ZeZdd„ Zdd„ Zdd„ Zej	dd„ ƒZ
d	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej	dd „ ƒZd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Z d5d6„ Z!d7S )8ÚTestTimeDeltac                 C   sv  | j }t}||ƒ |ddddddddƒ ||dƒ|ddƒ ||ddƒ|ddƒ ||dddƒ|ddƒ ||dd|ddƒ ||dd|d	d
ƒ ||dd
|ddƒ ||dd|ddƒ ||dd|ddƒ ||dd|ddƒ ||dd|ddƒ ||dd|dd
ƒ ||dd
|ddƒ ||dd|ddƒ ||dd|ddƒ ||dd|ddƒ d S )Nr   )ÚweeksÚdaysr—   rT   r¿   Úmillisecondsr½   r"   ©rÿ   r¾   r¼   ©rþ   rF   rë   r–   é<   rS   éè  ©r   g’$I’$IÂ?gUUUUUU¥?g‘?gü©ñÒMbP?)r*   r   )r+   r   Útdr   r   r    rÆ   è  s(   ÿzTestTimeDelta.test_constructorc                 C   sb  | j }t}|dƒ}|ddƒ}|dddƒ}||| | |dddƒƒ ||| |ddƒƒ || |¡|ddƒƒ || |dƒƒ ||
 |dƒƒ || |ddƒƒ || |dd	d
ƒƒ |t|ƒ|ƒ |t| ƒ|ƒ ||ddƒ|ƒ ||dddƒ|ƒ ||d |dƒƒ ||d d| ƒ ||d d| ƒ ||d |ddƒƒ |d| |ddƒƒ ||d |ddƒƒ ||d |dddƒƒ |d| |dddƒƒ ||d |dddƒƒ ||d | ƒ ||d | | ƒ ||d | |  ƒ ||d |d d ƒ ||d d| d ƒ ||d |ddƒƒ |d| |ddƒƒ ||d |dƒƒ ||d |ddƒƒ ||d |dddƒƒ ||d |ddƒƒ ||d |dddƒƒ ||d |dƒƒ ||d |ddƒƒ ||d |dƒƒ ||d |ddƒƒ ||d |dddƒƒ ||d |ddƒƒ ||d |dddƒƒ |dd}|d| d d| ƒ |d| d d| ƒ |dd|  d| ƒ |dd|  d| ƒ |d| d d| ƒ |d | d d| ƒ ||dd!d" |d#dƒ ||dd!d$ |d%dƒ |d| d d| ƒ |d| d d| ƒ |d| d& d| ƒ |d | d& d| ƒ |d| d d| ƒ |d| d d| ƒ |d| d' d| ƒ |d| d' d| ƒ td(dƒD ]}||| d | t|d ƒƒ qQtd(dƒD ]}||| d | t|d ƒƒ qi||dd!d) |d%dƒ ||d*d	d+ƒ|d*d	d,ƒ |dddƒƒ ||d*ddƒ|d*ddƒ |dddƒƒ d S )-NrF   r   r  r  rK   iDQ rH   rÐ   éQ éX> é€Q i ‡“r#   éF   iX  é'  rE   é   rë   r"   i@ì  i€î6 i@ ç      à?é   éx   r¼   rC   rG   rD   rB   rÏ   r¾   ç¿¶~úÏš¿?é@â g½6+1ã?iS	 g       @g       ÀrA   g`""K?-ú?éÿÉš;rå   é>B )r*   r   Ú__rsub__ÚabsÚrangeÚround)r+   r   r  ÚaÚbÚcÚusÚir   r   r    Útest_computations  s   

""
ÿ
ÿzTestTimeDelta.test_computationsc                    sÜ   t dƒ‰ dD ].‰|  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ qd‰|  t‡ ‡fd	d„¡ |  t‡ ‡fd
d„¡ |  t‡ ‡fdd„¡ |  t‡ fdd„¡ |  t‡ fdd„¡ d S )NrQ   ©r"   ç      ð?c                      ó   ˆ ˆ S r-   r   r   ©r  r  r   r    rù   Y  rú   z<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>c                      ó   ˆ ˆ S r-   r   r   r!  r   r    rù   Z  rú   c                      ó   ˆˆ  S r-   r   r   r!  r   r    rù   [  rú   c                      ó   ˆˆ  S r-   r   r   r!  r   r    rù   \  rú   r   c                      ó   ˆˆ  S r-   r   r   ©r  Úzeror   r    rù   a  rú   c                      ó   ˆ ˆ S r-   r   r   r&  r   r    rù   b  rú   c                      s   ˆ ˆ S r-   r   r   r&  r   r    rù   c  rú   c                      ó   ˆ d S )Nç        r   r   ©r  r   r    rù   d  rú   c                      r)  )NrÈ   r   r   r+  r   r    rù   e  rú   )r   rv   rw   ÚZeroDivisionErrorr^   r   )r  r  r'  r    Útest_disallowed_computationsT  s   z*TestTimeDelta.test_disallowed_computationsc                 C   s,   t dƒ}|  t|jt¡ |  t|jt¡ d S )NrQ   )r   rv   rÄ   Ú__mul__ÚNANÚ__truediv__)r+   r  r   r   r    Útest_disallowed_specialg  s   z%TestTimeDelta.test_disallowed_specialc                 C   sD   d\}}}t |||ƒ}|  |j|¡ |  |j|¡ |  |j|¡ d S )N)r"   rF   é   ©r   r*   rÿ   r¿   r½   )r+   rÿ   r¿   r  r  r   r   r    Útest_basic_attributesm  s
   
z#TestTimeDelta.test_basic_attributesc                 C   sp   t dd}|  | ¡ d¡ dD ]}t |d}|  | ¡ |¡ qdD ]}t |d}|  | ¡ |t dd ¡ q!d S )	Ném  r  g    8~A)gËŸ$þ@gËŸ$þÀr  r   g    €„.Ar¾   )rÐ   rE   i…ÿÿÿr¼   r"   )r   r*   Útotal_seconds)r+   r  r6  Úmsr   r   r    Útest_total_secondst  s   


þz TestTimeDelta.test_total_secondsc                 C   s.   t ddddddd}t dd	}|  ||¡ d S )
Néd   rH   é8ûÿÿrB   r¡   g   ô¤A©rÿ   rþ   r—   rT   r¿   r½   r"   r¼   )r   r*   ©r+   Út1Út2r   r   r    Útest_carries€  s   û
zTestTimeDelta.test_carriesc                 C   sž   t ddddddd}t ƒ }|  t|ƒt|ƒ¡ |t dd	7 }|t d
d7 }|  ||¡ |  t|ƒt|ƒ¡ |di}d||< |  t|ƒd¡ |  || d¡ d S )Nr9  rH   r:  rB   r¡   i z
r;  rF   r  é1   r  r"   rG   )r   r*   ÚhashÚlen)r+   r=  r>  Údr   r   r    Útest_hash_equalityŠ  s"   ûz TestTimeDelta.test_hash_equalityc                 C   sB   d}t |Ž }tD ]\}}}| ||¡}| |¡}|  ||¡ qd S )N)r¡   é"   é8   )r   rˆ   r‰   rŠ   r*   ©r+   r”   r‹   rŒ   r   r   rŽ   r   r   r   r    Útest_picklingž  s   
ýzTestTimeDelta.test_picklingc                    s"  t dddƒ‰t dddƒ}|  ˆ|¡ |  ˆ|k¡ |  ˆ|k¡ |  ˆ|k¡ |  ˆ|k ¡ |  ˆ|k¡ dD ]Z}t |Ž }|  ˆ|k ¡ |  |ˆk¡ |  ˆ|k¡ |  |ˆk¡ |  ˆ|k¡ |  |ˆk¡ |  ˆ|k¡ |  |ˆk¡ |  ˆ|k¡ |  |ˆk ¡ |  ˆ|k¡ |  |ˆk¡ q7tD ]z‰ |  ˆˆ kd¡ |  ˆˆ kd¡ |  ˆ ˆkd¡ |  ˆ ˆkd¡ |  t‡ ‡fdd„¡ |  t‡ ‡fd	d„¡ |  t‡ ‡fd
d„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ q”d S )NrG   rC   rI   ©)rC   rC   rC   )rG   rI   rI   )rG   rC   rD   FTc                      ó   ˆˆ kS r-   r   r   ©Zbadargr=  r   r    rù   Å  rú   z,TestTimeDelta.test_compare.<locals>.<lambda>c                      ó   ˆˆ k S r-   r   r   rK  r   r    rù   Æ  rú   c                      ó   ˆˆ kS r-   r   r   rK  r   r    rù   Ç  rú   c                      ó   ˆˆ kS r-   r   r   rK  r   r    rù   È  rú   c                      ó   ˆ ˆkS r-   r   r   rK  r   r    rù   É  rú   c                      ó   ˆ ˆk S r-   r   r   rK  r   r    rù   Ê  rú   c                      ó   ˆ ˆkS r-   r   r   rK  r   r    rù   Ë  rú   c                      ó   ˆ ˆkS r-   r   r   rK  r   r    rù   Ì  rú   )r   r*   r~   rØ   Ú
OTHERSTUFFrv   rw   ©r+   r>  r”   r   rK  r    Útest_compare¦  sH   ózTestTimeDelta.test_comparec              	   C   sä   t }| j}|t|dƒƒdƒ |t|dƒƒdƒ |t|dƒƒdƒ |t|dƒƒdƒ |t|d	d
ddƒdƒ |t|ddddƒdƒ |t|ddd	ddƒdƒ |t|ddƒdƒ |t|ddƒdƒ |t|ddddddƒdƒ d S )Nr"   z1 day, 0:00:00rÐ   z-1 day, 0:00:00rG   z2 days, 0:00:00rE   z-2 days, 0:00:00r¡   é:   r¶   rä   z12:58:59rC   rI   z2:03:04iâÿÿÿrµ   rE  )rþ   r—   rT   r¿   z-210 days, 23:12:34r  z0:00:00.001000r¼   z0:00:00.000003r  rå   ©rÿ   r—   rT   r¿   r½   z999999999 days, 23:59:59.999999)r   r*   r¯   )r+   r  r   r   r   r    r±   Î  s$   ÿÿþzTestTimeDelta.test_strc                 C   sð   d| j j }|  t|   d¡ƒd| ¡ |  t|   dd¡ƒd| ¡ |  t|   ddd¡ƒd	| ¡ |  t| j d
dƒd| ¡ |  t|   ¡ ƒd| ¡ |  t| j ddƒd| ¡ |  t| j dddƒd| ¡ |  t| j dddƒd| ¡ d S )Nú	datetime.r"   z
%s(days=1)r#   rG   z%s(days=10, seconds=2)rA   é€ z,%s(days=-10, seconds=2, microseconds=400000)r  r¾   z%s(seconds=60)z%s(0)r9  r¼   z%s(microseconds=100))rÿ   r½   z%s(days=1, microseconds=100))r¿   r½   z%s(seconds=1, microseconds=100)©ró   r:   r*   r²   ©r+   r6   r   r   r    r´   ã  s2   ÿÿÿÿÿÿÿÿzTestTimeDelta.test_reprc                 C   s’   t ddddddt ddt ddd	t dd
ddfD ]-}t|ƒ}|  | d¡¡ |dd … }t|ƒ}|  ||¡ t |j|j|jƒ}|  ||¡ qd S )Nr  rµ   r¶   rå   rW  é6eÄr  r"   ©rÿ   r¿   rG   rC   ©rÿ   r¿   r½   rX  é	   )	r   r²   r~   r4   r³   r*   rÿ   r¿   r½   )r+   r  ÚsZtd2r   r   r    Útest_roundtripö  s   ÿ
üñzTestTimeDelta.test_roundtripc                 C   s~   |   tjt¡ |   tjt¡ |   tjt¡ |  tjtjk¡ |  tjtdƒ¡ |  tjtdddƒ¡ |  tjtdddƒ¡ d S )Nr\  r  r  g    ~„.Ar   r"   )r€   r   r®   rz   Ú
resolutionr~   r*   r^   r   r   r    Útest_resolution_info  s   z"TestTimeDelta.test_resolution_infoc                 C   sÚ   t j}t j| }||8 }|  t|j|¡ |  t|j| ¡ t j| }||7 }|  t|j|¡ |  t|j| ¡ |  tdd„ ¡ t dƒ}|  t|jd¡ |  t|jd¡ |  t|j	d¡ |  t|j	d¡ |  t|j	d¡ d S )	Nc                   S   s   t j S r-   )r   rz   r   r   r   r    rù     rú   z-TestTimeDelta.test_overflow.<locals>.<lambda>r"   é Êš;g    eÍÍAg#B’¡œÇ;g»½×Ùß|Û=grµÕ{ì>)
r   rb  r®   rv   ÚOverflowErrorÚ__sub__Ú__add__rz   r.  r0  )r+   Útinyr  Údayr   r   r    Útest_overflow  s    

zTestTimeDelta.test_overflowc                 C   s.   t dƒ}|  t|jt¡ |  t|jt ¡ d S ©Nr"   )r   rv   re  r.  ÚINF)r+   ri  r   r   r    Ú_test_overflow_special'  s   z$TestTimeDelta._test_overflow_specialc                 C   sú  t }| j}||dd|dƒƒ ||dd|dƒƒ ||dd|ddƒ ||dd|ddƒ ||dd|d	dƒ ||d
d|ddƒ ||dd|ddƒ ||dd|ddƒ ||dd|ddƒ ||dd|ddƒ ||dd|ddƒ ||dd|ddƒ d}|d }||d| d|dƒƒ ||d| d|dƒƒ ||d| d| d|d	dƒ ||d| d|dƒƒ ||d| d|dƒƒ ||d| d| d|ddƒ ||d dd |d!d ƒ ||d d|j d |j |j ƒ d S )"Ng-Cëâ6:?r  r   g-Cëâ6:¿gü©ñÒMb@?r¼   gü©ñÒMb@¿ga2U0*©C?r"   ga2U0*©C¿rÐ   gú~j¼t“X?rG   gú~j¼t“X¿rE   gíµ ÷Æ >r¾   gíµ ÷Æ ¾ç      €?é„  ç      €¿i|áÿÿç   €tÒêArë   gš™™™™™Ù?r  gš™™™™™É?r–   ©rÿ   r—   gš™™™™™Ù¿gš™™™™™É¿r  r  )r   r*   rb  )r+   r  r   Zus_per_hourZ
us_per_dayr   r   r    Útest_microsecond_rounding-  s0     &z'TestTimeDelta.test_microsecond_roundingc                 C   s&   t dd}|  |j|j|jfd¡ d S )NrÐ   r¼   )rÐ   r  rå   r3  )r+   r  r   r   r    Útest_massive_normalizationN  s   
ÿz(TestTimeDelta.test_massive_normalizationc                 C   sR   |   tdƒ¡ |   tddƒ¡ |   tdddƒ¡ |   tdd¡ |  tdƒ¡ d S )Nr"   r   r¼   )r~   r   rØ   r^   r   r   r    Ú	test_boolS  s
   zTestTimeDelta.test_boolc                    sô   G ‡ fdd„dt ƒ‰ ˆ dd}|  t|ƒˆ ¡ |  | ¡ d¡ ˆ ddd}|  t|ƒˆ ¡ |  | ¡ d	¡ || }|  t|ƒt ¡ ˆ  |¡}|  t|ƒˆ ¡ |  |j|j¡ |  |j|j¡ |  |j|j¡ |  t	|ƒt	|ƒ¡ |  | ¡ d¡ d S )
Nc                       s$   e Zd Ze‡ fdd„ƒZdd„ ZdS )z0TestTimeDelta.test_subclass_timedelta.<locals>.Tc                    s   ˆ | j | j| jƒS r-   r^  )r  ©ÚTr   r    Úfrom_td]  s   z8TestTimeDelta.test_subclass_timedelta.<locals>.T.from_tdc                 S   s&   | j d | jd  | jd  }t|ƒS )Nrë   g      ¬@rq  )rÿ   r¿   r½   r  )r+   Úsumr   r   r    Úas_hoursa  s   ÿþz9TestTimeDelta.test_subclass_timedelta.<locals>.T.as_hoursN)r:   rN   rO   Ústaticmethodrx  rz  r   rv  r   r    rw  \  s    rw  r"   r  rë   rÐ   iðñÿÿr]  içÿÿÿ)
r   r†   r‡   r*   rz  rx  rÿ   r¿   r½   r¯   )r+   r=  r>  Út3Út4r   rv  r    Útest_subclass_timedeltaZ  s    

z%TestTimeDelta.test_subclass_timedeltac           	   	   C   sÆ   G dd„ dt ƒ}|dddƒ}tdd}ddd	„ |ddd
ƒfddd	„ |ddd
ƒfddd	„ |dddƒfg}|D ]+\}}}|  |¡ |||ƒ}|  ||¡ |  ||¡ W d   ƒ n1 s[w   Y  q5d S )Nc                   @   ó   e Zd ZdS )z6TestTimeDelta.test_subclass_date.<locals>.DateSubclassN©r:   rN   rO   r   r   r   r    ÚDateSubclassz  ó    r  éâ  r"   rD   r  Úaddc                 S   ó   | | S r-   r   ©rC  r¥   r   r   r    rù     rú   z2TestTimeDelta.test_subclass_date.<locals>.<lambda>rK   Úraddc                 S   ó   ||  S r-   r   r†  r   r   r    rù   ‚  rú   Úsubc                 S   ó   | | S r-   r   r†  r   r   r    rù   ƒ  rú   rI   )r   r   rí   r*   r€   )	r+   r  Úd1r  Útestsr6   ÚfuncÚexpectedÚactr   r   r    Útest_subclass_datey  s   
ý
ý€ÿz TestTimeDelta.test_subclass_datec           	   	   C   sÒ   G dd„ dt ƒ}|dddddƒ}tddd}d	d
d„ |ddddƒfddd„ |ddddƒfddd„ |ddddƒfg}|D ]+\}}}|  |¡ |||ƒ}|  ||¡ |  ||¡ W d   ƒ n1 saw   Y  q;d S )Nc                   @   r  )z>TestTimeDelta.test_subclass_datetime.<locals>.DateTimeSubclassNr€  r   r   r   r    ÚDateTimeSubclass  r‚  r‘  rƒ  r"   rD   r¡   é   )rÿ   rT   r„  c                 S   r…  r-   r   r†  r   r   r    rù   ”  rú   z6TestTimeDelta.test_subclass_datetime.<locals>.<lambda>rK   é   r‡  c                 S   rˆ  r-   r   r†  r   r   r    rù   •  rú   r‰  c                 S   rŠ  r-   r   r†  r   r   r    rù   –  rú   rI   )r   r   rí   r*   r€   )	r+   r‘  r‹  r  rŒ  r6   r  rŽ  r  r   r   r    Útest_subclass_datetimeŒ  s   ý
ý€ÿz$TestTimeDelta.test_subclass_datetimec                 C   sš   t dddd}t dd}|  || d¡ |  || d¡ t dd	d
}t dd}|  || d¡ |  || d¡ t dƒ}|  tt||¡ |  tt||¡ d S )Nr"   rë   é   rä   r¾   g     Ã³@iÃ  rG   r’  ©rT   r¿   rS   g      @r   )r   r*   rv   r,  r	   r
   )r+   r¥   ÚsecondÚminuteÚzerotdr   r   r    Útest_divisionŸ  s   

zTestTimeDelta.test_divisionc                 C   s‚   t ddd}t dd}|| }|  |t dd¡ t ddd}|| }|  |t dd¡ t dƒ}|  tt||¡ |  tt|d	¡ d S ©
NrG   r’  r–  r"   rS   r¾   rE   r   r#   )r   r*   rv   r,  r   rw   )r+   r¥   r˜  Úrr™  r   r   r    Útest_remainder²  s   
zTestTimeDelta.test_remainderc                 C   s¦   t ddd}t dd}t||ƒ\}}|  |d¡ |  |t dd¡ t ddd}t||ƒ\}}|  |d¡ |  |t dd¡ t dƒ}|  tt||¡ |  tt|d	¡ d S r›  )r   Údivmodr*   rv   r,  rw   )r+   r¥   r˜  Úqrœ  r™  r   r   r    Útest_divmodÁ  s   
zTestTimeDelta.test_divmodc              	   C   sþ   dd„ }|   t¡ tƒ |dd> ƒ  W d   ƒ n1 sw   Y  |   t¡ tƒ |dd> ƒ  W d   ƒ n1 s;w   Y  dD ]:}|   t¡ tƒ ||ƒ  W d   ƒ n1 s[w   Y  |   t¡ tƒ ||ƒ  W d   ƒ n1 sww   Y  qBd S )Nc                    s   G ‡ fdd„dt ƒ}|ƒ S )Nc                       ó   e Zd Z‡ fdd„ZdS )zFTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloatc                    r˜   r-   r   r^   ©Ú	bad_ratior   r    Úas_integer_ratio×  rš   zWTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloat.as_integer_ratioN)r:   rN   rO   r¤  r   r¢  r   r    ÚBadFloatÖ  ó    r¥  )Úfloat)r£  r¥  r   r¢  r    Úget_bad_floatÕ  s   z4TestTimeDelta.test_issue31293.<locals>.get_bad_floatr"   r  )r   rh   ©r"   rG   rC   )rv   rw   r   rÄ   )r+   r¨  r£  r   r   r    Útest_issue31293Ò  s    ÿÿÿÿ€ýzTestTimeDelta.test_issue31293c                    sf  G ‡ fdd„dt ƒ}G ‡fdd„dƒ‰ G ‡fdd„dt ƒ‰dD ]‘‰| jˆd z	t|d	ƒd
 W n	 ty:   Y nw z	t|d	ƒd W n	 tyM   Y nw z	t|d	ƒd W n ttfyb   Y nw z
td	ƒ|d	ƒ  W n ttfyx   Y nw z
|d	ƒtd	ƒ  W n	 tyŒ   Y nw z
td	ƒ|d	ƒ  W n	 ty    Y nw W d   ƒ n1 s«w   Y  qd S )Nc                       s<   e Zd Z‡ fdd„Z‡ fdd„Z‡ fdd„Z‡ fdd„Zd	S )
z-TestTimeDelta.test_issue31752.<locals>.BadIntc                    ó   ˆ ƒ S r-   r   ©r+   Úother©ÚProdr   r    r.  ê  re   z5TestTimeDelta.test_issue31752.<locals>.BadInt.__mul__c                    r«  r-   r   r¬  r®  r   r    Ú__rmul__ì  re   z6TestTimeDelta.test_issue31752.<locals>.BadInt.__rmul__c                    r«  r-   r   r¬  r®  r   r    Ú__floordiv__î  re   z:TestTimeDelta.test_issue31752.<locals>.BadInt.__floordiv__c                    r«  r-   r   r¬  r®  r   r    Ú__rfloordiv__ð  re   z;TestTimeDelta.test_issue31752.<locals>.BadInt.__rfloordiv__N)r:   rN   rO   r.  r°  r±  r²  r   r®  r   r    ÚBadInté  s
    r³  c                       s$   e Zd Z‡ fdd„Z‡ fdd„ZdS )z+TestTimeDelta.test_issue31752.<locals>.Prodc                    r«  r-   r   r¬  ©ÚSumr   r    rg  ô  re   z3TestTimeDelta.test_issue31752.<locals>.Prod.__add__c                    r«  r-   r   r¬  r´  r   r    Ú__radd__ö  re   z4TestTimeDelta.test_issue31752.<locals>.Prod.__radd__N)r:   rN   rO   rg  r¶  r   r´  r   r    r¯  ó  s    r¯  c                       r¡  )z*TestTimeDelta.test_issue31752.<locals>.Sumc                    r˜   r-   r   r¬  ©Údivmodresultr   r    Ú
__divmod__ú  rš   z5TestTimeDelta.test_issue31752.<locals>.Sum.__divmod__N)r:   rN   rO   r¹  r   r·  r   r    rµ  ù  r¦  rµ  )Nr   )r   r"   rG   )r   rÐ   r·  r"   r¼   r–   r  )rV   rí   r   rw   rÄ   )r+   r³  r   )r¯  rµ  r¸  r    Útest_issue31752æ  sN   
ÿÿÿÿÿÿ€è€ÿzTestTimeDelta.test_issue31752N)"r:   rN   rO   r   ró   rÆ   r  r-  r   Zrequires_IEEE_754r1  r4  r8  r?  rD  rH  rU  r±   r´   ra  rc  rj  rm  rs  rt  ru  r~  r  r”  rš  r  r   rª  rº  r   r   r   r    rý   ä  s>    S

(	
!rý   c                   @   rl   )ÚTestDateOnlyc                 C   sì   t dddƒ}tdddddd}t|jƒ}|  |tdƒ¡ || }|  ||| ¡ || }|  ||| ¡ || }|  ||| ¡ | }t|jƒ}|  |tdƒ¡ || }|  ||| ¡ || }|  ||| ¡ || }|  ||| ¡ d S )	NéÐ  r"   rG   rC   rI   rD   rW  rE   )r   r   rÿ   r*   )r+   rc   ré   rÿ   Údt2r   r   r    Útest_delta_non_days_ignored!  s*   
ÿ

z(TestDateOnly.test_delta_non_days_ignoredN)r:   rN   rO   r¾  r   r   r   r    r»    s    r»  c                   @   ó   e Zd ZdZdS )ÚSubclassDater"   N©r:   rN   rO   Zsub_varr   r   r   r    rÀ  >  ó    rÀ  c                   @   s`  e Zd ZeZdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Z d9d:„ Z!d;d<„ Z"d=d>„ Z#d?d@„ Z$dAdB„ Z%dCdD„ Z&dEdF„ Z'dGdH„ Z(dIdJ„ Z)dKdL„ Z*dMdN„ Z+dOdP„ Z,dQdR„ Z-dSdT„ Z.dUS )VÚTestDatec                 C   s<   |   ddd¡}|  |jd¡ |  |jd¡ |  |jd¡ d S )NéÒ  rC   r"   )ró   r*   ÚyearÚmonthri  rb   r   r   r    r4  G  s   zTestDate.test_basic_attributesc                 C   sz   |   ddd¡| j  ¡ fD ].}t|ƒ}|  | d¡¡ |dd … }t|ƒ}|  ||¡ |   |j|j|j	¡}|  ||¡ qd S )Nr"   rG   rC   rX  r_  )
ró   Útodayr²   r~   r4   r³   r*   rÅ  rÆ  ri  ©r+   rc   r`  r½  r   r   r    ra  M  s   ÿõzTestDate.test_roundtripc              	   C   sÀ  dD ]B\}}}}|   |||¡}|  || ¡ ¡ | j  |¡}|  ||¡ t|dƒrD|  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ qt	t
td dƒD ]>}|   |dd¡}| ¡ }| j  |¡}|  ||¡ |dkr‹| j  |d ¡}|   |d dd¡}|  ||¡ |  | ¡ |d ¡ qMg d¢}d	D ]K\}}	|   |dd¡ ¡ }tt	dd
ƒ|ƒD ]5\}
}|
dkrµ|	rµ|d7 }t	d|d ƒD ]}|   ||
|¡}|  | ¡ |¡ |  || j  |¡¡ |d7 }q¼q§q’d S )N))r"   r"   r"   r"   )r"   r¡   r2  r5  )rG   r"   r"   én  )i™  rt   r¡   iËÖ
 Úhourr   r"   rF   r¡   r2  )r2  é   r2  r’  r2  r’  r2  r2  r’  r2  r’  r2  ))r¼  T)rÄ  Fr“  rG   )ró   r*   Ú	toordinalÚfromordinalÚhasattrrÊ  r˜  r—  Úmicrosecondr  r   r   Úzip)r+   ÚyÚmrC  ÚnZfromordrÅ  Úd2ZdimZisleaprÆ  Zmaxdayri  r   r   r    Útest_ordinal_conversions[  sH   
€€
üýþz!TestDate.test_ordinal_conversionsc                    s  | j j‰ |   ˆ jˆ jˆ j¡‰ ˆ  ¡ ‰ˆ  ˆ¡}|  ˆ |¡ |  t	‡ ‡fdd„¡ ˆ t
dd }|  | ¡ ˆd ¡ |  || j  ˆd ¡¡ | j j‰ |   ˆ jˆ jˆ j¡‰ ˆ  ¡ ‰ˆ  ˆ¡}|  ˆ |¡ |  t	‡ ‡fdd„¡ ˆ t
dd }|  | ¡ ˆd ¡ |  || j  ˆd ¡¡ d S )Nc                      s   ˆ   ˆd ¡S rk  ©rÍ  r   ©r  Zaordr   r    rù   ‘  ó    z0TestDate.test_extreme_ordinals.<locals>.<lambda>r"   r  c                      s   ˆ   ˆd ¡S rk  rÖ  r   r×  r   r    rù     rØ  )ró   r®   rÅ  rÆ  ri  rÌ  rÍ  r*   rv   rÄ   r   rz   )r+   r  r   r×  r    Útest_extreme_ordinalsŠ  s$   

zTestDate.test_extreme_ordinalsc                 C   s6  |   tdd¡ |   tdd¡ |  t| j td dd¡ |  t| j td dd¡ |   ddd¡ |   ddd¡ |  t| j ddd¡ |  t| j ddd¡ |   ddd¡ |   ddd¡ |   d	dd¡ |  t| j ddd
¡ |  t| j ddd¡ |  t| j ddd¡ |  t| j ddd¡ |  t| j ddd¡ |  t| j ddd¡ d S )Nr"   r¼  r¡   r   r“  rG   é   éÔ  é`	  r’  éÑ  é4  él  ru   )ró   r   r   rv   rÄ   r^   r   r   r    Útest_bad_constructor_arguments£  s"   z'TestDate.test_bad_constructor_argumentsc                 C   sü   |   ddd¡}|   ddd¡}|  ||¡ |  t|ƒt|ƒ¡ |di}d||< |  t|ƒd¡ |  || d¡ |  || d¡ |   ddd¡}|   ddd¡}|  ||¡ |  t|ƒt|ƒ¡ |di}d||< |  t|ƒd¡ |  || d¡ |  || d¡ d S )Nr¼  r¡   r2  r"   rG   rÝ  ©ró   r*   rA  rB  ©r+   rC  ÚeZdicr   r   r    rD  ¹  s$   zTestDate.test_hash_equalityc              	      s2  |   ddd¡‰ |   ddd¡}|   ddd¡}ˆ | }|  |jdttdddƒƒ ¡ |  |jd	¡ |  |jd	¡ tdƒ‰td
ƒ}|   ddd¡‰ |  ˆ ˆ |   ddd¡¡ |  ˆˆ  |   ddd¡¡ |  ˆ ˆ |   ddd¡¡ |  ˆ ˆ  |   ddd¡¡ |  ˆ | |   ddd¡¡ |  ˆ | |   ddd¡¡ |  ˆ d|  |   ddd¡¡ |  ˆ d|  |   ddd¡¡ |  ˆ | ˆ  |¡ |  ˆ ˆ ˆ  ˆ¡ |  ˆ | ˆ  | ¡ |  ˆ ˆ ˆ  ˆ ¡ |  ˆ ˆ |  | ¡ |  ˆ ˆ ˆ  ˆ ¡ |  ˆ ˆ |  |¡ |  ˆ ˆ ˆ  ˆ¡ |  ||ˆ  ˆ¡ dD ]/‰|  t	‡ ‡fdd„¡ |  t	‡ ‡fdd„¡ |  t	‡ ‡fdd„¡ |  t	‡ ‡fdd„¡ q|  t	‡ ‡fdd„¡ |  t	‡ ‡fdd„¡ |  t	‡ ‡fdd„¡ |  t	‡ ‡fdd„¡ |  t	‡ ‡fdd„¡ |  t	‡ fdd„¡ |  t	‡ fdd„¡ |  t	‡ fdd„¡ d S )NrÄ  r"   r2  é¤  rÝ  rG   é–A  rI   r   rF   rC   r_  rµ   é4   éÓ  r  c                      r   r-   r   r   r!  r   r    rù   ó  rú   z,TestDate.test_computations.<locals>.<lambda>c                      r"  r-   r   r   r!  r   r    rù   ô  rú   c                      r#  r-   r   r   r!  r   r    rù   õ  rú   c                      r$  r-   r   r   r!  r   r    rù   ö  rú   c                      r$  r-   r   r   ©r  ri  r   r    rù   ù  rú   c                      ó   ˆˆ  S r-   r   r   rè  r   r    rù   û  rú   c                      ó   ˆ ˆ S r-   r   r   rè  r   r    rù   ü  rú   c                      r%  r-   r   r   rè  r   r    rù   ý  rú   c                      r(  r-   r   r   rè  r   r    rù   þ  rú   c                      ó   ˆ ˆ  S r-   r   r   r+  r   r    rù   ÿ  rú   c                      ó   ˆ ˆ  S r-   r   r   r+  r   r    rù      rú   c                      ó   ˆ ˆ  S r-   r   r   r+  r   r    rù     rú   ©
ró   r*   rÿ   rB  r  r¿   r½   r   rv   rw   )r+   r  r  ÚdiffÚweekr   ©r  ri  r  r    r  Ò  sP   zTestDate.test_computationsc                 C   s   | j j}|tdƒtdƒfD ]8}| j j| }||8 }|  t|j|¡ |  t|j| ¡ | j j| }||7 }|  t|j|¡ |  t|j| ¡ qd S )Nr"   rG   )	ró   rb  r   r®   rv   re  rf  rg  rz   )r+   rh  ré   rc   r   r   r    rj    s   ÷zTestDate.test_overflowc                 C   sh   dd l }d\}}}| |||ddddddf	¡}| j |¡}|  |j|¡ |  |j|¡ |  |j|¡ d S )Nr   )iÏ  r_  r•  rÐ   )r   Úmktimeró   Úfromtimestampr*   rÅ  rÆ  ri  )r+   r   rÅ  rÆ  ri  ÚtsrC  r   r   r    Útest_fromtimestamp  s   
zTestDate.test_fromtimestampc                 C   ó    dD ]}|   t| jj|¡ qd S ©N)gZb××çtégZb××çti©rv   re  ró   ró  ©r+   Zinsaner   r   r    Útest_insane_fromtimestamp  ó
   ÿÿz"TestDate.test_insane_fromtimestampc                 C   sp   dd l }tdƒD ]}| j ¡ }|  ¡ }| j |¡}||kr n| d¡ q||kr6| j||tddd d S d S )Nr   rC   gš™™™™™¹?r  r¾   )ré   )r   r  ró   rÇ  ró  ÚsleepZassertAlmostEqualr   )r+   r   rÊ   rÇ  rô  Z
todayagainr   r   r    Ú
test_today&  s   

ÿÿzTestDate.test_todayc              	   C   s’   t dƒD ]B}|  |  ddd| ¡ ¡ |¡ |  |  ddd| ¡ ¡ |d ¡ |  |  ddd| ¡ ¡ |¡ |  |  ddd| ¡ ¡ |d ¡ qd S )NrF   rÄ  rC   rI   r"   rä  rG   )r  r*   ró   ÚweekdayZ
isoweekday)r+   r  r   r   r    Útest_weekdayC  s   "$úzTestDate.test_weekdayc              	   C   s  g d¢}g }|D ]*\}}| j |Ž }tdƒD ]}|t|ƒ }|dd… |d | f }| ||f¡ qq|D ]J\}	}
| j|	dd |  |	 ¡ |
¡ W d   ƒ n1 sSw   Y  | j|	dd |	 ¡ }|  |j|j|j	f|
¡ W d   ƒ n1 szw   Y  q5d S )N)))rç  r¡   é   )rç  ræ  r"   ))rç  r¡   rÚ  ©rÛ  r"   r"   ))rÛ  r"   rD   )rÛ  rG   r"   ))éÙ  r¡   rs   )r  ræ  r"   ))r  r¡   rË  )r  é5   r"   ))rª   r"   rI   )rª   r"   r"   rF   r   rG   Útuple)rC  Z
comparisonÚfields)
ró   r  r   Úappendrí   r*   ÚisocalendarrÅ  rð  rþ  )r+   Zweek_mondaysÚ
test_casesZcal_dateZiso_dateZ	base_dater  Znew_dateZnew_isorC  Zexp_isor¥   r   r   r    Útest_isocalendarL  s&   	
ýÿþ€ûzTestDate.test_isocalendarc                 C   sH   	 |   ddd¡}t | ¡ ¡}t |¡}|  t|ƒt¡ |  |d¡ d S )Néã  r"   )r
  r"   rG   )ró   r   r‰   r  rŠ   r*   r‡   r  )r+   rC  ÚpÚresr   r   r    Útest_isocalendar_picklingj  s   
z"TestDate.test_isocalendar_picklingc                 C   sš   d}t tt| ¡ ƒƒ}g }tdƒD ]3}|  d| dd¡}|  d| dd¡}|  | ¡ dd … | ¡ dd … ¡ | ¡ d dkrD| |¡ q|  ||¡ d S )	NaK  
              4   32   60   88
              9   37   65   93
             15   43   71   99
             20   48   76
             26   54   82

            105  133  161  189
            111  139  167  195
            116  144  172
            122  150  178
            128  156  184

            201  229  257  285
            207  235  263  291
            212  240  268  296
            218  246  274
            224  252  280

            303  331  359  387
            308  336  364  392
            314  342  370  398
            320  348  376
            325  353  381
        é  r¼  r¡   r2  i@  r"   r  )	ÚsortedÚmaprV   Úsplitr  ró   r*   r  r  )r+   ZISO_LONG_YEARS_TABLEZiso_long_yearsÚLr  rC  r‹  r   r   r    Útest_iso_long_yearsu  s   $
€zTestDate.test_iso_long_yearsc                 C   s"   |   ddd¡}|  | ¡ d¡ d S )NrG   rC   z
0002-03-02)ró   r*   Ú	isoformat©r+   r¥   r   r   r    Útest_isoformat›  ó   zTestDate.test_isoformatc                 C   s"   |   ddd¡}|  | ¡ d¡ d S )NrÄ  rC   rG   zSat Mar  2 00:00:00 2002)ró   r*   Úctimer  r   r   r    Ú
test_ctimeŸ  r  zTestDate.test_ctimec              	   C   sò   |   ddd¡}|  | d¡d¡ |  | d¡d¡ |  | d¡d¡ |  t|j¡ |  t|jdd	¡ |  t|jd
¡ |  | d¡d¡ |  | d¡d¡ dD ]}z| |¡ W qN ty`   Y qNw z| d¡ W n	 tyq   Y nw | d¡ d S )NéÕ  rC   rG   úm:%m d:%d y:%yzm:03 d:02 y:05rÈ   Aè  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxÚoneZtworQ   ú%mZ03ú	'%z' '%Z'ú'' '')z%eú%z%#u   %yí €%mz%f)ró   r*   Ústrftimerv   rw   rÄ   ÚUnicodeEncodeError)r+   r¥   Úfr   r   r    Útest_strftime£  s*   
ÿÿzTestDate.test_strftimec                 C   sz   |   ddd¡}zt d¡ W n ty   |  d¡ Y nw |  | d¡t d| ¡ ¡¡ |  | d¡t d| ¡ ¡¡ d S )Nr  rC   rG   r   z'time module does not support trailing %zm:%m d:%d y:%y %zm:03 d:02 y:05 %)ró   Ú_timer!  rÄ   r;   r*   Ú	timetupler  r   r   r    Útest_strftime_trailing_percentÊ  s   ÿþz'TestDate.test_strftime_trailing_percentc                 C   s  |   ddd¡}|  | d¡t|ƒ¡ |  td¡ | d¡ W d   ƒ n1 s(w   Y  G dd„ d| j ƒ}|dddƒ}|  | d¡d¡ G d	d
„ d
| j ƒ}|dddƒ}|  | d¡t|ƒ¡ dD ]#}|  | |¡| |¡¡ |  | |¡| |¡¡ |  | |¡d
¡ qad S )Né×  r_  r#   rÈ   úmust be str, not inté{   c                   @   rl   )zTestDate.test_format.<locals>.Ac                 S   rœ   ©NÚAr   r^   r   r   r    Ú__str__ã  rš   z'TestDate.test_format.<locals>.A.__str__N©r:   rN   rO   r-  r   r   r   r    r,  â  rp   r,  c                   @   rl   )zTestDate.test_format.<locals>.Bc                 S   rœ   ©NÚBr   ©r+   Úformat_specr   r   r    r!  ê  rš   z(TestDate.test_format.<locals>.B.strftimeN©r:   rN   rO   r!  r   r   r   r    r0  é  rp   r0  ©r  zm:%m d:%d y:%y H:%H M:%M S:%Sú%z %Z©ró   r*   Ú
__format__r¯   ÚassertRaisesRegexrw   r!  ©r+   rc   r,  r  r0  r  Úfmtr   r   r    Útest_formatÚ  s    ÿúzTestDate.test_formatc                 C   s`   t | jtƒr	t}nt}|  | jj|¡ |  | jj|¡ |  | jjt¡ |  	| jj| jjk¡ d S r-   )
r   ró   r   r   r€   r®   rz   rb  r   r~   )r+   Zexpected_classr   r   r    rc  ÷  s   zTestDate.test_resolution_infoc                 C   sz   | j j| j j }|jd d |j d |j }tdd|ƒ}|  ||¡ |  | j j| | j j¡ |  | j j| | j j¡ d S )Nrë   é  é@B r   )ró   rz   r®   rÿ   r¿   r½   r   r*   )r+   ÚbigrÓ  Z	justasbigr   r   r    Útest_extreme_timedelta  s   zTestDate.test_extreme_timedeltac                 C   sp  t dƒD ]±}|  ddd| ¡}| ¡ }|  |ddd| ddd|d| df	¡ |  ddd| ¡}| ¡ }|  |ddd| dddd| d d| df	¡ |  ddd| ¡}| ¡ }|  |ddd| dddd| d d	| df	¡ |  |jd¡ |  |jd¡ |  |jd| ¡ |  |jd¡ |  |jd¡ |  |j	d¡ |  |j
d| d ¡ |  |jd	| ¡ |  |jd¡ qd S )
NrF   rä  r"   rG   r   rÐ   ru   rC   é=   )r  ró   r&  r*   Útm_yearÚtm_monÚtm_mdayÚtm_hourÚtm_minÚtm_secÚtm_wdayÚtm_ydayÚtm_isdst)r+   r  rC  r¥   r   r   r    Útest_timetuple  s(   &..êzTestDate.test_timetuplec                 C   óZ   d}| j |Ž }tD ]\}}}| ||¡}| |¡}|  ||¡ q	|  | ¡ | d¡¡ d S )N©rK   rF   rµ   rG   ©ró   rˆ   r‰   rŠ   r*   Ú
__reduce__Ú__reduce_ex__rG  r   r   r    rH  %  ó   

zTestDate.test_picklingc                 C   óF   g d¢}d}| j |Ž }|D ]}tD ]}||dd}|  ||¡ qqd S )N)s'   cdatetime
date
(S'\x07\xdf\x0b\x1b'
tR.s   cdatetime
date
(UßtR.s   €cdatetime
date
Uß…R.)éß  rt   é   Úlatin1©Úencoding©ró   Úpickle_loadsr*   ©r+   rŒ  r”   rŽ  ÚdatarŠ   r   r   r   r    Útest_compat_unpickle.  s   
þÿzTestDate.test_compat_unpicklec                    s  |   ddd¡‰|   ddd¡}|  ˆ|¡ |  ˆ|k¡ |  ˆ|k¡ |  ˆ|k¡ |  ˆ|k ¡ |  ˆ|k¡ dD ][}| j |Ž }|  ˆ|k ¡ |  |ˆk¡ |  ˆ|k¡ |  |ˆk¡ |  ˆ|k¡ |  |ˆk¡ |  ˆ|k¡ |  |ˆk¡ |  ˆ|k¡ |  |ˆk ¡ |  ˆ|k¡ |  |ˆk¡ q9tD ]o‰ |  ˆˆ kd¡ |  ˆˆ kd¡ |  ˆ ˆkd¡ |  ˆ ˆkd¡ |  t‡ ‡fdd„¡ |  t‡ ‡fd	d„¡ |  t‡ ‡fd
d„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ q—d S )NrG   rC   rI   rI  FTc                      rL  r-   r   r   rK  r   r    rù   Z  rú   z'TestDate.test_compare.<locals>.<lambda>c                      rM  r-   r   r   rK  r   r    rù   [  rú   c                      rN  r-   r   r   rK  r   r    rù   \  rú   c                      rO  r-   r   r   rK  r   r    rù   ]  rú   c                      rP  r-   r   r   rK  r   r    rù   ^  rú   c                      rQ  r-   r   r   rK  r   r    rù   _  rú   c                      rR  r-   r   r   rK  r   r    rù   `  rú   )ró   r*   r~   rØ   rS  rv   rw   rT  r   rK  r    rU  ;  sF   
ôzTestDate.test_comparec                    sú   |   ddd¡‰ |  ˆ dkd¡ |  dˆ kd¡ |  ˆ dkd¡ |  dˆ kd¡ |  t‡ fdd„¡ |  t‡ fd	d„¡ G d
d„ dƒ}|ƒ ‰|  ˆ ˆkd¡ |  ˆˆ kd¡ |  ˆ ˆkd¡ |  ˆˆ kd¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ d S )Nr¼  rI   rD   r"   FTc                      rö   rk  r   r   ©Úourr   r    rù   l  rú   z-TestDate.test_mixed_compare.<locals>.<lambda>c                      rû   rk  r   r   r\  r   r    rù   m  rú   c                   @   r  )z.TestDate.test_mixed_compare.<locals>.SomeClassNr€  r   r   r   r    Ú	SomeClassq  r‚  r^  c                      rP  r-   r   r   ©r]  Ztheirr   r    rù   y  rú   c                      rL  r-   r   r   r_  r   r    rù   z  rú   )ró   r*   rv   rw   )r+   r^  r   r_  r    Útest_mixed_compareb  s   zTestDate.test_mixed_comparec                 C   s    |   | jj¡ |   | jj¡ d S r-   )r~   ró   r®   rz   r^   r   r   r    ru  |  s   zTestDate.test_boolc                 C   sZ   dD ](}|   |dd¡}| d¡d| kr*|  | d¡d| ¡ |  | d¡d| ¡ qd S )N)r"   r@  r
  éc   r9  iç  r  é²  r"   z%Yz%04dú%dz%4Y)ró   r!  r*   )r+   rÑ  rC  r   r   r    Útest_strftime_y2k  s   €özTestDate.test_strftime_y2kc           
      C   óž   | j }g d¢}||Ž }|  || ¡ ¡ d}dD ]&\}}|d d … }|||< ||Ž }|jd
i ||i¤Ž}	|  ||	¡ |d7 }q|dddƒ}| jt|jdd	 d S )Nr©  r   )©rÅ  rG   ©rÆ  rC   ©ri  rI   r"   r¼  rG   rÚ  rÝ  ©rÅ  r   ©ró   r*   rÕ   rv   rÄ   ©
r+   Úclsr”   Úbaser  r6   ÚnewvalÚnewargsrŽ  Úgotr   r   r    Útest_replaceŽ  s   
zTestDate.test_replacec                 C   s:   G dd„ d| j ƒ}|dddƒ}|  t|jddƒ|¡ d S )Nc                   @   r  )z4TestDate.test_subclass_replace.<locals>.DateSubclassNr€  r   r   r   r    r  ¤  r‚  r  éÜ  r"   iÝ  ri  ©ró   r†   r‡   rÕ   )r+   r  rc   r   r   r    Útest_subclass_replace£  s   zTestDate.test_subclass_replacec                    ó–   G ‡ fdd„dˆ j ƒ}d}ˆ j |Ž }||i ddi¤Ž}ˆ  |j|¡ ˆ  |jd¡ ˆ  |jd¡ ˆ  | ¡ | ¡ ¡ ˆ  | d¡|j|j d ¡ d S )Nc                       ó$   e Zd ZdZ‡ fdd„Zdd„ ZdS )z&TestDate.test_subclass_date.<locals>.CrQ   c                    ó6   |  ¡ }| d¡}ˆ jj| g|¢R i |¤Ž}||_|S ©NrÁ   ©rÞ   Úpopró   r…   rÁ   ©rl  r”   ÚkwsZtemprÁ   Úresultr^   r   r    r…   ¯  ó
   
z.TestDate.test_subclass_date.<locals>.C.__new__c                 S   ó   || j  | j S r-   )rÅ  rÆ  ©r+   Ústartr   r   r    Únewmeth¶  ó   z.TestDate.test_subclass_date.<locals>.C.newmethN©r:   rN   rO   Ú	theAnswerr…   r‚  r   r^   r   r    ÚC¬  ó    r†  ©rç  rI   r  rÁ   rF   rQ   rH   )	ró   r*   r9   r…  rÁ   rÌ  r‚  rÅ  rÆ  ©r+   r†  r”   rx   r½  r   r^   r    r  ª  ó   
"zTestDate.test_subclass_datec              
      sþ   G ‡ fdd„dˆ j ƒ}d}d}d}||Ž }ˆ  ||¡ ˆ  |jd¡ t |tdƒ¡ ¡ }d|ffd	|ffd
|ffg}|D ]@\}}	||fD ]7}
ˆ jt	|
ƒ|d$ t
|
|ƒ}||	Ž }ˆ  ||¡ ˆ  ||¡ ˆ  |jd¡ W d   ƒ n1 svw   Y  qDq<d S )Nc                       r¡  )zCTestDate.test_subclass_alternate_constructors.<locals>.DateSubclassc                    ó$   ˆ j j| g|¢R i |¤Ž}d|_|S ©NrF   ©ró   r…   rÁ   ©rl  r”   Úkwargsr}  r^   r   r    r…   Ç  ó   zKTestDate.test_subclass_alternate_constructors.<locals>.DateSubclass.__new__N©r:   rN   rO   r…   r   r^   r   r    r  Æ  r¦  r  rˆ  i·( z
2003-04-14rF   r   rÍ  ró  Úfromisoformat©Zbase_obj_typeÚconstr_name)ró   r€   r*   rÁ   r   Úcombiner   Ú	timestamprí   r‡   Úgetattr)r+   r  r”   Zd_ordÚd_isoformatÚbase_drô  r  r”  Úconstr_argsÚbase_objÚconstrrc   r   r^   r    Ú$test_subclass_alternate_constructorsÄ  s4   ý
ÿ
ó€þÿz-TestDate.test_subclass_alternate_constructorsc                 C   óR   d}t |Ž }tD ]\}}}| ||¡}| |¡}|  ||¡ |  t|t ƒ¡ qd S )NrL  )rÀ  rˆ   r‰   rŠ   r*   r~   rU   rG  r   r   r    Útest_pickling_subclass_dateð  s   
üz$TestDate.test_pickling_subclass_datec              	   C   sÜ   d}t | jtƒs|d d… }dD ]}|  t| j|d d… | |dd …  ¡ qt | jtƒrP|  td¡ |  tdgt|ƒ ƒd¡ W d   ƒ n1 sKw   Y  tdd	ƒD ]}|  |d d… t|gƒ |dd …  ¡ qUd S )
Ns
   1995-03-25rI   )ó   9ó    ó   ó   ÿrG   rC   ú^bad tzinfo state arg$r"   r“   r“  )	r   ró   r   rv   rw   r8  ÚbytesrB  r  )r+   rm  Z
month_byteZord_byter   r   r    Útest_backdoor_resistanceú  s   	
ÿÿ*üz!TestDate.test_backdoor_resistancec              	   C   sp   g d¢}|D ]/}| j |Ž }| ¡ }| j|d | j  | ¡ ¡}|  ||¡ W d   ƒ n1 s0w   Y  qd S )N)©r"   r"   r"   )r  rG   r  ©rß  r"   r"   )r¼  rG   rÚ  ©rÛ  rt   r¡   )rÛ  rI   rC   ©iá  rD   r’  )Údt_str©ró   r  rí   r’  r*   )r+   Ú
base_datesÚdt_tuplerc   r«  Údt_rtr   r   r    Útest_fromisoformat  s   

ý€ýzTestDate.test_fromisoformatc                 C   s<   G dd„ d| j ƒ}|dddƒ}| | ¡ ¡}|  ||¡ d S )Nc                   @   r  )z:TestDate.test_fromisoformat_subclass.<locals>.DateSubclassNr€  r   r   r   r    r  )  r‚  r  rr   r¡   r  )ró   r’  r  r€   )r+   r  rc   r¯  r   r   r    Útest_fromisoformat_subclass(  s   z$TestDate.test_fromisoformat_subclassc              	   C   sL   g d¢}|D ]}|   t¡ | j |¡ W d   ƒ n1 sw   Y  qd S )N)rÈ   rÑ   z	009-03-04Z	123456789z
200a-12-04z
2009-1a-04z
2009-12-0az
2009-01-32z
2009-02-29Z20090228u   2009í €02í €28)rv   rÄ   ró   r’  ©r+   Zbad_strsÚbad_strr   r   r    Útest_fromisoformat_fails2  s   ÿ€ÿz!TestDate.test_fromisoformat_failsc              	   C   óT   dd t  d¡g}|D ]}|  t¡ | j |¡ W d   ƒ n1 s"w   Y  q
d S )Ns
   2009-03-01z
2009-03-01©ÚioÚStringIOrv   rw   ró   r’  ©r+   Z	bad_typesZbad_typer   r   r    Ú"test_fromisoformat_fails_typeerrorF  s   ÿ€ÿz+TestDate.test_fromisoformat_fails_typeerrorc                 C   s’   ddddddddd	d
dddt ddftddfg}|D ]-}| j|d | j|Ž }| ¡ }| jj|Ž }|  ||¡ W d   ƒ n1 sAw   Y  qd S )N)éà  rI   rC   )r  r"   rG   )iØ  r¡   r’  )rª   r"   rG   )r  r¡   r2  r¨  )rß  r¡   r2  )r¼  r"   r"   )r¼  r¡   r2  r  )rÛ  r¡   r2  r§  )r(   r¡   r2  r"   r¡   r2  )Ú	datecomps)r   r   rí   ró   r  Úfromisocalendarr*   )r+   Zdatesr¼  ZdobjÚisocalZd_roundtripr   r   r    Útest_fromisocalendarM  s2   ñ
ú€ÿzTestDate.test_fromisocalendarc              
   C   sx   g d¢}|D ]3}| j |d# |  t¡ | jj|Ž  W d   ƒ n1 s%w   Y  W d   ƒ n1 s4w   Y  qd S )N))r
  r   r"   )r
  rÐ   r"   )r
  é6   r"   )r
  r"   r   )r
  r"   rÐ   )r
  r"   é   )r
  r  r"   )r  r"   r"   )r   r"   r"   )i–˜ r"   r"   )ì        r"   r"   )r
  rÂ  r"   )r
  r"   rÂ  ©r¾  )rí   rv   rÄ   ró   r½  )r+   Úisocalsr¾  r   r   r    Ú!test_fromisocalendar_value_errorsk  s   ÿ€ÿ€ÿz*TestDate.test_fromisocalendar_value_errorsc              
   C   sÄ   t tdd„ g}g }d}tdƒD ]}|D ]}t|ƒ}||| ƒ||< | t|ƒ¡ qq|D ]3}| j|d# |  t¡ | j	j
|Ž  W d   ƒ n1 sKw   Y  W d   ƒ n1 sZw   Y  q,d S )Nc                 S   ó   d S r-   r   )Úxr   r   r    rù   …  ó    z;TestDate.test_fromisocalendar_type_errors.<locals>.<lambda>)r
  r"   r"   rC   rÃ  )r¯   r§  r  Úlistr  r  rí   rv   rw   ró   r½  )r+   Zerr_txformersrÄ  rm  r  ZtxformerZerr_valr¾  r   r   r    Ú test_fromisocalendar_type_errors  s*   ý	ýÿ€ÿ€ÿz)TestDate.test_fromisocalendar_type_errorsN)/r:   rN   rO   r   ró   r4  ra  rÕ  rÙ  rà  rD  r  rj  rõ  rú  rý  rÿ  r	  r  r  r  r  r$  r'  r;  rc  r?  rJ  rH  r[  rU  r`  ru  rd  rq  rt  r  r  rŸ  r¦  r°  r±  r´  rº  r¿  rÅ  rÊ  r   r   r   r    rÃ  A  sX    /2		&'
	',

rÃ  c                   @   r¿  )ÚSubclassDatetimer"   NrÁ  r   r   r   r    rË  œ  rÂ  rË  c                   @   sê  e Zd ZeZdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Ze d)¡d*d+„ ƒZd,d-„ Ze d.¡d/d0„ ƒZd1d2„ Zd3d4„ Zd5d6„ Z d7d8„ Z!d9d:„ Z"e# $e%j&d;kd<¡d=d>„ ƒZ'e# $e%j&d;kd<¡d?d@„ ƒZ(dAdB„ Z)dCdD„ Z*dEdF„ Z+dGdH„ Z,dIdJ„ Z-dKdL„ Z.dMdN„ Z/dOdP„ Z0e dQ¡dRdS„ ƒZ1dTdU„ Z2dVdW„ Z3dXdY„ Z4dZd[„ Z5d\d]„ Z6d^d_„ Z7d`da„ Z8dbdc„ Z9ddde„ Z:dfdg„ Z;dhdi„ Z<djdk„ Z=dlS )mÚTestDateTimec                 C   sx   |   ddddd¡}|  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ d S )NrÄ  rC   r"   r¡   r   ©	ró   r*   rÅ  rÆ  ri  rÊ  r˜  r—  rÏ  rb   r   r   r    r4  £  s   z"TestDateTime.test_basic_attributesc              	   C   s|   |   ddddddd¡}|  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ d S )NrÄ  rC   r"   r¡   r¶   é@  rÍ  rb   r   r   r    Útest_basic_attributes_nonzero­  s   z*TestDateTime.test_basic_attributes_nonzeroc              
   C   s’   |   ddddddd¡| j  ¡ fD ]6}t|ƒ}|  | d¡¡ |d	d … }t|ƒ}|  ||¡ |   |j|j|j	|j
|j|j|j¡}|  ||¡ qd S )
Nr"   rG   rC   rI   rD   rK   rF   rX  r_  )ró   r   r²   r~   r4   r³   r*   rÅ  rÆ  ri  rÊ  r˜  r—  rÏ  rÈ  r   r   r    ra  ¹  s   ÿþózTestDateTime.test_roundtripc              
   C   sb  |   ddddddd¡}|  | ¡ d¡ |  | d¡d¡ |  | d	¡d
¡ |  | d¡d¡ |  | d¡d¡ |  |jddd¡ |  |jddd¡ |  |jddd¡ |  |jddd¡ |  |jddd¡ |  |jddd¡ |  |jd	ddd¡ | jt|jdd | jt|jdd |  t|ƒd
¡ | j dddddddtjd}|  |jddd¡ |   ddddddd¡}|  |jddd ¡ |   dddddd¡}|  |jddd¡ |  |jddd¡ |  |jddd!¡ |   ddd¡}|  | ¡ d"¡ |  | d¡d"¡ |  | d	¡d#¡ |  t|ƒd#¡ tt	d$d%d&ƒ}| j ddd|d}|  | ¡ d'¡ d S )(Nr"   rG   rC   rI   rD   r*  z0001-02-03T04:05:01.000123rw  ú z0001-02-03 04:05:01.000123ú z0001-02-03 04:05:01.000123rÑ   u   0001-02-03í €04:05:01.000123r—   ©Útimespecz0001-02-03T04rT   z0001-02-03T04:05r¿   z0001-02-03T04:05:01r   z0001-02-03T04:05:01.000r½   Úauto)ÚseprÓ  z0001-02-03 04:05ÚfooéL@ r   z0001-02-03T04:05:01.999+00:00z0001-02-03T04:05:01.999z0001-02-03T04:05:01.000000z0002-03-02T00:00:00z0002-03-02 00:00:00é   r¾   ZXXXz0002-03-02T00:00:00+00:00:16)
ró   r*   r  rv   rÄ   r¯   r   r­   rP   r   rÚ   r   r   r    r  É  sD   ÿzTestDateTime.test_isoformatc           	      C   sä   dt ddfdt ddfdt ddd	fd
t ddddfdt dddddfg}ddtjfdtt dƒƒfg}|dd„ |D ƒ7 }|  dddddd¡}d}|D ]$\}}|j|d}|| }| j|d W d   ƒ n1 sjw   Y  qKd S )Nú05:00rD   r–   ú02:00rG   ú06:27rK   rS  r·   ú12:32:30r¡   ru   r’  rä   ú02:04:09.123456rI   r_  r  ræ   ©rÈ   Nú+00:00r   c                 S   ó2   g | ]\}}d D ]\}}|| t || ƒf‘qqS ©))ú-rÐ   )ú+r"   r   ©r   rŽ  r  ÚprefixÚsignr   r   r    r!     ó    ýþÿz8TestDateTime.test_isoformat_timezone.<locals>.<listcomp>r»  r"   é%   z2016-04-01T12:37:09r   ©Útzi©r   r   r­   ró   rÕ   rí   )	r+   Ú	tzoffsetsÚtzinfosZdt_baseÚexp_baseÚexp_tzrê  rc   Úexpr   r   r    Útest_isoformat_timezoneõ  s*   û	ýþ,€ýz$TestDateTime.test_isoformat_timezonec              	   C   s&  |   ddddddd¡}|  | d¡t|ƒ¡ |  td	¡ | d¡ W d   ƒ n1 s,w   Y  G d
d„ d| j ƒ}|dddddddƒ}|  | d¡d¡ G dd„ d| j ƒ}|dddddddƒ}|  | d¡t|ƒ¡ dD ]#}|  | |¡| |¡¡ |  | |¡| |¡¡ |  | |¡d¡ qmd S )Nr(  r_  r#   rI   rD   r"   r*  rÈ   r)  c                   @   rl   )z#TestDateTime.test_format.<locals>.Ac                 S   rœ   r+  r   r^   r   r   r    r-    rš   z+TestDateTime.test_format.<locals>.A.__str__Nr.  r   r   r   r    r,    rp   r,  c                   @   rl   )z#TestDateTime.test_format.<locals>.Bc                 S   rœ   r/  r   r1  r   r   r    r!  #  rš   z,TestDateTime.test_format.<locals>.B.strftimeNr3  r   r   r   r    r0  "  rp   r0  r4  r6  r9  r   r   r    r;    s    ÿúzTestDateTime.test_formatc              	   C   sh   dd l }|  ddddddd¡}|  | ¡ d¡ |  ddd	dddd¡}|  | ¡ | | | ¡ ¡¡¡ d S )
Nr   rÄ  rC   rG   é   rD   r*  zSat Mar  2 18:03:05 2002r   )r   ró   r*   r  rò  r&  )r+   r   r¥   r   r   r    Útest_more_ctime0  s
   $zTestDateTime.test_more_ctimec              	   C   s    |   dddddd¡}|   dddddd¡}|   dddddd¡}|  ||¡ |  ||k¡ |   tddd	d
d
d¡}tdd}|| }|  || |¡ |  ||k ¡ d S )NrÄ  rC   r"   r_  r   r#   r¡   r2  rµ   r¶   r  r¼   )ró   r*   r~   r   r   )r+   rx   r½  Údt3r  r   r   r    Útest_tz_independent_comparing@  s   
z*TestDateTime.test_tz_independent_comparingc                 C   sB   G dd„ dt ƒ}|  ddddddd|ddƒ¡}|  t|jd¡ d S )	Nc                   @   rl   )zDTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfoc                 S   s   G dd„ dt ƒ}|dƒS )Nc                   @   rl   )zZTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStrc                 W   rÆ  r-   r   )r+   r”   r   r   r    rÕ   W  rš   zbTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStr.replaceN)r:   rN   rO   rÕ   r   r   r   r    ÚMyStrV  rp   rö  r6   )r¯   )r+   rc   rö  r   r   r    rf   U  s   zKTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tznameN)r:   rN   rO   rf   r   r   r   r    ÚMyTzInfoT  rp   r÷  r  rC   rG   r   r6   ú%Z)rP   ró   rv   rw   r!  )r+   r÷  r¥   r   r   r    Ú%test_strftime_with_bad_tzname_replaceR  s   z2TestDateTime.test_strftime_with_bad_tzname_replacec                 C   sæ  |   tdd¡ |   tdd¡ |  t| j td dd¡ |  t| j td dd¡ |   ddd¡ |   ddd¡ |  t| j ddd¡ |  t| j ddd¡ |   ddd¡ |   ddd¡ |   d	dd¡ |  t| j ddd
¡ |  t| j ddd¡ |  t| j ddd¡ |  t| j ddd¡ |  t| j ddd¡ |  t| j ddd¡ |   dddd¡ |   dddd¡ |  t| j dddd¡ |  t| j dddd¡ |   ddddd¡ |   ddddd¡ |  t| j ddddd¡ |  t| j ddddd¡ |   dddddd¡ |   dddddd¡ |  t| j dddddd¡ |  t| j dddddd¡ |   ddddddd¡ |   ddddddd¡ |  t| j ddddddd¡	 |  t| j ddddddd¡	 | jt| j ddddd | jt| j ddddd |  t| j dddddddd d¡ d S )Nr"   r¼  r¡   r   r“  rG   rÚ  rÛ  rÜ  r’  rÝ  rÞ  rß  ru   r2  rµ   rÐ   rë   r¶   r  rå   r=  ©Úfold)ró   r   r   rv   rÄ   rw   r^   r   r   r    rà  ]  s^   
ÿ
þ
ÿ
ÿ
ÿz+TestDateTime.test_bad_constructor_argumentsc                 C   s  |   dddddd¡}|   dddddd¡}|  ||¡ |  t|ƒt|ƒ¡ |di}d||< |  t|ƒd¡ |  || d¡ |  || d¡ |   d	ddd
dd¡}|   d	ddd
dd¡}|  ||¡ |  t|ƒt|ƒ¡ |di}d||< |  t|ƒd¡ |  || d¡ |  || d¡ d S )Nr¼  r¡   r2  rµ   r’  é   r"   rG   rÝ  r   rD   rá  râ  r   r   r    rD  ’  s$   zTestDateTime.test_hash_equalityc                    s<  |   ddd¡‰ |   ddd¡}ˆ | }|  |jdttdddƒƒ ¡ |  |jd¡ |  |jd¡ |   ddd	d
d¡‰ tdddƒ}tddƒ}tdƒ‰tdƒ}|  ˆ | |   ddd	dd¡¡ |  |ˆ  |   ddd	dd¡¡ |  ˆ d|  |   ddddd¡¡ |  ˆ | |   ddd	dd¡¡ |  | ˆ  |   ddd	dd¡¡ |  ˆ | ˆ |  ¡ |  ˆ d|  |   ddddd¡¡ |  ˆ ˆ |   dddd
d¡¡ |  ˆ ˆ |   dddd
d¡¡ |  ˆ | |   dddd
d¡¡ |  ˆ | |   dd	dd
d¡¡ |  ˆ d|  |   dddd
d¡¡ |  ˆ d|  |   dddd
d¡¡ |  ˆ | ˆ  |¡ |  ˆ ˆ ˆ  ˆ¡ |  ˆ | ˆ  |¡ |  ˆ | ˆ  |¡ |  ˆ | ˆ  | ¡ |  ˆ ˆ ˆ  ˆ ¡ |  ˆ | ˆ  | ¡ |  ˆ | ˆ  | ¡ |  ˆ ˆ |  | ¡ |  ˆ ˆ ˆ  ˆ ¡ |  ˆ ˆ |  | ¡ |  ˆ ˆ |  | ¡ |  ˆ ˆ |  |¡ |  ˆ ˆ ˆ  ˆ¡ |  ˆ ˆ |  |¡ |  ˆ ˆ |  |¡ |  ˆ |ˆ | |  |   ddddddd¡¡ |  ˆ |ˆ | |  ˆ | ˆ | | ¡ |  ˆ |ˆ | |  |   dd	ddddd¡¡ |  ˆ |ˆ | |  ˆ | ˆ | | ¡ dD ]/‰|  t	‡ ‡fdd„¡ |  t	‡ ‡fd d„¡ |  t	‡ ‡fd!d„¡ |  t	‡ ‡fd"d„¡ q|  t	‡ ‡fd#d„¡ |  t	‡ ‡fd$d„¡ |  t	‡ ‡fd%d„¡ |  t	‡ ‡fd&d„¡ |  t	‡ ‡fd'd„¡ |  t	‡ fd(d„¡ |  t	‡ fd)d„¡ |  t	‡ fd*d„¡ d S )+NrÄ  r"   r2  rä  rå  rI   r   rC   rG   rü  rK   r  r<  rF   rò  r#   rØ  rò   rs   r_  rµ   ræ  rç  rÝ  r   rD   r¶   r  r  c                      r   r-   r   r   r!  r   r    rù   Ü  rú   z0TestDateTime.test_computations.<locals>.<lambda>c                      r"  r-   r   r   r!  r   r    rù   Ý  rú   c                      r#  r-   r   r   r!  r   r    rù   Þ  rú   c                      r$  r-   r   r   r!  r   r    rù   ß  rú   c                      r$  r-   r   r   rè  r   r    rù   â  rú   c                      ré  r-   r   r   rè  r   r    rù   ä  rú   c                      rê  r-   r   r   rè  r   r    rù   å  rú   c                      r%  r-   r   r   rè  r   r    rù   æ  rú   c                      r(  r-   r   r   rè  r   r    rù   ç  rú   c                      rë  r-   r   r   r+  r   r    rù   è  rú   c                      rì  r-   r   r   r+  r   r    rù   é  rú   c                      rí  r-   r   r   r+  r   r    rù   ë  rú   rî  )r+   r  rï  ZmillisecrÊ  rð  r   rñ  r    r  ©  s‚   
" """ÿÿÿÿzTestDateTime.test_computationsc                 C   rK  )N©rK   rF   rµ   rò   r¶   r"   é   rG   rM  rG  r   r   r    rH  í  rP  zTestDateTime.test_picklingc              	   C   sn   |   ddddddd¡}ttjd ƒD ]"}t ||¡}t |¡}|  |jd¡ |  |jd¡ |  |j	d¡ qd S )	Nrç  rG   rF   rØ  é0   rè  iÔÆ r"   )
ró   r  r   ÚHIGHEST_PROTOCOLr‰   rŠ   r*   rÅ  rÆ  ri  )r+   r  r   r`  r  r   r   r    Útest_more_picklingö  s   
ûzTestDateTime.test_more_picklingc                 C   rž  )Nrý  )rË  rˆ   r‰   rŠ   r*   r~   rU   rG  r   r   r    Útest_pickling_subclass_datetimeÿ  ó   
üz,TestDateTime.test_pickling_subclass_datetimec                 C   rQ  )N)s@   cdatetime
datetime
(S'\x07\xdf\x0b\x1b\x14;\x01\x00\x10\x00'
tR.s#   cdatetime
datetime
(U
ß;  tR.s$   €cdatetime
datetime
U
ß;  …R.)rR  rt   rS  rò   r¶   r"   rþ  rT  rU  rW  rY  r   r   r    r[  	  s   

þÿz!TestDateTime.test_compat_unpicklec                 C   sR  g d¢}| j |Ž }| j |Ž }|  ||¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k ¡ |  ||k¡ tt|ƒƒD ]i}|d d … }|| d ||< | j |Ž }|  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k ¡ |  ||k¡ |  ||k¡ q=d S )N)r¼  rt   rÚ  rò   rV  rØ  r  r"   )ró   r*   r~   rØ   r  rB  )r+   r”   r=  r>  r  ro  r   r   r    Útest_more_compare	  s4   


ñzTestDateTime.test_more_comparec                 C   sd   |   |j|j¡ |   |j|j¡ |   |j|j¡ |   |j|j¡ |   |j	|j
¡ |   |j|j¡ d S r-   )r*   rA  rÅ  rB  rÆ  rC  ri  rD  rÊ  rE  r˜  rF  r—  )r+   rŽ  rp  r   r   r    Úverify_field_equality;	  s   z"TestDateTime.verify_field_equalityc                 C   ó6   dd l }|  ¡ }| |¡}| j |¡}|  ||¡ d S ©Nr   )r   Ú	localtimeró   ró  r  ©r+   r   rô  rŽ  rp  r   r   r    rõ  C	  ó
   
zTestDateTime.test_fromtimestampc                 C   r  r  )r   Úgmtimeró   Úutcfromtimestampr  r	  r   r   r    Útest_utcfromtimestampK	  r
  z"TestDateTime.test_utcfromtimestampúEST+05EDT,M3.2.0,M11.1.0c              	   C   s*  |   ddd¡}|  | ¡ d¡ |   ddddddd¡}|  | ¡ d¡ |   ddd	dd
¡}|jdd}|  | j  | ¡ ¡|tdd ¡ |  | j  | ¡ ¡|tdd ¡ |   dd	ddd
¡}|  | j  | ¡ ¡|¡ |   ddd¡|   ddd¡fD ]}z| ¡ }W n	 ty‡   Y qvw |  | j  |¡|¡ qvd S )Nrb  r"   g     ”Ñ@rG   rC   rI   çøÆ À6Õ@rr  rt   r’  rú  r–   i'  r¡   )ró   r*   r–  rÕ   ró  r   re  )r+   r¥   Út0r=  r`  r   r   r    Útest_timestamp_naiveU	  s0   
ÿÿÿ ÿúz!TestDateTime.test_timestamp_naivec                 C   sŠ   | j dddtjd}|  | ¡ d¡ | j dddddddtjd}|  | ¡ d¡ | j dddddddttd	d
dƒd}|  | ¡ d¡ d S )Nrb  r"   r   r*  rG   rC   rI   g½7†  ­@rÏ   r–   r“   r  )ró   r   r­   r*   r–  r   r  r   r   r    Útest_timestamp_awareq	  s   
ÿÿ
ÿz!TestDateTime.test_timestamp_awarezMSK-03c              	   C   sv  | j j| j jfD ]°}|dƒ}|  |jd¡ |  |jd¡ |dƒ}z|dƒ}W n	 ty/   Y n?w |  |jd¡ |  |jd¡ |dƒ}|  ||¡ |dƒ}|  ||¡ |dƒ}|  ||¡ |d	ƒ}|  |jd¡ |  |jd
¡ |dƒ}|  ||¡ |dƒ}|  ||¡ |dƒ}|  |jd¡ |  |jd¡ |dƒ}|  |jd¡ |  |jd¡ |dƒ}|  |jd¡ |  |jd¡ qd S )Nr   gíµ ÷Æ°>gíµ ÷Æ°¾r¶   rå   g:Œ0âŽyE¾g1Eîð2®¾gH¯¼šò×z¾rp  i¼# gH¯¼šò×z>g1Eîð2®>g<"2îþÿï?gËPÊÿÿï?r"   rn  ro  )ró   ró  r  r*   r—  rÏ  ÚOSError)r+   Zftsr'  r  Z	minus_oner¥   r   r   r    rs  |	  sJ   ÿþÛz&TestDateTime.test_microsecond_roundingc                 C   s¨   |   d¡ | jjjtjd}| ¡ }|  |d¡ W d   ƒ n1 s#w   Y  |   d¡ | jjjtjdd}| ¡ }|  |d¡ W d   ƒ d S 1 sMw   Y  d S )Nzminimum UTCr   lýÿÿÿ w#o9 zmaximum UTCr   ©r   rÏ  g €¿ úMB)	rí   ró   r®   rÕ   r   r­   r–  r*   rz   )r+   Úmin_dtÚmin_tsÚmax_dtÚmax_tsr   r   r    Útest_timestamp_limits¥	  s   úÿ"øz"TestDateTime.test_timestamp_limitsc           
   
   C   s¼  z| j  d¡ W n ttfy   |  d¡ Y nw | j jtdd }| ¡ }| j jj	dd}| j jtdd  ¡ td	d
d
d 
¡  }d||fd||ffD ])\}}}| j|||d | j  |¡}|  ||¡ W d   ƒ n1 spw   Y  qLd|tddd 
¡  fd|tdd 
¡  fd|tdd 
¡  fd|tdd 
¡  fg}	|	D ]8\}}| j||d% |  ttf¡ | j  |¡ W d   ƒ n1 sÇw   Y  W d   ƒ n1 sÖw   Y  q£d S )Nìýÿÿÿ    úTest not valid on this platformr"   r  r   ©rÏ  rµ   r–   r   r¶   rä   ÚminimumÚmaximum©rô  rŽ  úToo small by a littler¡   rr  úToo small by a lotr  úToo big by a littleúToo big by a lot©rô  )ró   ró  r  re  r;   r®   r   r–  rz   rÕ   r6  rí   r*   rv   rÄ   )
r+   r  r  r  r  Ú	test_namerô  rŽ  Úactualr  r   r   r    Útest_fromtimestamp_limits¸	  sB   ÿÿþý€üý€ÿ€ÿz&TestDateTime.test_fromtimestamp_limitsc                 C   sÖ  z| j  d¡ W n ttfy   |  d¡ Y nw | j jjtjd}| 	¡ }| j j
jdtjd}| 	¡ }d||jd dfd||jd dffD ]G\}}}| j|||d2 z| j  |¡}W n ttfyw }	 z|  t|	ƒ¡ W Y d }	~	nd }	~	ww |  ||¡ W d   ƒ n1 sˆw   Y  qFd	|d
 fd|tdd ¡  fd|d
 fd|tdd ¡  fg}
|
D ]8\}}| j||d% |  ttf¡ | j  |¡ W d   ƒ n1 sÔw   Y  W d   ƒ n1 sãw   Y  q°d S )Nr  r  r   r   ©rÏ  r   r  r  r  r   r"   r!  r  r  r"  r#  r$  )ró   r  r  re  r;   r®   rÕ   r   r­   r–  rz   rí   r¯   r*   r   r6  rv   rÄ   )r+   r  r  r  r  r%  rô  rŽ  r&  Úexcr  r   r   r    Útest_utcfromtimestamp_limitsß	  sH   ÿþ€ÿú€


üý€ÿ€ÿz)TestDateTime.test_utcfromtimestamp_limitsc                 C   rö  r÷  rø  rù  r   r   r    rú  
  rû  z&TestDateTime.test_insane_fromtimestampc                 C   rö  r÷  )rv   re  ró   r  rù  r   r   r    Útest_insane_utcfromtimestamp
  rû  z)TestDateTime.test_insane_utcfromtimestampÚwin32z*Windows doesn't accept negative timestampsc                 C   s   | j  d¡ d S )NçÍÌÌÌÌÌð¿)ró   ró  r^   r   r   r    Ú!test_negative_float_fromtimestamp
  s   z.TestDateTime.test_negative_float_fromtimestampc                 C   s.   | j  d¡}|  ||   ddddddd¡¡ d S )	Nr-  i±  r¡   r2  rµ   r¶   rV  ið~ )ró   r  r*   )r+   rC  r   r   r    Ú$test_negative_float_utcfromtimestamp
  s   "z1TestDateTime.test_negative_float_utcfromtimestampc                 C   sf   dd l }tdd}tdƒD ]}| j ¡ }| j |  ¡ ¡}t|| ƒ|kr& nq|  t|| ƒ|¡ d S )Nr   r"   r¾   rC   )r   r   r  ró   Úutcnowr  r  ZassertLessEqual)r+   r   Z	tolerancerÊ   Zfrom_nowÚfrom_timestampr   r   r    Útest_utcnow#
  s   

ÿzTestDateTime.test_utcnowc              	   C   s¾  d}d}t  | j||¡}| j ||¡}|  ||¡ |  t|ƒ| j¡ |  t|ƒ| j¡ g d¢}|D ]0\}}| j||d t  | j||¡}| j ||¡}|  ||¡ W d   ƒ n1 s\w   Y  q1| jj}|  |ddƒ ¡ dt	 ¡ |  |ddƒ ¡ d	t	 ¡ |  |d
dƒ ¡ t
dddd ¡ ddtj tjd ffD ];\}}|dk r«d}	| }
nd}	|}
t|
d dƒ\}}d |	|||¡}||dƒ}|  | ¡ t
|d¡ |  | ¡ |¡ qd\}}|||ƒ}|  | ¡ dt dt	  ¡ |  | ¡ d¡ |  | |¡|¡ |  |ddƒjd ¡ |  t¡ |ddƒ W d   ƒ n	1 s!w   Y  |  t¡ |ddƒ W d   ƒ n	1 s<w   Y  |  t¡ |ddƒ W d   ƒ d S 1 sXw   Y  d S )Nz2004-12-01 13:02:47.197z%Y-%m-%d %H:%M:%S.%f))u   2004-12-01í €13:02:47.197u   %Y-%m-%dí €%H:%M:%S.%f)u   2004í €12-01 13:02:47.197u   %Yí €%m-%d %H:%M:%S.%f)u   2004-12-01 13:02í €47.197u   %Y-%m-%d %H:%Mí €%S.%f)ÚstringÚformatz+0002ú%zrG   z-0002rE   z-00:02:01.000003r"   rC   )rT   r¿   r½   )r   r»   )r   ZGMTr   râ  rã  r  z{}{:02d}{:02d} {}r5  r¾   )z	+1234 UTCr5  r¡   rE  r»   rø  z-2400z-000Úz)Ú	_strptimeZ_strptime_datetimeró   Ústrptimer*   r†   r‡   rí   rd   ÚMINUTEr   r%  r   rf   rž  r4  rÉ   r!  r   rv   rÄ   )r+   r3  r4  rŽ  rp  Úinputsr8  Z	tzsecondsrf   ræ  r¿   r—   rT   Údtstrrc   r:  r   r   r    Útest_strptime1
  s\   
ÿü€þÿ

66<zTestDateTime.test_strptimec                 C   s^  | j j}|  t¡ |ddƒ}W d   ƒ n1 sw   Y  |   dddddd¡}|   dddddd¡}|   dddd	d	d	¡}|   ddd
d	d	d	¡}ddd|fddd|fddd|fddd|fddd|fddd|fddd|fddd|fddd|fd dd!|fg
}|D ]0\}}	}
}d"| }| j||	|
|d# ||	|
ƒ}| j|||d$ W d   ƒ n1 s§w   Y  q|d S )%Nz01/02/3 04:05:06z%d/%m/%y %H:%M:%Srç  rG   r"   rI   rD   rK   r   é   rc  z1/02/03 4:5:6r  z01/2/03 4:5:6z%Hz01/02/03 4:05:06z%Mz01/02/03 04:5:06z%Sz01/02/03 04:05:6z%jz2/03 04am:05:06z%j/%y %I%p:%M:%Sz%Iz02/03 4am:05:06z%wz6/04/03z%w/%U/%yz%Wz6/4/2003z%u/%W/%Yz%Vz%u/%V/%Gztest single digit )Úreasonr3  r4  Útarget)Úmsg)ró   r8  rv   rÄ   rí   r*   )r+   r8  Znewdaterx   r½  rô  Zdt4r:  r>  r3  r4  r?  r   r   r    Útest_strptime_single_digitl
  s>   þ









õý
û€þz'TestDateTime.test_strptime_single_digitc                 C   s$  |   dddddd¡}|  | ¡ d¡ |  | ¡ |j|j|j|j|j|j| 	¡ | 
¡ t|jddƒ 
¡  d d	f	¡ | ¡ }|  |j|j¡ |  |j|j¡ |  |j|j¡ |  |j|j¡ |  |j|j¡ |  |j|j¡ |  |j| 	¡ ¡ |  |j| 
¡ t|jddƒ 
¡  d ¡ |  |jd	¡ d S )
NrÛ  r¡   r2  rK   r   é!   )	rÛ  r¡   r2  rK   r   rB  rI   rÉ  rÐ   r"   rÐ   )ró   r*   r&  rÅ  rÆ  ri  rÊ  r˜  r—  rþ  rÌ  r   rA  rB  rC  rD  rE  rF  rG  rH  rI  )r+   r¥   Úttr   r   r    Útest_more_timetupleŽ
  s0   
üÿÿÿz TestDateTime.test_more_timetuplec              	   C   s–   |   ddddddd¡}|  | d¡d	¡ d
D ]!\\}}}ttd||d ƒ}|j|d}|  | d¡d| ¡ qz| d¡ W d S  tyJ   Y d S w )NrÛ  r¡   r2  rK   r   rB  é/   z%m %d %y %f %S %M %H %jz12 31 04 000047 33 22 06 366)))rB  r*  z	33.000123))rB  r   Z33rG   )r—   r¿   r½   r   r5  z-0200u   %yí €%m %Hí €%M)ró   r*   r!  r   r   rÕ   r"  )r+   r¥   r`  r  r6  r£   r   r   r    Útest_more_strftime¤
  s   ÿÿzTestDateTime.test_more_strftimec              	   C   sL   |   ddddddd¡}|  | ¡ tdddƒ¡ |  | ¡ tddddƒ¡ d S )NrÄ  rC   rI   rò  é-   éÒ  )ró   r*   r   r   rb   r   r   r    Útest_extract´
  s   zTestDateTime.test_extractc              	   C   s’  t dddƒ}tddddƒ}|  ddddddd¡}| jj}|||ƒ}|  ||¡ |||d}|  ||¡ |  ||  ¡ ¡ |  || ¡ ¡ |  |||  ¡ | ¡ ƒ¡ |  t|¡ |  t||¡ |  t|||¡ |  t|||d¡ |  t|||dd	¡ |  t|d
d¡ |  t||d¡ |  t|d
|¡ |||tjƒ}|  	|j
tj¡ |||tjd}|  	|j
tj¡ tƒ }|||ƒ}|  |  ¡ |¡ |  | ¡ |¡ d S )NrÄ  rC   rI   rò  rG  rH  )r   r   r"   rG   r   r   r   )r   r   ró   r•  r*   rv   rw   r   r­   r†   r   )r+   rC  r¥   rŽ  r•  rc   r   r   r    Útest_combine¹
  s6   

zTestDateTime.test_combinec           
      C   re  )N)r"   rG   rC   rI   rD   rK   rF   r   )rf  rg  rh  ©rÊ  rD   ©r˜  rK   ©r—  rF   ©rÏ  rÁ  r"   r¼  rG   rÚ  rÝ  ri  r   rj  rk  r   r   r    rq  Û
  s   
zTestDateTime.test_replaceZEDT4c                 C   s\  | j  ¡ }tddƒ}|jttdddƒd}|  | ¡ |¡ |  t	|j||¡ |  t	|j|¡ |j|dtddd }|  | |¡|¡ |  |j|d	|¡ G d
d„ dt
ƒ}|ƒ }|  t|j|¡ |  |j|d |¡|¡ G dd„ dt
ƒ}|ƒ }|  t|j|¡ G dd„ dt
ƒ}	|	ƒ }
|j|
d}|  t	¡ | ¡  W d   ƒ d S 1 s§w   Y  d S )Né,   Z0044rJ   r–   ÚEDTr   rI   r·   ©r£   c                   @   rð   )z+TestDateTime.test_astimezone.<locals>.Bogusc                 S   rÆ  r-   r   rb   r   r   r    rd     rÈ  z5TestDateTime.test_astimezone.<locals>.Bogus.utcoffsetc                 S   ó   t dƒS r  r   rb   r   r   r    rg     rú   z/TestDateTime.test_astimezone.<locals>.Bogus.dstN©r:   rN   rO   rd   rg   r   r   r   r    ÚBogus   ó    rT  c                   @   rð   )z/TestDateTime.test_astimezone.<locals>.AlsoBogusc                 S   rR  r  r   rb   r   r   r    rd     rú   z9TestDateTime.test_astimezone.<locals>.AlsoBogus.utcoffsetc                 S   rÆ  r-   r   rb   r   r   r    rg   	  rÈ  z3TestDateTime.test_astimezone.<locals>.AlsoBogus.dstNrS  r   r   r   r    Ú	AlsoBogus  rU  rV  c                   @   rð   )z,TestDateTime.test_astimezone.<locals>.Brokenc                 S   rœ   rk  r   rb   r   r   r    rd     rÈ  z6TestDateTime.test_astimezone.<locals>.Broken.utcoffsetc                 S   rœ   rk  r   rb   r   r   r    rg     rÈ  z0TestDateTime.test_astimezone.<locals>.Broken.dstNrS  r   r   r   r    ÚBroken  rU  rW  )ró   r   rP   rÕ   r   r   r*   Ú
astimezonerv   rw   r   rÄ   )r+   rc   r#  Údt_utcZdt_frT  ZbogrV  ZalsobogrW  ÚbrokenZ	dt_brokenr   r   r    Útest_astimezoneô
  s,   


"ÿzTestDateTime.test_astimezonec                    sœ   G ‡ fdd„dˆ j ƒ}d}ˆ j |Ž }||i ddi¤Ž}ˆ  |j|¡ ˆ  |jd¡ ˆ  |jd¡ ˆ  | ¡ | ¡ ¡ ˆ  | d¡|j|j |j	 d ¡ d S )Nc                       rv  )z.TestDateTime.test_subclass_datetime.<locals>.CrQ   c                    rw  rx  ry  r{  r^   r   r    r…     r~  z6TestDateTime.test_subclass_datetime.<locals>.C.__new__c                 S   s   || j  | j | j S r-   )rÅ  rÆ  r—  r€  r   r   r    r‚  !  s   z6TestDateTime.test_subclass_datetime.<locals>.C.newmethNr„  r   r^   r   r    r†    r‡  r†  )rç  rI   r  r¡   r“  é)   rÁ   rF   rQ   rH   )
ró   r*   r9   r…  rÁ   rÌ  r‚  rÅ  rÆ  r—  r‰  r   r^   r    r”    s   
ÿ
ÿz#TestDateTime.test_subclass_datetimec                    s@  G ‡ fdd„dˆ j ƒ}d}d}d}||Ž }ˆ  ||¡ ˆ  |jd¡ | ¡ }d|f|fd|tjf| tj¡fd|f|fd	|f|fd
|df|fdt|dd… Ž t	|dd … Ž f|fg}|D ]A\}}	}
||fD ]7}ˆ j
t|ƒ|d$ t||ƒ}||	Ž }ˆ  ||¡ ˆ  ||
¡ ˆ  |jd¡ W d   ƒ n1 s—w   Y  qeq\d S )Nc                       r¡  )zTTestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclassc                    r‹  rŒ  r  rŽ  r^   r   r    r…   3  r  z\TestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclass.__new__Nr‘  r   r^   r   r    r‘  2  r¦  r‘  )rç  rI   r  r¡   r’  é   r  z2003-04-14T12:30:15.123456ghÍëTMÏArF   ró  r  r’  r8  z%Y-%m-%dT%H:%M:%S.%fr•  r   rC   r“  )ró   r€   r*   rÁ   r–  r   r­   rX  r   r   rí   r‡   r—  )r+   r‘  r”   r˜  Zutc_tsr™  rô  r  r”  rš  rŽ  r›  Úconstructorrc   r   r^   r    Ú-test_subclass_alternate_constructors_datetime0  s>   


ÿ

$ø
ÿ
ó€þÿz:TestDateTime.test_subclass_alternate_constructors_datetimec              
      sÀ   G ‡ fdd„dˆ j ƒ}ddi fddi fdddtjifdddttdd	d
ƒifg}|D ]3\}}}ˆ  |¡! t||ƒ}|di |¤Ž}ˆ  ||¡ ˆ  |jd¡ W d   ƒ n1 sXw   Y  q*d S )Nc                       r¡  )z8TestDateTime.test_subclass_now.<locals>.DateTimeSubclassc                    r‹  rŒ  r  rŽ  r^   r   r    r…   d  r  z@TestDateTime.test_subclass_now.<locals>.DateTimeSubclass.__new__Nr‘  r   r^   r   r    r‘  c  r¦  r‘  r   r0  Znow_utcr£   Z	now_fixedrÏ   r–   r“   rF   r   )	ró   r   r­   r   rí   r—  r€   r*   rÁ   )r+   r‘  r  r6   Z	meth_namer  rœ  rc   r   r^   r    Útest_subclass_nowa  s   ü
û€ÿzTestDateTime.test_subclass_nowc              
      s¸   g d¢}g d¢‰ ddg}d t jt tddƒt tddƒg‰‡ ‡‡fdd	„|D ƒ}|D ]/}|D ]*}|j|d
}ˆj|d ˆj |¡}ˆ ||¡ W d   ƒ n1 sSw   Y  q.q*d S )N)r§  r¨  r©  rª  )©r   r   r   r   )r   r   r   ih­ )r   r   r   éG” )r¡   r’  rG  rb  rÐ  rw  rÏ   r–   rG   c                    s:   g | ]}ˆ D ]}ˆD ]}ˆj g |¢|¢R d |iŽ‘q
qqS r   )ró   )r   Z
date_tupleZ
time_tuplerê  ©Z
base_timesr+   rí  r   r    r!     s    þý"ýz<TestDateTime.test_fromisoformat_datetime.<locals>.<listcomp>©rÕ  ©r;  )r   r­   r   r  rí   ró   r’  r*   )r+   r­  Ú
separatorsÚdtsrc   rÕ  r;  r¯  r   rc  r    Útest_fromisoformat_datetimey  s(   þÿþ€ýÿz(TestDateTime.test_fromisoformat_datetimec              
   C   sâ   |   ddddddd¡}tddtddtd	d
dtddddtdddddg}|dd„ |D ƒ7 }d tjttddƒg}|dd„ |D ƒ7 }|D ](}|j|d}| ¡ }| j|d | j  |¡}W d   ƒ n1 siw   Y  qFd S )Nrr   r¡   r’  rG  épQ rD   r–   rG   rK   rS  r·   ru   rä   rI   r_  r  ræ   c                 S   ó   g | ]}d | ‘qS ©rÐ   r   ©r   r  r   r   r    r!   ¦  ó    z<TestDateTime.test_fromisoformat_timezone.<locals>.<listcomp>r   c                 S   ó   g | ]}t |ƒ‘qS r   r   rl  r   r   r    r!   «  rm  r   ©Útstr©ró   r   r   r­   rÕ   r  rí   r’  )r+   Zbase_dtrì  rí  rê  rc   r;  r¯  r   r   r    Útest_fromisoformat_timezoneœ  s&   
üÿÿ€üz(TestDateTime.test_fromisoformat_timezonec              
   C   s|   g d¢}|D ]5}|   ddddddd¡}|j|d	}| j|d
 | j  |¡}|  ||¡ W d   ƒ n1 s6w   Y  qd S )N)	rÐ  rw  úõ   Â€u   Êu   á›‡u   æ™‚u   ðŸrÑ   rƒ  r"   r2  rµ   r¶   rE  iuç rd  re  r¬  ©r+   rf  rÕ  rc   r;  r¯  r   r   r    Útest_fromisoformat_separatorsµ  s   þ€üz*TestDateTime.test_fromisoformat_separatorsc              	   C   sx   ddg}|D ]3}|   ddddd¡}|j|d}| j|d	 | j  |¡}|  ||¡ W d   ƒ n1 s4w   Y  qd S )
Nrã  râ  rƒ  r"   r2  r¡   r]  rd  re  r¬  ru  r   r   r    Útest_fromisoformat_ambiguousÆ  s   þ€üz)TestDateTime.test_fromisoformat_ambiguousc                 C   s   ddg}d t jt tddƒt tddƒt tdddƒg}g d	¢}t|ƒD ]Y\}}|D ]R}|D ]M}|d
krEd|d d  }|dd… |f }| j|dd| … d|iŽ}	|	j|d}
| j|
d | j |
¡}|  |	|¡ W d   ƒ n1 svw   Y  q.q*q$d S )N)r  r¡   rI   rÁ  rü  rG  r  )r  r¡   rI   rÁ  rü  rG  r   rÏ   r–   rG   rK   rS  r·   ©r—   rT   r¿   r   r½   r   r  r   rI   r   rÒ  re  ©	r   r­   r   Ú	enumerateró   r  rí   r’  r*   )r+   Zdatetime_basesrí  Ú	timespecsÚiprô  rê  r®  Únew_microsecondsrc   r;  r¯  r   r   r    Útest_fromisoformat_timespecsÑ  s2   þýþ€ùÿÿz)TestDateTime.test_fromisoformat_timespecsc              
   C   óx   g d¢}|D ]3}| j |d# |  t¡ | j |¡ W d   ƒ n1 s%w   Y  W d   ƒ n1 s4w   Y  qd S )N)rÈ   rÑ   z2009.04-19T03z2009-04.19T03z2009-04-19T0az2009-04-19T03:1a:45z2009-04-19T03:15:4az2009-04-19T03;15:45z2009-04-19T03:15;45z2009-04-19T03:15:4500:00z2009-04-19T03:15:45.2345z2009-04-19T03:15:45.1234567z 2009-04-19T03:15:45.123456+24:30z 2009-04-19T03:15:45.123456-24:30u   2009-04-10á›‡á›‡á›‡á›‡á›‡12:15u   2009-04í €10T12:15u   2009-04-10T12í €15z2009-04-19T1z2009-04-19T12:3z2009-04-19T12:30:4z2009-04-19T12:z2009-04-19T12:30:z2009-04-19T12:30:45.z2009-04-19T12:30:45.123456+z2009-04-19T12:30:45.123456-z!2009-04-19T12:30:45.123456-05:00az2009-04-19T12:30:45.123-05:00az2009-04-19T12:30:45-05:00a©r³  ©rí   rv   rÄ   ró   r’  r²  r   r   r    Ú!test_fromisoformat_fails_datetimeë  s   ÿ€ÿ€ÿz.TestDateTime.test_fromisoformat_fails_datetimec                 C   sL   d}|   tt t|ƒ¡¡ | j |¡ W d   ƒ d S 1 sw   Y  d S )Nu   2018-01-03í €01:0113)r8  rÄ   ÚreÚescaper²   ró   r’  )r+   r;  r   r   r    Ú"test_fromisoformat_fails_surrogate  s   "ÿz/TestDateTime.test_fromisoformat_fails_surrogatec                 C   s$   d}| j  |¡}|  |jtj¡ d S )Nz2014-04-19T13:21:13+00:00)ró   r’  r†   r   r   r­   )r+   r«  rc   r   r   r    Útest_fromisoformat_utc  s   z#TestDateTime.test_fromisoformat_utcc                 C   s`   G dd„ d| j ƒ}|ddddddd	ttd
ddƒd}| | ¡ ¡}|  ||¡ |  ||¡ d S )Nc                   @   r  )zBTestDateTime.test_fromisoformat_subclass.<locals>.DateTimeSubclassNr€  r   r   r   r    r‘     r‚  r‘  rr   r¡   r  r_  r’  rG  i®ú r#   r·   r   )ró   r   r   r’  r  r*   r€   )r+   r‘  rc   r¯  r   r   r    r±    s   ÿz(TestDateTime.test_fromisoformat_subclassN)>r:   rN   rO   r   ró   r4  rÏ  ra  r  rñ  r;  ró  rõ  rù  rà  rD  r  rH  r  r  r[  r  r  rõ  r  r   Úrun_with_tzr  r  rs  r  r'  r*  rú  r+  ÚunittestZskipIfr8   Úplatformr.  r/  r2  r<  rA  rD  rF  rI  rJ  rq  r[  r”  r_  r`  rh  rr  rv  rw  r~  r‚  r…  r†  r±  r   r   r   r    rÌ  Ÿ  st    
,5D			!


(''		

;""
 1#&rÌ  c                   @   s"   e Zd ZeZe d¡dd„ ƒZdS )ÚTestSubclassDateTimeznot appropriate for subclassesc                 C   rÆ  r-   r   r^   r   r   r    ra  /  s   z#TestSubclassDateTime.test_roundtripN)r:   rN   rO   rË  ró   rˆ  Úskipra  r   r   r   r    rŠ  ,  s    rŠ  c                   @   r¿  )ÚSubclassTimer"   NrÁ  r   r   r   r    rŒ  3  rÂ  rŒ  c                   @   sÀ   e Zd ZeZdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-S ).ÚTestTimec                 C   sH   |   dd¡}|  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ d S )Nr¡   r   ©ró   r*   rÊ  r˜  r—  rÏ  r  r   r   r    r4  :  s
   zTestTime.test_basic_attributesc                 C   sL   |   dddd¡}|  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ d S )Nr¡   r¶   rÎ  rŽ  r  r   r   r    rÏ  A  s
   z&TestTime.test_basic_attributes_nonzeroc                 C   sp   |   dddd¡}t|ƒ}|  | d¡¡ |dd … }t|ƒ}|  ||¡ |   |j|j|j|j	¡}|  ||¡ d S )Nr"   rG   rC   rI   rX  r_  )
ró   r²   r~   r4   r³   r*   rÊ  r˜  r—  rÏ  )r+   r¥   r`  r>  r   r   r    ra  J  s   ÿzTestTime.test_roundtripc                    sL  g d¢}| j |Ž ‰| j |Ž }|  ˆ|¡ |  ˆ|k¡ |  ˆ|k¡ |  ˆ|k¡ |  ˆ|k ¡ |  ˆ|k¡ tt|ƒƒD ]i}|d d … }|| d ||< | j |Ž }|  ˆ|k ¡ |  |ˆk¡ |  ˆ|k¡ |  |ˆk¡ |  ˆ|k¡ |  |ˆk¡ |  ˆ|k¡ |  |ˆk¡ |  ˆ|k¡ |  |ˆk ¡ |  ˆ|k¡ |  |ˆk¡ q=tD ]z‰ |  ˆˆ kd¡ |  ˆˆ kd¡ |  ˆ ˆkd¡ |  ˆ ˆkd¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fd	d„¡ |  t‡ ‡fd
d„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ q©d S )N©r"   rG   rC   rI   r"   FTc                      rJ  r-   r   r   rK  r   r    rù   {  rú   z)TestTime.test_comparing.<locals>.<lambda>c                      rL  r-   r   r   rK  r   r    rù   |  rú   c                      rM  r-   r   r   rK  r   r    rù   }  rú   c                      rN  r-   r   r   rK  r   r    rù   ~  rú   c                      rO  r-   r   r   rK  r   r    rù     rú   c                      rP  r-   r   r   rK  r   r    rù   €  rú   c                      rQ  r-   r   r   rK  r   r    rù     rú   c                      rR  r-   r   r   rK  r   r    rù   ‚  rú   )	ró   r*   r~   rØ   r  rB  rS  rv   rw   )r+   r”   r>  r  ro  r   rK  r    Útest_comparingY  sN   


ózTestTime.test_comparingc                 C   s  |   dd¡ |   dd¡ |  t| j dd¡ |  t| j dd¡ |   dd¡ |   dd¡ |  t| j dd¡ |  t| j dd¡ |   ddd¡ |   ddd¡ |  t| j ddd¡ |  t| j ddd¡ |   dddd¡ |   dddd¡ |  t| j dddd¡ |  t| j dddd¡ d S )	Nr   rµ   rÐ   rë   r¶   r  rå   r=  )ró   rv   rÄ   r^   r   r   r    rà  „  s    z'TestTime.test_bad_constructor_argumentsc                 C   sü   |   ddd¡}|   ddd¡}|  ||¡ |  t|ƒt|ƒ¡ |di}d||< |  t|ƒd¡ |  || d¡ |  || d¡ |   ddd¡}|   ddd¡}|  ||¡ |  t|ƒt|ƒ¡ |di}d||< |  t|ƒd¡ |  || d¡ |  || d¡ d S )Nrµ   r’  rü  r"   rG   r   rD   rá  râ  r   r   r    rD  š  s$   zTestTime.test_hash_equalityc                 C   s¦  |   dddd¡}|  | ¡ d¡ |  | ¡ t|ƒ¡ |   ¡ }|  | ¡ d¡ |  | ¡ t|ƒ¡ | j dd}|  | ¡ d¡ |  | ¡ t|ƒ¡ | j d	d}|  | ¡ d
¡ |  | ¡ t|ƒ¡ | j dd}|  | ¡ d¡ |  | ¡ t|ƒ¡ | j dd}|  | ¡ d¡ |  | ¡ t|ƒ¡ | j dd}|  | ¡ d¡ |  | ¡ t|ƒ¡ | j dd}|  | ¡ d¡ |  | ¡ t|ƒ¡ | j ddddd}|  |jddd¡ |  |jddd¡ |  |jddd¡ |  |jddd ¡ |  |jd!dd"¡ |  |jd#dd"¡ | jt|jd$d | jt|jd%d | j dddd&d}|  |jddd'¡ | j dddd(d}|  |jddd)¡ |  |jd!dd*¡ |  |jd#dd¡ d S )+NrI   rD   r"   r*  z04:05:01.000123z00:00:00r  z00:00:00.000001r#   z00:00:00.000010r9  z00:00:00.000100r  z00:00:00.001000r  z00:00:00.010000i † z00:00:00.100000r¡   rE  rF  r  )rÊ  r˜  r—  rÏ  r—   rÒ  Z12rT   z12:34r¿   z12:34:56r   z12:34:56.123r½   z12:34:56.123456rÔ  ZmonkeyrÑ   r×  z12:34:56.999r   z12:34:56.000z12:34:56.000000)ró   r*   r  r¯   rv   rÄ   r  r   r   r    r  ±  sN   zTestTime.test_isoformatc           	      C   sÞ   dt ddfdt ddfdt ddd	fd
t ddddfdt dddddfg}ddtjfdtt dƒƒfg}|dd„ |D ƒ7 }|  ddd¡}d}|D ]$\}}|j|d}|| }| j|d W d   ƒ n1 sgw   Y  qHd S )NrÙ  rD   r–   rÚ  rG   rÛ  rK   rS  r·   rÜ  r¡   ru   r’  rä   rÝ  rI   r_  r  ræ   rÞ  rß  r   c                 S   rà  rá  r   rä  r   r   r    r!   ô  rç  z4TestTime.test_isoformat_timezone.<locals>.<listcomp>rè  z12:37:09r   ré  rë  )	r+   rì  rí  Zt_baserî  rï  rê  r¥   rð  r   r   r    rñ  å  s*   û	ýþ,€ýz TestTime.test_isoformat_timezonec                 C   s"   | j dd}| jt|jdd d S )Nr"   ©r—  rC   )rÖ  )ró   rv   rw   r  r  r   r   r    Útest_1653736  s   zTestTime.test_1653736c                 C   sZ   |   dddd¡}|  | d¡d¡ |  | d¡d¡ z| d	¡ W d S  ty,   Y d S w )
Nr"   rG   rC   rI   z%H %M %S %fz01 02 03 000004r  r  u   %Hí €%M)ró   r*   r!  r"  r  r   r   r    r$    s   ÿzTestTime.test_strftimec                 C   s  |   dddd¡}|  | d¡t|ƒ¡ |  td¡ | d¡ W d   ƒ n1 s)w   Y  G dd	„ d	| j ƒ}|ddddƒ}|  | d¡d	¡ G d
d„ d| j ƒ}|ddddƒ}|  | d¡t|ƒ¡ dD ]#}|  | |¡| |¡¡ |  | |¡| |¡¡ |  | |¡d¡ qdd S )Nr"   rG   rC   rI   rÈ   r)  r*  c                   @   rl   )zTestTime.test_format.<locals>.Ac                 S   rœ   r+  r   r^   r   r   r    r-    rš   z'TestTime.test_format.<locals>.A.__str__Nr.  r   r   r   r    r,    rp   r,  c                   @   rl   )zTestTime.test_format.<locals>.Bc                 S   rœ   r/  r   r1  r   r   r    r!  $  rš   z(TestTime.test_format.<locals>.B.strftimeNr3  r   r   r   r    r0  #  rp   r0  )z%H %M %Sr6  )r+   r¥   r,  r  r0  r  r:  r   r   r    r;    s    ÿüzTestTime.test_formatc              	   C   s   |   t|  dddd¡ƒd¡ |   t|  dddd¡ƒd¡ |   t|  d	ddd
¡ƒd¡ |   t|  dddd	¡ƒd¡ |   t|  ddd	d	¡ƒd¡ d S )Nr"   rG   rC   rI   z01:02:03.000004r#   rÒ   z10:02:03.004000r   rY  z00:02:03.400000r¡   z12:02:03rµ   r]  z23:15:00)r*   r¯   ró   r^   r   r   r    r±   /  s
    zTestTime.test_strc              	   C   s°   d| j j }|  t|   dddd¡ƒd| ¡ |  t|   dddd¡ƒd	| ¡ |  t|   d
ddd¡ƒd| ¡ |  t|   dddd
¡ƒd| ¡ |  t|   ddd
d
¡ƒd| ¡ d S )NrX  r"   rG   rC   rI   z%s(1, 2, 3, 4)r#   rÒ   z%s(10, 2, 3, 4000)r   rY  z%s(0, 2, 3, 400000)r¡   z%s(12, 2, 3)rµ   r]  z
%s(23, 15)rZ  r[  r   r   r    r´   6  s    ÿÿÿÿÿzTestTime.test_reprc                 C   sN   |   | jj| j¡ |   | jj| j¡ |   | jjt¡ |  | jj| jjk¡ d S r-   )r€   ró   r®   rz   rb  r   r~   r^   r   r   r    rc  C  s   zTestTime.test_resolution_infoc                 C   rK  )N©rò   r¶   rØ  rþ  rG   rM  rG  r   r   r    rH  I  rP  zTestTime.test_picklingc                 C   rž  )Nr“  )rŒ  rˆ   r‰   rŠ   r*   r~   rU   rG  r   r   r    Útest_pickling_subclass_timeR  r  z$TestTime.test_pickling_subclass_timec              	   C   sz   g d¢}t |ƒD ]2\}\}}| j|d | j|Ž }tD ]}||dd}|  ||¡ qW d   ƒ n1 s5w   Y  qd S )N))s,   cdatetime
time
(S'\x14;\x10\x00\x10\x00'
tR.r“  )s   cdatetime
time
(U;  tR.r“  )s   €cdatetime
time
U;  …R.r“  )s,   cdatetime
time
(S'\x14;\x19\x00\x10\x00'
tR.©rò   r¶   r=  rþ  )s   cdatetime
time
(U;  tR.r•  )s   €cdatetime
time
U;  …R.r•  )r  rT  rU  )rz  rí   ró   rX  r*   )r+   rŒ  r  rZ  r”   rŽ  rŠ   r   r   r   r    r[  [  s   
þþ€ÿzTestTime.test_compat_unpicklec                 C   sh   | j }|  |dƒ¡ |  |ddƒ¡ |  |dddƒ¡ |  |ddddƒ¡ |  |dƒ¡ |  |ƒ ¡ d S )Nr"   r   )ró   r~   )r+   rl  r   r   r    ru  q  s   zTestTime.test_boolc           
      C   sÐ   | j }g d¢}||Ž }|  || ¡ ¡ d}dD ]&\}}|d d … }|||< ||Ž }|jdi ||i¤Ž}	|  ||	¡ |d7 }q|dƒ}| jt|jdd | jt|jdd | jt|jd	d
 | jt|jdd d S )Nr  r   )rK  rL  rM  rN  r"   rë   ©rÊ  rÐ   ©r˜  r9  r‘  r=  r  r   rj  rk  r   r   r    rq  {  s"   
zTestTime.test_replacec                 C   s8   G dd„ d| j ƒ}|ddƒ}|  t|jddƒ|¡ d S )Nc                   @   r  )z4TestTime.test_subclass_replace.<locals>.TimeSubclassNr€  r   r   r   r    ÚTimeSubclass•  r‚  r˜  r¡   r’  r#   r–  rs  )r+   r˜  r  r   r   r    rt  ”  s   
zTestTime.test_subclass_replacec                    ru  )Nc                       rv  )z&TestTime.test_subclass_time.<locals>.CrQ   c                    rw  rx  ry  r{  r^   r   r    r…      r~  z.TestTime.test_subclass_time.<locals>.C.__new__c                 S   r  r-   ©rÊ  r—  r€  r   r   r    r‚  §  rƒ  z.TestTime.test_subclass_time.<locals>.C.newmethNr„  r   r^   r   r    r†    r‡  r†  )rI   rD   rK   rÁ   rF   rQ   rH   )	ró   r*   r9   r…  rÁ   r  r‚  rÊ  r—  r‰  r   r^   r    Útest_subclass_time›  rŠ  zTestTime.test_subclass_timec              	   C   s‚   d}ddt dƒdfD ]}|  t| j||dd …  ¡ q
|  td¡ |  tdgt|ƒ ƒd¡ W d   ƒ d S 1 s:w   Y  d S )	Nz2:59.0rÐ  Ú9rë   õ   Ã¿r"   r¤  r“   )Úchrrv   rw   ró   r8  r¥  rB  )r+   rm  Z	hour_byter   r   r    r¦  µ  s   
ÿ"ÿz!TestTime.test_backdoor_resistanceN)r:   rN   rO   r   ró   r4  rÏ  ra  r  rà  rD  r  rñ  r’  r$  r;  r±   r´   rc  rH  r”  r[  ru  rq  rt  rš  r¦  r   r   r   r    r  6  s0    	+4		
r  c                   @   ó4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú
TZInfoBasec                 C   s‚   | j }G dd„ dtƒ}|ddd|ƒ d}|tu rdpd}|  | ¡ |¡ t|tu r+d	p,d
d}|  | ¡ |¡ |  | ¡ |¡ d S )Nc                   @   s    e Zd Zdd„ Zdd„ ZeZdS )z7TZInfoBase.test_argument_passing.<locals>.introspectivec                 S   s   |rdpdS )NÚrealÚnoner   rb   r   r   r    rf   È  s    z>TZInfoBase.test_argument_passing.<locals>.introspective.tznamec                 S   s   t |rdpddS )NrQ   éÖÿÿÿrS   r   rb   r   r   r    rd   É  s   zATZInfoBase.test_argument_passing.<locals>.introspective.utcoffsetN)r:   rN   rO   rf   rd   rg   r   r   r   r    ÚintrospectiveÇ  s    r£  r"   rG   rC   r   r¡  r   r¢  rQ   rS   )ró   r   r   r*   rf   r   rd   rg   )r+   rl  r£  ÚobjrŽ  r   r   r    Útest_argument_passingÄ  s   z TZInfoBase.test_argument_passingc                 C   sz   | j }| jt|ddddd G dd„ dtƒ}| jt|ddd|d G dd„ dtƒ}|ƒ }|ddd|d}|  |j|¡ d S )Nr"   r¡   r   c                   @   rð   )z3TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTryc                 S   rÆ  r-   r   r^   r   r   r    r\   Û  rÈ  z<TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.__init__c                 S   rÆ  r-   r   rb   r   r   r    rd   Ü  rÈ  z=TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.utcoffsetN©r:   rN   rO   r\   rd   r   r   r   r    ÚNiceTryÚ  rU  r§  c                   @   rð   )z5TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTryc                 S   rÆ  r-   r   r^   r   r   r    r\   à  rÈ  z>TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.__init__c                 S   rÆ  r-   r   rb   r   r   r    rd   á  rÈ  z?TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.utcoffsetNr¦  r   r   r   r    Ú	BetterTryß  rU  r¨  )ró   rv   rw   Úobjectr   r†   )r+   rl  r§  r¨  r  r¥   r   r   r    Útest_bad_tzinfo_classesÖ  s   z"TZInfoBase.test_bad_tzinfo_classesc           
   
   C   sÒ   G dd„ dt ƒ}| j}dD ]Y\}}|tu r |ddd||ƒd}n|tu r1|dddddd||ƒd}|r_t|ƒ}t|d	ƒ\}}d
|dk rEdpFd||f }	t|tƒrT| ¡ }|  t	|ƒd|	 ¡ q|  
tt	|¡ qd S )Nc                   @   rð   )z6TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgyc                 S   s   t |d| _d S rR   ©r   r[   )r+   r[   r   r   r    r\   è  rƒ  z?TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.__init__c                 S   ra   r-   )r[   rb   r   r   r    rd   ê  re   z@TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.utcoffsetNr¦  r   r   r   r    ÚEdgyç  ó    r¬  ))é`úÿÿF)éaúÿÿT)éŸ  T)r  Fr"   rG   rC   r   rK   r  z%c%02d:%02dr   râ  rã  z01:02:03)r   ró   r   r   r  rž  rU   Útimetzr*   r¯   rv   rÄ   )
r+   r¬  rl  r[   Zlegitr¥   ZaofsrË   rÒ  Útagr   r   r    Útest_utc_offset_out_of_boundsæ  s    
îz(TZInfoBase.test_utc_offset_out_of_boundsc                 C   s¬  | j }G dd„ dtƒ}|dddƒ|dddd d|ddd|ƒ dfD ]}|  | ¡ ¡ |  | ¡ ¡ |  | ¡ ¡ q!G dd„ dtƒ}|ddd|ƒ d}|  | ¡ tdd¡ |  | ¡ td	d¡ |  | ¡ d
¡ G dd„ dtƒ}|ddd|ƒ d}|  t	|j¡ |  t	|j¡ |  t	|j¡ G dd„ dtƒ}|ddd|ƒ d}|  t
|j¡ |  t
|j¡ G dd„ dtƒ}|ddd|ƒ d}|  | ¡ tdd¡ |  | ¡ tdd¡ d S )Nc                   @   ó$   e Zd Zdd„ Zdd„ Zdd„ ZdS )z*TZInfoBase.test_tzinfo_classes.<locals>.C1c                 S   rÆ  r-   r   rb   r   r   r    rd     rÈ  z4TZInfoBase.test_tzinfo_classes.<locals>.C1.utcoffsetc                 S   rÆ  r-   r   rb   r   r   r    rg     rÈ  z.TZInfoBase.test_tzinfo_classes.<locals>.C1.dstc                 S   rÆ  r-   r   rb   r   r   r    rf     rÈ  z1TZInfoBase.test_tzinfo_classes.<locals>.C1.tznameNrž   r   r   r   r    ÚC1  ó    rµ  r"   r   c                   @   r´  )z*TZInfoBase.test_tzinfo_classes.<locals>.C3c                 S   ó
   t ddS )Nr¯  rS   r   rb   r   r   r    rd     ó   
 z4TZInfoBase.test_tzinfo_classes.<locals>.C3.utcoffsetc                 S   r·  )Nr°  rS   r   rb   r   r   r    rg     r¸  z.TZInfoBase.test_tzinfo_classes.<locals>.C3.dstc                 S   rœ   ©NÚanamer   rb   r   r   r    rf     rÈ  z1TZInfoBase.test_tzinfo_classes.<locals>.C3.tznameNrž   r   r   r   r    ÚC3  r¶  r»  r¯  rS   r°  rº  c                   @   r´  )z*TZInfoBase.test_tzinfo_classes.<locals>.C4c                 S   rœ   r¹  r   rb   r   r   r    rd     rÈ  z4TZInfoBase.test_tzinfo_classes.<locals>.C4.utcoffsetc                 S   rœ   rŒ  r   rb   r   r   r    rg     rÈ  z.TZInfoBase.test_tzinfo_classes.<locals>.C4.dstc                 S   rœ   r  r   rb   r   r   r    rf     rÈ  z1TZInfoBase.test_tzinfo_classes.<locals>.C4.tznameNrž   r   r   r   r    ÚC4  r¶  r¼  c                   @   rð   )z*TZInfoBase.test_tzinfo_classes.<locals>.C6c                 S   r·  )Nièÿÿÿr–   r   rb   r   r   r    rd   $  r¸  z4TZInfoBase.test_tzinfo_classes.<locals>.C6.utcoffsetc                 S   r·  )Nrë   r–   r   rb   r   r   r    rg   %  r¸  z.TZInfoBase.test_tzinfo_classes.<locals>.C6.dstNrS  r   r   r   r    ÚC6#  rU  r½  c                   @   rð   )z*TZInfoBase.test_tzinfo_classes.<locals>.C7c                 S   r·  )Nr@  r¼   r   rb   r   r   r    rd   ,  r¸  z4TZInfoBase.test_tzinfo_classes.<locals>.C7.utcoffsetc                 S   r·  )Né¯ÿÿÿr¼   r   rb   r   r   r    rg   -  r¸  z.TZInfoBase.test_tzinfo_classes.<locals>.C7.dstNrS  r   r   r   r    ÚC7+  rU  r¿  r@  r¼   r¾  )ró   r   rÍ   rd   rg   rf   r*   r   rv   rw   rÄ   )r+   rl  rµ  r¥   r»  r¼  r½  r¿  r   r   r    Útest_tzinfo_classes  s6   
þzTZInfoBase.test_tzinfo_classesc                 C   sx  | j }G dd„ dtƒ}|ddd|ƒ d}|jdd}|jdd}|jd	d}|||fD ]'}|||fD ]}ttttttfD ]}	|	||ƒ}
|	|j	|j	ƒ}|  
|
|¡ q<q2q+|tur¸|jd|ƒ d
}|jd|ƒ d
}|jd	|ƒ d
}|||fD ]E}|||fD ];}||k||k  }
||u s||u r˜||u s•||u r˜d}n||  u r¢|u r§n nd}n	||u r®d}nd}|  
|
|¡ q{qtd S d S )Nc                   @   rl   )z=TZInfoBase.test_aware_compare.<locals>.OperandDependentOffsetc                 S   ó    |j dk rt|j dS tddS ©Nr#   rS   r¶   ©r˜  r   r  r   r   r    rd   8  ó   

zGTZInfoBase.test_aware_compare.<locals>.OperandDependentOffset.utcoffsetNro   r   r   r   r    ÚOperandDependentOffset7  rp   rÅ  rÁ  r_  r#   r   rC   r—  rt   ©r˜  r   r   rÐ   r"   )ró   r   rÕ   r   r   r   r   r   r   r˜  r*   r   )r+   rl  rÅ  rm  Úd0r‹  rÔ  rÇ  rÑ  Úoprp  rŽ  r   r   r    Útest_aware_compare2  s@   	
ýÿ
 õûzTZInfoBase.test_aware_compareN)r:   rN   rO   r¥  rª  r³  rÀ  rÉ  r   r   r   r    rŸ  Â  s    0rŸ  c                   @   sˆ   e Zd ZeZdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) Ú
TestTimeTZc                 C   sP   |   ¡ }|  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ |  |j¡ d S r  )ró   r*   rÊ  r˜  r—  rÏ  rÍ   r   r  r   r   r    Ú
test_emptyf  s   zTestTimeTZ.test_emptyc                    s&  t dddƒ}t dddƒ}t ddd	ƒ}td
d|d}tdd|d}tdd|d}tdd‰ td|d‰|  |j|¡ |  |j|¡ |  |j|¡ |  ˆ j¡ |  ˆj|¡ |  | ¡ tdd¡ |  | ¡ tdd¡ |  | ¡ tdd¡ |  ˆ  ¡ ¡ |  t|jd¡ |  | 	¡ d¡ |  | 	¡ d¡ |  | 	¡ d¡ |  ˆ  	¡ ¡ |  t|j	d¡ |  | 
¡ tdd¡ |  | 
¡ tdd¡ |  | 
¡ td	d¡ |  ˆ  
¡ ¡ |  t|j
d¡ |  t|ƒt|ƒ¡ |  t|ƒt|ƒ¡ |  t|ƒt|ƒ¡ |  ||¡ |  ||¡ |  ||¡ |  ˆ ˆ¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t|ƒd¡ |  t|ƒd¡ |  t|ƒd¡ |  tˆ ƒd¡ |  tˆƒd¡ |  | ¡ d¡ |  | ¡ d¡ |  | ¡ d¡ |  ˆ  ¡ d¡ |  ˆ ¡ d¡ d}|  t|ƒ|d ¡ |  t|ƒ|d ¡ |  t|ƒ|d ¡ |  tˆ ƒ|d  ¡ |  tˆƒ|d! ¡ |  | d"¡d#¡ |  | d$¡d%¡ |  | d$¡d&¡ t d'd(ƒ}td)d*|d}|  | d+¡d,¡ G d-d.„ d.tƒ}	td/d	d0|	ƒ d}
|  |
 d1¡d2¡ |  t|
jd3¡ d4| jjv rd5|	_|  t|
jd3¡ d S d S )6Nr‘   r“   r"   r   r»   rE   r  ÚMETrC   rF   rE  r   r¡   r“  é(   r  r(  rS   zno argsc                      rP  r-   r   r   ©r}  Zt5r   r    rù   ˜  rú   z'TestTimeTZ.test_zones.<locals>.<lambda>c                      rL  r-   r   r   rÎ  r   r    rù   ™  rú   z07:47:00-05:00z12:47:00+00:00z13:47:00+01:00z00:00:00.000040z00:00:00.000040+00:00zdatetime.timez(7, 47, tzinfo=est)z(12, 47, tzinfo=utc)z(13, 47, tzinfo=met)z(0, 0, 0, 40)z(0, 0, 0, 40, tzinfo=utc)z%H:%M:%S %%Z=%Z %%z=%zz07:47:00 %Z=EST %z=-0500z%H:%M:%S %Z %zz12:47:00 UTC +0000z13:47:00 MET +0100r¯  z%z %Z %%z%%Zrµ   r¶   z%H:%M %%Z='%Z' %%z='%z'z"23:59 %Z='%z %Z %%z%%Z' %z='-2359'c                   @   s   e Zd ZdZdd„ ZdS )z(TestTimeTZ.test_zones.<locals>.BadtznamerQ   c                 S   ra   r-   rQ  rb   r   r   r    rf   »  s    z/TestTimeTZ.test_zones.<locals>.Badtzname.tznameN)r:   rN   rO   r£   rf   r   r   r   r    Ú	Badtzname¹  s    rÏ  rG   rI   z%H:%M:%Sz02:03:04rø  r@   rÑ   )rP   r   r*   r   rÍ   rd   r   rv   rw   rf   rg   rA  rÃ   r¯   r  r²   r!  r9   r:   r£   rÄ   )r+   Úestr­   Úmetr=  r>  r|  rC  ZyuckrÏ  r¥   r   rÎ  r    Ú
test_zonesn  sŽ   
ÿ
ÿþzTestTimeTZ.test_zonesc                 C   s”   | j ddddtddƒd}| j ddddtddƒd}|  t|ƒt|ƒ¡ | j d	d
ddtddƒd}| j d	dddtddƒd}|  t|ƒt|ƒ¡ d S )Nr   r"   rG   rC   r°  rÈ   r   iž  rµ   rV  rK   r9  iüÿÿrÿ  iüÿÿ)ró   rP   r*   rA  r<  r   r   r    Útest_hash_edge_casesÅ  s   zTestTimeTZ.test_hash_edge_casesc           	      C   sò   d}| j |Ž }tD ]\}}}| ||¡}| |¡}|  ||¡ q	|  | ¡ | d¡¡ tddƒ}| j ddd|d}tD ]0\}}}| ||¡}| |¡}|  ||¡ |  |j	t¡ |  | 
¡ tdd	¡ |  | ¡ d¡ q;|  | ¡ | d¡¡ d S )
Nr“  rG   r‘   r’   rD   rK   rF   r   rS   )ró   rˆ   r‰   rŠ   r*   rN  rO  ri   r€   r   rd   r   rf   ©	r+   r”   r‹   rŒ   r   r   rŽ   r   Útinfor   r   r    rH  Ï  s"   



zTestTimeTZ.test_picklingc                 C   s   g d¢}t ddƒ}| jdddd|d}|D ]0}tD ]+}||d	d
}|  ||t|ƒ¡ |  |jt ¡ |  | ¡ tdd¡ |  | 	¡ d¡ qqd S )N)sØ   cdatetime
time
(S'\x05\x06\x07\x01\xe2@'
ctest.datetimetester
PicklableFixedOffset
(tR(dS'_FixedOffset__offset'
cdatetime
timedelta
(I-1
I68400
I0
tRsS'_FixedOffset__dstoffset'
NsS'_FixedOffset__name'
S'cookie'
sbtR.sº   cdatetime
time
(Uâ@ctest.datetimetester
PicklableFixedOffset
)R}(U_FixedOffset__offsetcdatetime
timedelta
(JÿÿÿÿJ0 K tRU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieubtR.sº   €cdatetime
time
Uâ@ctest.datetimetester
PicklableFixedOffset
)R}(U_FixedOffset__offsetcdatetime
timedelta
JÿÿÿÿJ0 K ‡RU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieub†R.r‘   r’   rD   rK   rF   r  r   rT  rU  rS   )
ri   ró   rX  r*   r²   r€   r   rd   r   rf   )r+   rŒ  rÕ  rŽ  rZ  rŠ   r   r   r   r    r[  å  s   
ûÿzTestTimeTZ.test_compat_unpicklec                 C   s|   | j }|dtddƒd}|  |¡ |dtddƒd}|  |¡ |dtddƒd}|  |¡ |ddtd	dƒd}|  |¡ d S )
Nr   r‘   rÈ   r   rD   i,  rµ   r¶   r°  )ró   rP   r~   )r+   rl  r¥   r   r   r    Útest_more_bool  s   


zTestTimeTZ.test_more_boolc                 C   s\  | j }tddƒ}ttdddƒ}dddd	|g}||Ž }|  || ¡ ¡ d
}ddddd|ffD ]&\}}|d d … }	||	|< ||	Ž }
|jdi ||i¤Ž}|  |
|¡ |d7 }q.|  | ¡ d¡ |jd d}|  |j¡ |  | ¡ ¡ |j|d}|  ||¡ |  |j|j¡ |dƒ}| j	t
|jdd | j	t
|jdd | j	t
|jdd | j	t
|jdd d S )Nr9  ú+100é8ÿÿÿrS   ú-200r"   rG   rC   rI   r   rK  rL  rM  rN  r   r   rë   r–  rÐ   r—  r‘  r=  r  r   ©ró   rP   r   r*   rÕ   rf   rÍ   r   r†   rv   rÄ   ©r+   rl  Zz100Zzm200r”   rm  r  r6   rn  ro  rŽ  rp  Zbase2Zbase3r   r   r    rq    s>   
ü
zTestTimeTZ.test_replacec                 C   s  |   ddd¡}|   ddd¡}|  ||¡ |jd d}|  ||¡ |jtd dƒd}|  ||¡ |jtddƒd}|  ||¡ G dd„ dtƒ}|ƒ }|j|d}|j|d}|  | ¡ td	d
¡ |  | ¡ tdd
¡ |  ||¡ |j|ƒ d}|  ||k ¡ d S )Nr"   rG   rC   r   rÈ   r   c                   @   rð   )z-TestTimeTZ.test_mixed_compare.<locals>.Variesc                 S   ó   t dd| _d S ©Nr   rS   r«  r^   r   r   r    r\   K  rƒ  z6TestTimeTZ.test_mixed_compare.<locals>.Varies.__init__c                 S   ó   |  j tdd7  _ | j S ©Nr"   rS   ©r[   r   r  r   r   r    rd   M  ó   z7TestTimeTZ.test_mixed_compare.<locals>.Varies.utcoffsetNr¦  r   r   r   r    ÚVariesJ  r­  râ  rµ   rS   rë   )	ró   r*   rÕ   rP   rÃ   r   rd   r   r~   ©r+   r=  r>  râ  Úvr   r   r    r`  >  s$   zTestTimeTZ.test_mixed_comparec              
   C   sÈ   ddg}d}d}d}d}|t t ||||¡ƒ7 }d tjttddƒttd	d
dƒg}|D ]5}|D ]0}| j|d|iŽ}	|	 ¡ }
| j|
d | j 	|
¡}|  
|	|¡ W d   ƒ n1 s[w   Y  q0q,d S )Nra  )rµ   r¶   r¶   rå   )r_  r¡   rò   )rD   r’  )rI   rG  )r   i½ iõ[
 rG   r–   rK   rS  r·   r   ro  )rÉ  Ú	itertoolsÚproductr   r­   r   ró   r  rí   r’  r*   )r+   Ztime_examplesZhhZmmÚssZusecrí  Zttuprê  r¥   rp  Út_rtr   r   r    r°  \  s.   þþþ€üÿzTestTimeTZ.test_fromisoformatc              
   C   sÜ   |   dddd¡}tddtddtdd	d
tddddtdddddg}|dd„ |D ƒ7 }d tjttddƒg}|dd„ |D ƒ7 }|D ](}|j|d}| ¡ }| j|d | j  |¡}W d   ƒ n1 sfw   Y  qCd S )Nr¡   r’  rG  ri  rD   r–   rG   rK   rS  r·   ru   rä   rI   r_  r  ræ   c                 S   rj  rk  r   rl  r   r   r    r!   €  rm  z:TestTimeTZ.test_fromisoformat_timezone.<locals>.<listcomp>r   c                 S   rn  r   r   rl  r   r   r    r!   …  rm  r   ro  rq  )r+   Z	base_timerì  rí  rê  r¥   rp  rè  r   r   r    rr  v  s&   
üÿÿ€üz&TestTimeTZ.test_fromisoformat_timezonec                 C   s   ddg}d t jt tddƒt tddƒt tdddƒg}g d	¢}t|ƒD ]Y\}}|D ]R}|D ]M}|d
krEd|d d  }|dd… |f }| j|dd| … d|iŽ}	|	j|d}
| j|
d | j |
¡}|  |	|¡ W d   ƒ n1 svw   Y  q.q*q$d S )N)rÁ  rü  rG  r  )rÁ  rü  rG  r   rÏ   r–   rG   rK   rS  r·   rx  r   r  rÐ   r   r"   r   rÒ  ro  ry  )r+   Z
time_basesrí  r{  r|  rô  rê  Zt_tupler}  r¥   rp  rè  r   r   r    r~    s2   þýþ€ùÿÿz'TestTimeTZ.test_fromisoformat_timespecsc              
   C   r  )N)rÈ   u   12í €00z12:z12:30:z	12:30:15.Ú1z12:3z12:30:1z1a:30:45.334034z12:a0:45.334034z12:30:a5.334034z12:30:45.1234z12:30:45.1234567z12:30:45.123456+24:30z12:30:45.123456-24:30u   12ï¼š30ï¼š45u   12:30:45â€¤123456z	12:30:45az12:30:45.123az12:30:45.123456az12:30:45.123456+12:00:30ar€  r  r²  r   r   r    r´  ª  s   ÿ€ÿ€ÿz#TestTimeTZ.test_fromisoformat_failsc              	   C   rµ  )Ns   12:30:45z12:30:45r¶  r¹  r   r   r    rº  È  s   ÿ€ÿz-TestTimeTZ.test_fromisoformat_fails_typeerrorc                 C   sP   G dd„ d| j ƒ}|ddddtjd}| | ¡ ¡}|  ||¡ |  ||¡ d S )Nc                   @   r  )z<TestTimeTZ.test_fromisoformat_subclass.<locals>.TimeSubclassNr€  r   r   r   r    r˜  Ñ  r‚  r˜  r¡   r  rG  iá r   )ró   r   r­   r’  r  r*   r€   )r+   r˜  ZtscZtsc_rtr   r   r    r±  Ð  s
   z&TestTimeTZ.test_fromisoformat_subclassc                    s¨   G ‡ fdd„dˆ j ƒ}ddddtddd	ƒf}ˆ j |Ž }||i d
di¤Ž}ˆ  |j|¡ ˆ  |jd¡ ˆ  |jd¡ ˆ  | ¡ | ¡ ¡ ˆ  | d¡|j|j	 d ¡ d S )Nc                       rv  )z*TestTimeTZ.test_subclass_timetz.<locals>.CrQ   c                    rw  rx  ry  r{  r^   r   r    r…   ß  r~  z2TestTimeTZ.test_subclass_timetz.<locals>.C.__new__c                 S   r  r-   r™  r€  r   r   r    r‚  æ  rƒ  z2TestTimeTZ.test_subclass_timetz.<locals>.C.newmethNr„  r   r^   r   r    r†  Ü  r‡  r†  rI   rD   rK   éô  r‘   r“   r"   rÁ   rF   rQ   rH   )
ró   rP   r*   r9   r…  rÁ   rd   r‚  rÊ  r—  r‰  r   r^   r    Útest_subclass_timetzÚ  s   
"zTestTimeTZ.test_subclass_timetzN)r:   rN   rO   r   ró   rË  rÒ  rÓ  rH  r[  rÖ  rq  r`  r°  rr  r~  r´  rº  r±  rë  r   r   r   r    rÊ  c  s"    W
"'
rÊ  c                   @   sî   e Zd ZeZdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Ze d%¡d&d'„ ƒZe d(¡d)d*„ ƒZe d(¡d+d,„ ƒZd-d.„ Zd/d0„ Zd1d2„ Zd3S )4ÚTestDateTimeTZc              	   C   sŠ   |   ddddddd¡}|  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ |  |j	d ¡ d S )Nr"   rG   rC   rI   rD   rK   rF   )
ró   r*   rÅ  rÆ  ri  rÊ  r˜  r—  rÏ  r   rb   r   r   r    Útest_trivialú  s   zTestDateTimeTZ.test_trivialc                    sh  | j dddtddƒd‰ | j tdddddd	td
dƒd‰|  ˆ ˆk ¡ |  ˆ ˆk¡ |  ˆˆ k¡ |  ˆ ˆ ¡ |  ˆˆ¡ | j dddddtddƒd‰ | j dddddtddƒd‰|  ˆ ˆ¡ | j dddddtddƒd‰ |  ˆ ˆk¡ | j dddddtddƒd‰ |  ˆ ˆk ¡ | j dddddtddƒdd‰ |  ˆ ˆk¡ | j dddddtddƒdd‰ |  ˆ ˆk¡ | j j‰|  ˆ ˆ¡ |  ˆˆ¡ |  t¡ ˆ ˆk W d   ƒ n1 sÙw   Y  G dd„ dt	ƒ}| j ddd|ƒ d‰|  ˆ ˆ¡ |  ˆˆ¡ |   ddd¡‰ |  ˆ ˆ¡ G dd„ dt	ƒ}| j ddd|ƒ d‰ | j dddtddƒd‰|  t
‡ ‡fdd„¡ d S )Nr"   r°  rÈ   r   r¡   r2  rµ   r¶   rå   r¯  rG   rC   r“  éÃ   r   )r   r—  r  c                   @   rl   )z4TestDateTimeTZ.test_even_more_compare.<locals>.Naivec                 S   rÆ  r-   r   rb   r   r   r    rd   8  rÈ  z>TestDateTimeTZ.test_even_more_compare.<locals>.Naive.utcoffsetNro   r   r   r   r    ÚNaive7  rp   rï  rD   rK   rF   c                   @   rl   )z4TestDateTimeTZ.test_even_more_compare.<locals>.Bogusc                 S   r·  )Nr  rS   r   rb   r   r   r    rd   D  r`   z>TestDateTimeTZ.test_even_more_compare.<locals>.Bogus.utcoffsetNro   r   r   r   r    rT  C  rp   rT  c                      s   ˆ ˆkS r-   r   r   ©r=  r>  r   r    rù   H  rú   z7TestDateTimeTZ.test_even_more_compare.<locals>.<lambda>)ró   rP   r   r~   r*   r®   rÃ   rv   rw   r   rÄ   )r+   rï  rT  r   rð  r    Útest_even_more_compare  sP   ÿÿÿ
ÿz%TestDateTimeTZ.test_even_more_comparec           	      C   s  d}| j |Ž }tD ]\}}}| ||¡}| |¡}|  ||¡ q	|  | ¡ | d¡¡ tddƒ}| j |i d|i¤Ž}| j dddtdddƒd	}tD ]0\}}}| ||¡}| |¡}|  ||¡ |  	|j
t¡ |  | ¡ tdd
¡ |  | ¡ d¡ qI|  | ¡ | d¡¡ d S )Nrý  rG   r‘   r’   r   r"   r   rÈ   r   rS   )ró   rˆ   r‰   rŠ   r*   rN  rO  ri   rP   r€   r   rd   r   rf   rÔ  r   r   r    rH  J  s$   



zTestDateTimeTZ.test_picklingc                 C   sŽ   g d¢}d}t ddƒ}| j|i d|i¤Ž}|D ]-}tD ](}||dd}|  ||¡ |  |jt ¡ |  | ¡ tdd¡ |  | ¡ d¡ qqd S )	N)sé   cdatetime
datetime
(S'\x07\xdf\x0b\x1b\x14;\x01\x01\xe2@'
ctest.datetimetester
PicklableFixedOffset
(tR(dS'_FixedOffset__offset'
cdatetime
timedelta
(I-1
I68400
I0
tRsS'_FixedOffset__dstoffset'
NsS'_FixedOffset__name'
S'cookie'
sbtR.sÂ   cdatetime
datetime
(U
ß;â@ctest.datetimetester
PicklableFixedOffset
)R}(U_FixedOffset__offsetcdatetime
timedelta
(JÿÿÿÿJ0 K tRU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieubtR.sÂ   €cdatetime
datetime
U
ß;â@ctest.datetimetester
PicklableFixedOffset
)R}(U_FixedOffset__offsetcdatetime
timedelta
JÿÿÿÿJ0 K ‡RU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieub†R.)rR  rt   rS  rò   r¶   r"   r  r‘   r’   r   rT  rU  rS   )	ri   ró   rX  r*   r€   r   rd   r   rf   )r+   rŒ  r”   rÕ  rŽ  rZ  rŠ   r   r   r   r    r[  a  s   
ûÿz#TestDateTimeTZ.test_compat_unpicklec                 C   sr   | j dddtddƒd}t|ƒ | j tdddddd	td
dƒd}t|ƒ | j dddtddƒd}|  tt|¡ d S )Nr"   r°  rÈ   r   r¡   r2  rµ   r¶   rå   r¯  rD   r®  )ró   rP   rA  r   rv   rÄ   r  r   r   r    Útest_extreme_hashes†  s   ÿz"TestDateTimeTZ.test_extreme_hashesc                 C   sÊ  t ddƒ}t ddƒ}t ddƒ}tddd	d
d|d}tddd	dd|d}tddd	dd|d}|  |j|¡ |  |j|¡ |  |j|¡ |  | ¡ tdd¡ |  | ¡ tdd¡ |  | ¡ tdd¡ |  | ¡ d¡ |  | ¡ d¡ |  | ¡ d¡ |  t|ƒt|ƒ¡ |  t|ƒt|ƒ¡ |  t|ƒt|ƒ¡ |  ||¡ |  ||¡ |  ||¡ |  t|ƒd¡ |  t|ƒd¡ |  t|ƒd¡ d}|  t	|ƒ|d ¡ |  t	|ƒ|d ¡ |  t	|ƒ|d ¡ d S )Nr‘   r“   r   r»   r  rÌ  rÄ  rC   r•  rF   rE  r   r¡   r“  rS   z2002-03-19 07:47:00-05:00z2002-03-19 12:47:00+00:00z2002-03-19 13:47:00+01:00zdatetime.datetime(2002, 3, 19, z7, 47, tzinfo=est)z12, 47, tzinfo=utc)z13, 47, tzinfo=met))
rP   r   r*   r   rd   r   rf   rA  r¯   r²   )r+   rÐ  r­   rÑ  r=  r>  r|  rC  r   r   r    rÒ  ”  s8   


zTestDateTimeTZ.test_zonesc                 C   sX   t ddƒ}tdddƒ}tdddd|d	}t ||¡}|  |tddddddd|d	¡ d S ©
Nr  rÌ  rÄ  rC   rI   rò  rG  rH  r   )rP   r   r   r   r•  r*   )r+   rÑ  rC  r£   rc   r   r   r    rJ  ²  s   
ÿzTestDateTimeTZ.test_combinec              
   C   sx   t ddƒ}| jddddddd|d	}|  | ¡ tdddƒ¡ |  | ¡ tddddƒ¡ |  | ¡ tdddd|d	¡ d S ró  )rP   ró   r*   r   r   r±  )r+   rÑ  rc   r   r   r    rI  º  s
   
"zTestDateTimeTZ.test_extractc                    st  | j  ¡ ‰tddƒ}ˆ ¡ j|d}| j  ˆ ¡ |¡‰|  ˆj|¡ |  	ˆ 
¡ |¡ |  t‡‡fdd„¡ |  t‡‡fdd„¡ |  t‡‡fdd„¡ |  t‡‡fdd„¡ |  t‡fd	d„¡ |  	ˆˆ td
ƒ¡ |  	ˆˆ td
ƒ¡ tdddd‰ ˆˆ  ‰|  ˆj|¡ ˆ ˆ }|  |j|¡ |  	ˆ|¡ ˆˆ  }|  |j|¡ |  	ˆ|¡ |  t‡ ‡fdd„¡ |  	ˆˆ ˆ ¡ tt dd¡dƒ}ˆj|d‰|  ˆj|¡ ˆˆ }ˆ ¡ ˆ ¡  ˆ  }|  	||¡ | j dddtddƒd}| j tddddddtddƒd}	|	| }
|  	|
| j j| j j tdd ¡ ttdƒ}ttdƒ}|j|d|	j|d ‰ |  	ˆ | j j| j j ¡ d S )Ni¶þÿÿz	west 5:30r   c                      r"  r-   r   r   ©r   Únowawarer   r    rù   Ê  rú   z9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>c                      r$  r-   r   r   rô  r   r    rù   Ë  rú   c                      r   r-   r   r   rô  r   r    rù   Î  rú   c                      r#  r-   r   r   rô  r   r    rù   Ï  rú   c                      rí  r-   r   r   )rõ  r   r    rù   Ð  rú   r   r"   r¡   i.  )rþ   rT   r½   c                      r"  r-   r   r   )ré   Únowawareplusr   r    rù   ã  rú   r¯  r  Zrandomtimezoner°  r®   r2  rµ   r¶   rå   rz   i>  rS   r,  r0  )ró   r   rP   r   rÕ   r•  r   r†   r   r*   r±  rv   rw   r   rn   Ú	randrangerd   r   rz   r®   r   rÉ   )r+   Ztz55Z	timeawareZnowawareplus2rï  Ztzrrp  rŽ  r®   rz   ZmaxdiffZtzaZtzbr   )ré   r   rõ  rö  r    Útest_tz_aware_arithmeticÁ  sT   

ÿÿ

z'TestDateTimeTZ.test_tz_aware_arithmeticc                 C   s.  | j j}|ƒ }tddƒ}||ƒ}||d}|  |j|j¡ |  | ¡ tdd¡ |  t	|d¡ | jt	|dd | jt	||d |  t	|||¡ tdd	dƒ}ttd
ddddƒt
td
dddƒfD ]4}tdƒD ](}t |¡}	|  |	j|¡ t ¡ j|d}
|
 |¡}t|	| ƒtddk rŽ nqf|  d¡ q`d S )NrQ   Ú42rQ  rS   rØ  r   ©rÕ  r   r­   r]  rV  r·   ÚweirdtzrC   r’  r¾   z0utcnow(), now(tz), or astimezone() may be broken)ró   r   rP   r†   r   r*   rd   r   rv   rw   r   r  r   r0  rÕ   rX  r  Zfail)r+   Úmethrm  Úoff42ÚanotherÚagainr­   rû  rÊ   r   r0  Znow2r   r   r    Útest_tzinfo_now  s4   

ÿ

ÿ
€ózTestDateTimeTZ.test_tzinfo_nowc                 C   s
  dd l }| jj}|  ¡ }||ƒ}tddƒ}|||ƒ}|||d}|  |j|j¡ |  | ¡ tdd¡ |  	t
||d¡ | j	t
||dd | j	t
|||d |  	t
||||¡ |  	t
|¡ d	}t |¡}	td
dd}
t|
ddƒ}|	|
 }t ||¡}|  ||jd d¡ d S )Nr   rQ   rù  rQ  rS   rØ  r   rú  rd  iñÿÿÿé'   r·   r£   )r   ró   ró  rP   r†   r   r*   rd   r   rv   rw   r   r  rÕ   )r+   r   rü  rô  rm  rý  rþ  rÿ  r–  Zutcdatetimerd   r£   rŽ  rp  r   r   r    Útest_tzinfo_fromtimestamp'  s*   


z(TestDateTimeTZ.test_tzinfo_fromtimestampc                 C   s:   | j j}|ƒ }tddƒ}|  t||¡ | jt||d d S )NrQ   rù  r   )ró   r0  rP   rv   rw   )r+   rü  rm  rý  r   r   r    Útest_tzinfo_utcnowJ  s
   
z!TestDateTimeTZ.test_tzinfo_utcnowc                 C   sP   dd l }| jj}|  ¡ }||ƒ}tddƒ}|  t|||¡ | jt|||d d S )Nr   rQ   rù  r   )r   ró   r  rP   rv   rw   )r+   r   rü  rô  rm  rý  r   r   r    Útest_tzinfo_utcfromtimestampT  s   
z+TestDateTimeTZ.test_tzinfo_utcfromtimestampc                 C   sh  G dd„ dt ƒ}| j}dD ]U\}}|ddddddd||ƒd	}| ¡ }|  d|j¡ |  d|j¡ |  d|j¡ |  d|j¡ |  d|j¡ |  d|j	¡ |  d
|j
¡ |  d|j¡ |  ||j¡ q|  t|ddd|dƒd	j¡ |  |ddd|dƒd	 ¡ jd¡ |  |ddd|dƒd	 ¡ jd¡ |  t|ddd|dƒd	j¡ |  t|ddd|dƒd	j¡ d S )Nc                   @   rð   )z1TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DSTc                 S   ó   t |tƒr
t|d}|| _d S rR   ©rU   rV   r   Údstvalue©r+   r  r   r   r    r\   d  ó   


z:TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.__init__c                 S   ra   r-   ©r  rb   r   r   r    rg   h  re   z5TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.dstN©r:   rN   rO   r\   rg   r   r   r   r    ÚDSTc  s    r  ))éßÿÿÿr"   )rB  r"   )r   r   )NrÐ   r"   r#   rò   r’  rÍ  r   r   rÇ  r°  r¯  r  r®  )r   ró   r&  r*   rA  rB  rC  rD  rE  rF  rG  rH  rI  rv   rw   rÄ   )r+   r  rl  r  ÚflagrC  r¥   r   r   r    Útest_tzinfo_timetuple`  s&   """z$TestDateTimeTZ.test_tzinfo_timetuplec                    sø  G dd„ dt ƒ‰ | j}|  t|dddˆ dƒdj¡ G ‡ fdd„dˆ ƒ}dD ]f}|dd	d
dddd|d|ƒd}| ¡ }|  |j|j¡ |  |j	|j
¡ |  |j|j¡ |  d|j¡ |  d|j¡ |  |j|j¡ |  | ¡ |j¡ |  | ¡ tdddƒ ¡  d |j¡ |  d|j¡ q&|dd	d
ddddƒ}| ¡ }|  |d d… | ¡ d d… ¡ |  d|j¡ G dd„ dˆ ƒ}|dd	d
dddd|ƒ d}| ¡ }|  |d d… | ¡ d d… ¡ |  d|j¡ G dd„ dˆ ƒ}|dd	d
dddd|ƒ d}|  t|j¡ |dddddddƒ}tjtjtjfD ]}|j|d}	|  |	 ¡ d d… |	 tj¡ ¡ d d… ¡ q|tddddd|dƒd}
|  t |
j¡ |t!ddd d!dd"|d#ƒd}|  t |j¡ |jjtt"ƒd}
|  t |
j¡ |jjtt" ƒd}|  t |j¡ d S )$Nc                   @   s   e Zd Zddd„Zdd„ ZdS )z-TestDateTimeTZ.test_utctimetuple.<locals>.DSTr   c                 S   r  rR   r  r  r   r   r    r\   †  r	  z6TestDateTimeTZ.test_utctimetuple.<locals>.DST.__init__c                 S   ra   r-   r
  rb   r   r   r    rg   Š  re   z1TestDateTimeTZ.test_utctimetuple.<locals>.DST.dstN)r   r  r   r   r   r    r  …  s    
r  r"   r   r   c                       s"   e Zd Zd‡ fdd„	Zdd„ ZdS )z.TestDateTimeTZ.test_utctimetuple.<locals>.UOFSNc                    s   ˆ   | |¡ t|d| _d S rR   )r\   r   Úuofs)r+   r  Zdofs©r  r   r    r\   “  s   z7TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.__init__c                 S   ra   r-   )r  rb   r   r   r    rd   –  re   z8TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.utcoffsetr-   r¦  r   r  r   r    ÚUOFS’  s    r  )r  rB  r   NrG   rC   r#   rò   r’  rÍ  iËÿÿÿrt   r“  rÐ   c                   @   rl   )z.TestDateTimeTZ.test_utctimetuple.<locals>.NOFSc                 S   rÆ  r-   r   rb   r   r   r    rd   °  rš   z8TestDateTimeTZ.test_utctimetuple.<locals>.NOFS.utcoffsetNro   r   r   r   r    ÚNOFS¯  rp   r  c                   @   rl   )z.TestDateTimeTZ.test_utctimetuple.<locals>.BOFSc                 S   rœ   )Nr“   r   rb   r   r   r    rd   ¸  rš   z8TestDateTimeTZ.test_utctimetuple.<locals>.BOFS.utcoffsetNro   r   r   r   r    ÚBOFS·  rp   r  rª   r  r]  rØ  i+Ÿ rè  r°  r¡   r2  rµ   r¶   rå   r¯  )#r   ró   rv   r{   rd   Zutctimetupler*   rÅ  rA  rÆ  rB  ri  rC  rD  rE  r—  rF  rþ  rG  rÌ  r   rH  rI  r&  rw   r   r®   r­   rz   rÕ   rX  r   re  r   r9  )r+   rl  r  r  rC  r¥   r  r  r£   Zdtzrh  Zhuger   r  r    Útest_utctimetuple„  s\   ÿÿ  ÿz TestDateTimeTZ.test_utctimetuplec                 C   s  t ddƒ}t ddƒ}t ddƒ}t d dƒ}| j}d}d ||||fD ]f}d	D ]a}|d
ddddd||d}	d|r7dp8d }
|d urB|	 ¡ pCd}|
| }|	 ¡ }|  ||d | ¡ |  ||	 d¡¡ |  |	 d¡|d | ¡ |  |	 d¡|d | ¡ |  t|	ƒ|d | ¡ q$q d S )Nr   rß  éÜ   z+03:40iÿÿÿz-03:51rÈ   z
0001-02-03)r   iy r"   rG   rC   rI   rD   r¶   r   z04:05:59z.987001rw  Úku   áˆ´rÐ  )rP   ró   rf   r  r*   r¯   )r+   r'  ZplusZminusÚunknownrl  ZdatestrZofsr  rC  ZtimestrZofsstrZtailstrZisor   r   r    Útest_tzinfo_isoformatÔ  s(   



öÿz$TestDateTimeTZ.test_tzinfo_isoformatc              	   C   s6  | j }tddƒ}ttdddƒ}dddd	d
dd|g}||Ž }|  || ¡ ¡ d}dddddddd|ffD ]&\}}|d d … }	||	|< ||	Ž }
|jdi ||i¤Ž}|  |
|¡ |d7 }q4|  | ¡ d¡ |jd d}|  |j¡ |  | ¡ ¡ |j|d}|  ||¡ |  |j|j¡ |dddƒ}| j	t
|jdd d S )Nr9  r×  rØ  rS   rÙ  r"   rG   rC   rI   rD   rK   rF   r   rf  rg  rh  rK  rL  rM  rN  r   r   r¼  rÚ  rÝ  ri  r   rÚ  rÛ  r   r   r    rq  é  s>   
ù
zTestDateTimeTZ.test_replacec                 C   sD  t d dƒ}t ddƒ}t tdd dƒ}| jj|d}|  |j|¡ |  t|j|¡ | |j¡}|  |j|¡ |  	| 
¡ | 
¡ ¡ |  	| ¡ | ¡ ¡ | |¡}|  |j|¡ |  	| ¡ tdd¡ || ¡  }|| |¡7 }|j|d	}|  	| 
¡ | 
¡ ¡ |  	| ¡ | ¡ ¡ |  	| ¡ | ¡ ¡ |  |j|j¡ |  	||¡ d S )
NÚNonerO  Z44rD   r–   Zm300rQ  rÏ   r   )rP   r   ró   r   r†   r   rv   rÄ   rX  r*   r   r   rd   rÕ   r±  )r+   ZfnoneZf44mZfm5hrc   rÇ  rp  rŽ  r   r   r    Útest_more_astimezone  s*   


z#TestDateTimeTZ.test_more_astimezoner»   c                 C   s4   | j  tj¡}|  | d ¡|¡ |  | ¡ |¡ d S r-   )ró   r   r   r­   r*   rX  rb   r   r   r    Útest_astimezone_default_utc-  s   z*TestDateTimeTZ.test_astimezone_default_utcr  c                 C   s€   | j dddddtjd}| ¡ }|  ||¡ |  | d¡d¡ | j dddd	dtjd}| ¡ }|  ||¡ |  | d¡d
¡ d S )Nrr  rt   rI   rK   r’  r   r5  z	-0500 ESTrD   z	-0400 EDT)ró   r   r­   rX  r*   r!  )r+   rc   rÖ   r   r   r    Útest_astimezone_default_eastern5  s   z.TestDateTimeTZ.test_astimezone_default_easternc                 C   s8   t ddddtjd}| ¡ }| ¡ }|  |j|j¡ d S )NrR  rt   r"   rD   r   )r   r   r­   rX  r*   r   )r+   r¤   r¥   r`  r   r   r    Ú!test_astimezone_default_near_fold@  s   z0TestDateTimeTZ.test_astimezone_default_near_foldc              
   C   s€  | j }G dd„ dtƒ}|ddddddd	|ƒ d
}|jdd}|jdd}|jdd}|||fD ]}|||fD ]}|| }	t|j|j d}
|  |	|
¡ q6q/|ddddddd	ƒ}|jd|ƒ d}|jd|ƒ d}|jd|ƒ d}|||fD ]I}|||fD ]A}|| }	||u s‰||u r–||u s‘||u r–tdƒ}
n ||  u r |u r§n ntdƒ}
n||u r±tdd}
ntdd}
|  |	|
¡ q{qtd S )Nc                   @   rl   )zBTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffsetc                 S   rÁ  rÂ  rÃ  r  r   r   r    rd   N  rÄ  zLTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffset.utcoffsetNro   r   r   r   r    rÅ  M  rp   rÅ  rÁ  r_  r#   rt   r¡   r“  r  r   rC   r—  rS   rÆ  r   iÐÿÿÿrÿ  )ró   r   rÕ   r   r˜  r*   )r+   rl  rÅ  rm  rÇ  r‹  rÔ  rÇ  rÑ  rp  rŽ  r   r   r    Útest_aware_subtractH  s:   	ý 


õÿz"TestDateTimeTZ.test_aware_subtractc                 C   s  t dddddddƒ}t dddddddƒ}|  ||¡ |jd d}|  ||¡ |jtd d	ƒd}|  ||¡ |jtd
d	ƒd}|  ||¡ G dd„ dtƒ}|ƒ }|j|d}|j|d}|  | ¡ tdd¡ |  | ¡ tdd¡ |  ||¡ |j|ƒ d}|  ||k ¡ d S )Nr"   rG   rC   rI   rD   rK   rF   r   rÈ   r   c                   @   rð   )z1TestDateTimeTZ.test_mixed_compare.<locals>.Variesc                 S   rÜ  rÝ  r«  r^   r   r   r    r\     rƒ  z:TestDateTimeTZ.test_mixed_compare.<locals>.Varies.__init__c                 S   rÞ  rß  rà  r  r   r   r    rd   ƒ  rá  z;TestDateTimeTZ.test_mixed_compare.<locals>.Varies.utcoffsetNr¦  r   r   r   r    râ  €  r­  râ  rµ   rS   rë   )	r   r*   rÕ   rP   rÃ   r   rd   r   r~   rã  r   r   r    r`  t  s$   z!TestDateTimeTZ.test_mixed_comparec                    s®   G ‡ fdd„dˆ j ƒ}ddddddd	td
ddƒf}ˆ j |Ž }||i ddi¤Ž}ˆ  |j|¡ ˆ  |jd¡ ˆ  |jd¡ ˆ  | ¡ | ¡ ¡ ˆ  | d¡|j|j	 d ¡ d S )Nc                       rv  )z2TestDateTimeTZ.test_subclass_datetimetz.<locals>.CrQ   c                    rw  rx  ry  r{  r^   r   r    r…   —  r~  z:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.__new__c                 S   r  r-   )rÊ  rÅ  r€  r   r   r    r‚  ž  rƒ  z:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.newmethNr„  r   r^   r   r    r†  ”  r‡  r†  rÄ  r¡   r2  rI   rD   rK   rê  r‘   r“   r"   rÁ   rF   rQ   rH   )
ró   rP   r*   r9   r…  rÁ   rd   r‚  rÊ  rÅ  r‰  r   r^   r    Útest_subclass_datetimetz’  s   
"z'TestDateTimeTZ.test_subclass_datetimetzN)r:   rN   rO   r   ró   rí  rñ  rH  r[  rò  rÒ  rJ  rI  rø  r   r  r  r  r  r  r  rq  r  r   r‡  r  r  r  r  r`  r   r   r   r   r    rì  ÷  s:    E%A%#
$P'



,rì  c                 C   s    d|   ¡  }|r| t|ƒ7 } | S )NrK   )rþ  r   )rc   Z
days_to_gor   r   r    Úfirst_sunday_on_or_after®  s   r!  rS   r–   r  rI   rG   r=  c                   @   rž  )Ú
USTimeZonec                 C   ó"   t |d| _|| _|| _|| _d S ©Nr–   ©r   Ú	stdoffsetÚreprnameÚstdnameÚdstname©r+   r—   r'  r(  r)  r   r   r    r\   Â  ó   
zUSTimeZone.__init__c                 C   ra   r-   ©r'  r^   r   r   r    r_   È  re   zUSTimeZone.__repr__c                 C   ó   |   |¡r| jS | jS r-   ©rg   r)  r(  rb   r   r   r    rf   Ë  ó   
zUSTimeZone.tznamec                 C   ó   | j |  |¡ S r-   ©r&  rg   rb   r   r   r    rd   Ñ  rƒ  zUSTimeZone.utcoffsetc                 C   sb   |d u s	|j d u rtS ttj|jdƒ}ttj|jdƒ}||jd d  kr,|k r/tS  tS tS ©Nri  r   )r   r¸   r!  ÚDSTSTARTrÕ   rÅ  ÚDSTENDrÉ   ©r+   rc   r  Úendr   r   r    rg   Ô  s   ÿzUSTimeZone.dstN©r:   rN   rO   r\   r_   rf   rd   rg   r   r   r   r    r"  À  ó    r"  rÏ   rÔ   r“   rP  rL   ÚCentralZCSTZCDTrH   ÚMountainZMSTZMDTiøÿÿÿÚPacificZPSTZPDTr»   i0ýÿÿZUTCfakec                   @   sd   e Zd ZeddddƒZeddddƒZeZdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTestTimezoneConversionsrÄ  rI   rF   rG   r#   rS  r"   c           
      C   s  |   | ¡ t¡ |   | |¡|¡ | |¡}| |¡}| ¡ | ¡ krE|jdkrE|   |t |¡ |   | ¡ t¡ |   | |¡| |¡¡ n|   ||¡ |t }| |¡}	| ¡ | ¡ kr€|jdkr€|   |	|jdd¡ |t7 }| |¡}	|   |	|jdd¡ d S |   |	| t¡ d S )NrG   r   r"   r–  )r*   rg   rÉ   rX  r   rÊ  r¸   rÕ   )
r+   rc   r£   r­   ÚdstonÚdstoffÚasutcÚthere_and_backZnexthour_utcZnexthour_tzr   r   r    Úcheckinsideû  s&   


ÿ


z#TestTimezoneConversions.checkinsidec                 C   sF   |   | ¡ t¡ |   | |¡|¡ | |¡}| |¡}|   ||¡ d S r-   )r*   rg   r¸   rX  )r+   rc   r£   r­   r?  r@  r   r   r    Úcheckoutside/  s
   

z$TestTimezoneConversions.checkoutsidec              	   C   s²   | j j|d}| jj|d}tddtttddtddfD ]8}|  |||||¡ || || fD ]}|  |||||¡ q1|  |||¡ || || fD ]	}|  |||¡ qLqd S )Nr   r“  r  r"   rS   r¼   )r=  rÕ   r>  r   ÚDAYrÉ   rA  rB  )r+   r£   r­   r=  r>  ré   ZduringZoutsider   r   r    Úconvert_between_tz_and_utc:  s    üÿõz2TestTimezoneConversions.convert_between_tz_and_utcc                 C   sL   |   tt¡ |   tt¡ |   tt¡ |   tt¡ |   tt¡ |   tt¡ d S r-   )rD  rÔ   Úutc_realr;  Úutc_faker^   r   r   r    Ú	test_easyP  s   z!TestTimezoneConversions.test_easyc              	   C   sH  | j tdd }tdddƒ}|j|d}| j jdd}| t¡jd d}|  ||¡ | j jd	td
}| j jdd}| t¡jd d}|  ||¡ ttfD ]U}tt	fD ]N}| j
tdd }|| d ¡8 }|| d ¡ }	|	j|d}
dD ]-}| j
j|d}dD ]}|j|d}|
j|d}	|	 |¡}|  |jd d|¡ q}|
t7 }
qrqRqLd S )NrI   r–   iäýÿÿz-0900r   r   rC   r–  rK   ©rÊ  r   r"   rG   )r   r"   r"   rG   ©r   r’  r¶   r—  )r=  r   rP   rÕ   rX  rÔ   r*   rE  rF  r;  r>  rd   rÉ   )r+   ZfourbackZninewestrŽ  rp  Zsixutcr­   r£   Zfirst_std_hourr?  Z	asutcbaseZtzhourZexpectedbaser˜  Zastzr   r   r    Útest_trickyh  s6   

ù÷ÿz#TestTimezoneConversions.test_trickyc                 C   sŒ   G dd„ dt ƒ}| j ¡ jtd}| |ƒ ¡ G dd„ d|ƒ}|  t|j|ƒ ¡ G dd„ d|ƒ}|  dd	d	¡jtd}|  t|j|ƒ ¡ d S )
Nc                   @   rð   )z2TestTimezoneConversions.test_bogus_dst.<locals>.okc                 S   ó   t S r-   ©rÉ   rb   r   r   r    rd     rÈ  z<TestTimezoneConversions.test_bogus_dst.<locals>.ok.utcoffsetc                 S   rK  r-   rL  rb   r   r   r    rg   ž  rÈ  z6TestTimezoneConversions.test_bogus_dst.<locals>.ok.dstNrS  r   r   r   r    Úokœ  rU  rM  r   c                   @   rl   )z5TestTimezoneConversions.test_bogus_dst.<locals>.notokc                 S   rÆ  r-   r   rb   r   r   r    rg   ¦  rÈ  z9TestTimezoneConversions.test_bogus_dst.<locals>.notok.dstN©r:   rN   rO   rg   r   r   r   r    Únotok¥  rp   rO  c                   @   rl   )z<TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notokc                 S   s   |j dkrd S dt S )Nr¼  r#   )rÅ  rÉ   rb   r   r   r    rg   ®  s   
z@TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notok.dstNrN  r   r   r   r    Útricky_notok­  rp   rP  rÝ  r"   )r   ró   r   rÕ   rE  rX  rv   rÄ   )r+   rM  r   rO  rP  rc   r   r   r    Útest_bogus_dst›  s   z&TestTimezoneConversions.test_bogus_dstc           
      C   sÜ  |   ttj¡ t ¡ jtd}|   ttj|¡ |jtd}t |¡}|  	|j
t¡ |   ttj||¡ |   ttjt ¡ ¡ G dd„ dtƒ}|ddddƒ}| jjdtd	}|j|d}d
D ]E}|j|d}|dkrn|tdd8 }t |¡}	|  	||	¡ ||j }| |¡}	|  	||	¡ |jtd |¡}	|  	||	¡ |t7 }|t7 }q[| jjdtd	}|j|d}dD ]:}|j|d}t |¡}	|  	||	¡ ||j }| |¡}	|  	||	¡ |jtd |¡}	|  	||	¡ |t7 }|t7 }q±d S )Nr   c                   @   rl   )z<TestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZonec                 S   s
   || j  S r-   )r&  rb   r   r   r    r¢   Â  r`   zDTestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZone.fromutcN©r:   rN   rO   r¢   r   r   r   r    ÚFauxUSTimeZoneÁ  rp   rS  rÏ   ÚFEasternZFESTZFEDTrI   rH  )rµ   r   r"   rC   rI   rD   r–  rµ   r"   r  )r   r"   r"   rG   rC   rI   )rv   rw   rÔ   r¢   r   r0  rÕ   rE  rÄ   r*   r   r   rÇ  r"  r=  r   r&  rX  rÉ   r>  )
r+   r   ZenowrS  rT  r  ZfstartZwallrŽ  rp  r   r   r    r×   ¶  sN   








òz$TestTimezoneConversions.test_fromutcN)r:   rN   rO   r   r=  r>  ró   rA  rB  rD  rG  rJ  rQ  r×   r   r   r   r    r<  ó  s    43r<  c                   @   r´  )ÚOddballsc                    sž  t  ¡ ‰ t ˆ tƒ ¡‰|  ˆ ˆk¡ |  ˆˆ k¡ |  ˆ ˆk¡ |  ˆˆ k¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fdd„¡ |  t‡ ‡fd	d„¡ |  	ˆ  
ˆ¡d
¡ ˆ jd d d }ˆj|d}|  	ˆ  
|¡d¡ tˆ jˆ jˆ jƒ}|  	ˆ |¡ |  	|ˆ ¡ tˆjˆjˆ jdddƒ}|  	ˆ|¡ |  	|ˆ¡ d S )Nc                      rP  r-   r   r   ©Zas_dateZas_datetimer   r    rù     rú   z+Oddballs.test_bug_1028306.<locals>.<lambda>c                      rL  r-   r   r   rV  r   r    rù     rú   c                      rO  r-   r   r   rV  r   r    rù     rú   c                      rJ  r-   r   r   rV  r   r    rù     rú   c                      rQ  r-   r   r   rV  r   r    rù     rú   c                      rM  r-   r   r   rV  r   r    rù     rú   c                      rR  r-   r   r   rV  r   r    rù     rú   c                      rN  r-   r   r   rV  r   r    rù     rú   Tr"   rò   )ri  Fr   )r   rÇ  r   r•  r   r~   rØ   rv   rw   r*   Ú__eq__ri  rÕ   rÀ  rÅ  rÆ  rË  )r+   Zdifferent_dayZas_differentZdate_scZdatetime_scr   rV  r    Útest_bug_1028306ø  s4   

ÿzOddballs.test_bug_1028306c              	   C   s^   t  ¡ tƒ t ¡ tƒ tƒ ttƒ ƒfD ]}|  t	¡ d|_
W d   ƒ n1 s'w   Y  qd S rk  )r   rÇ  r   r   r0  r   r   r   rv   ÚAttributeErrorr$   )r+   rÇ  r   r   r    Útest_extra_attributes  s   ûÿ€úzOddballs.test_extra_attributesc                 C   s  G dd„ dƒ}G dd„ dt ƒ}d|dƒt d¡t d¡|dƒ|dƒd	fD ]]}|  tt|dddddd¡	 |  ttd|ddddd¡	 |  ttdd|dddd¡	 |  ttddd|ddd¡	 |  ttdddd|dd¡	 |  ttddddd|d¡	 |  ttdddddd|¡	 q$d S )
Nc                   @   rð   )z-Oddballs.test_check_arg_types.<locals>.Numberc                 S   s
   || _ d S r-   ©Úvalue)r+   r\  r   r   r    r\   )  r`   z6Oddballs.test_check_arg_types.<locals>.Number.__init__c                 S   ra   r-   r[  r^   r   r   r    Ú__int__+  re   z5Oddballs.test_check_arg_types.<locals>.Number.__int__N)r:   rN   rO   r\   r]  r   r   r   r    ÚNumber(  r­  r^  c                   @   r  )z,Oddballs.test_check_arg_types.<locals>.FloatNr€  r   r   r   r    ÚFloat.  r‚  r_  g      $@gÍÌÌÌÌÌ%@r#   z10.9Z10)r§  ÚdecimalZDecimalrv   rw   r   )r+   r^  r_  Úxxr   r   r    Útest_check_arg_types'  s   ýözOddballs.test_check_arg_typesN)r:   rN   rO   rX  rZ  rb  r   r   r   r    rU  ö  s    %
rU  c                   @   rl   )Útzinfo2c                 C   sÜ   	 t |tƒs
tdƒ‚|j| urtdƒ‚|jdd ¡ }|jdd ¡ }|d u s1|d u s1| ¡ d u r3t‚||krE|| }| ¡ }||krE|S ||fD ] }|| }| ¡ |krY|  S |jdd}| ¡ |kri|  S qItdƒ‚)Nú&fromutc() requires a datetime argumentúdt.tzinfo is not selfr   rú  r"   zNo suitable local time found)rU   r   rw   r   rÄ   rÕ   rd   rg   )r+   rc   Zoff0Zoff1ÚldtZoffr   r   r    r¢   E  s.   

ÿztzinfo2.fromutcNrR  r   r   r   r    rc  C  s    rc  c                   @   rž  )ÚUSTimeZone2c                 C   r#  r$  r%  r*  r   r   r    r\   g  r+  zUSTimeZone2.__init__c                 C   ra   r-   r,  r^   r   r   r    r_   m  re   zUSTimeZone2.__repr__c                 C   r-  r-   r.  rb   r   r   r    rf   p  r/  zUSTimeZone2.tznamec                 C   r0  r-   r1  rb   r   r   r    rd   v  rƒ  zUSTimeZone2.utcoffsetc                 C   s¼   |d u s	|j d u rtS ttj|jdƒ}ttj|jdƒ}|jd d}|t |  kr0|k r1tS  ||  kr=|t k rFn n|jrDtS tS ||  krR|t k r\n tS |jrZtS tS tS r2  )	r   r¸   r!  r3  rÕ   rÅ  r4  rÉ   rû  r5  r   r   r    rg   y  s   þýzUSTimeZone2.dstNr7  r   r   r   r    rg  e  r8  rg  ÚEastern2ÚCentral2Ú	Mountain2ÚPacific2c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚEurope_Vilnius_1941c                 C   s$   t dddd| dt dddd| dgS )Né•  rK   rµ   rs   r   r   ©r   r^   r   r   r    Ú	_utc_foldª  ó   ÿzEurope_Vilnius_1941._utc_foldc                 C   s$   t dddd| dt dddd| dgS )Nrm  rK   rµ   r   rë   r   rn  r^   r   r   r    Ú	_loc_fold®  rp  zEurope_Vilnius_1941._loc_foldc                 C   óB   |   ¡ \}}||k rdt S ||k r|jrdt S dt S dt S )NrC   rG   ©rq  rÉ   rû  ©r+   rc   Z
fold_startZ	fold_stopr   r   r    rd   ²  ó   zEurope_Vilnius_1941.utcoffsetc                 C   rr  )Nr   r"   rs  rt  r   r   r    rg   »  ru  zEurope_Vilnius_1941.dstc                 C   s.   |   ¡ \}}||k rdS ||k rd|j S dS )NÚMSK)rv  ÚCESTrw  )rq  rû  rt  r   r   r    rf   Ä  s   
zEurope_Vilnius_1941.tznamec                 C   sV   |j dkrt‚|  ¡ \}}||k r|dt  S ||k r%|dt  jddS |dt  S )Nrm  rC   rG   r"   rú  )rÅ  r{   ro  rÉ   rÕ   rt  r   r   r    r¢   Í  s   
zEurope_Vilnius_1941.fromutcN)	r:   rN   rO   ro  rq  rd   rg   rf   r¢   r   r   r   r    rl  ©  s    			rl  c                   @   sî   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	e
 d¡dd„ ƒZe
 d¡dd„ ƒZdd„ Ze
 d¡dd„ ƒZe
 d¡dd„ ƒZe
 d¡dd„ ƒZdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/S )0ÚTestLocalTimeDisambiguationc              	   C   sò   t ƒ }tddddddtjd}| |¡}|  | d¡d¡ |  |jd	¡ |  | 	¡ ¡ tdddd
tjd}| |¡}|  | d¡d¡ |  |jd¡ |  
| 	¡ ¡ tddddtjd}| |¡}|  | d¡d¡ |  |jd	¡ |  
| 	¡ ¡ d S )Nrm  rK   rµ   rò   r¶   r   z%c %Z%zz!Mon Jun 23 23:59:59 1941 MSK+0300r   rs   z"Mon Jun 23 23:00:00 1941 CEST+0200r"   r   z"Tue Jun 24 00:00:00 1941 CEST+0200)rl  r   r   r­   rX  r*   r!  rû  rØ   rg   r~   )r+   ÚVilniusÚgdtrf  r   r   r    Útest_vilnius_1941_fromutcÝ  s,   
ÿ
ÿ
ÿz5TestLocalTimeDisambiguation.test_vilnius_1941_fromutcc              
   C   sØ   t ƒ }tdddddd|d}| tj¡}|  | d¡d¡ tdddddd|d}| tj¡}|  | d¡d	¡ tdddddd|d
d}| tj¡}|  | d¡d¡ tdddd|d}| tj¡}|  | d¡d¡ d S )Nrm  rK   rµ   r   r¶   r   z%c %ZzMon Jun 23 19:59:59 1941 UTCzMon Jun 23 20:59:59 1941 UTCr"   )r   rû  zMon Jun 23 21:59:59 1941 UTCrë   r   zMon Jun 23 22:00:00 1941 UTC)rl  r   rX  r   r­   r*   r!  )r+   ry  rf  rz  r   r   r    Útest_vilnius_1941_toutcõ  s*   ÿÿÿÿz3TestLocalTimeDisambiguation.test_vilnius_1941_toutcc                 C   sz   t ddd}tddddd}|  |jd¡ |  |jd¡ |  t¡ t ddddd dƒ W d   ƒ d S 1 s6w   Y  d S ©Nr   r"   rú  )r   r   r*   rû  rv   rw   ©r+   r¥   rc   r   r   r    Útest_constructors  s   "ÿz-TestLocalTimeDisambiguation.test_constructorsc                 C   s@   t ddddd}| ¡ }|  |jd¡ | ¡ }|  |jd¡ d S )Nr"   rú  )r   r   r*   rû  r±  )r+   rc   r¥   r   r   r    Útest_member  s
   z'TestLocalTimeDisambiguation.test_memberc                 C   s¦  t dƒ}tdddƒ}|  |jddjd¡ |  |jddjd¡ |  |jddjd¡ |  |jddjd¡ |jdtd}|jdtd}|  |jd djd¡ |  |jd djd¡ |  t¡ |jdd W d   ƒ n1 spw   Y  |  t¡ |jdd W d   ƒ n1 s‹w   Y  |  t¡ | dddd d¡ W d   ƒ n1 s©w   Y  |  t¡ | dddddddd d¡	 W d   ƒ d S 1 sÌw   Y  d S )Nr   r"   rú  )rû  r   r   rG   )	r   r   r*   rÕ   rû  rÔ   rv   rÄ   rw   r~  r   r   r    rq    s,   ÿÿÿ"ÿz(TestLocalTimeDisambiguation.test_replacec                 C   s@   t dƒ}tdddƒ}|  ||jdd¡ |  ||jdd¡ d S r}  )r   r   r*   rÕ   r~  r   r   r    rÙ   2  s   z+TestLocalTimeDisambiguation.test_comparisonc                 C   sP   t dƒ}tdddƒ}|  t|ƒt|jddƒ¡ |  t|ƒt|jddƒ¡ d S r}  )r   r   r*   rA  rÕ   r~  r   r   r    Ú	test_hash8  s    z%TestLocalTimeDisambiguation.test_hashr  c                 C   s<   d}t  |¡}t  |d ¡}|  |jd¡ |  |jd¡ d S )NiXÁUTr<  r   r"   )r   ró  r*   rû  )r+   r`  Údt0rx   r   r   r    rõ  >  s
   
z.TestLocalTimeDisambiguation.test_fromtimestampzAustralia/Lord_Howec                 C   sl   t  d¡}t  d|¡dkr|  d¡ d}t |¡}t |d ¡}|  ||¡ |  |jd¡ |  |jd¡ d S )	Nç   €“ÜÔAú%Z%zú	LHST+1030ú>Australia/Lord_Howe timezone is not supported on this platformiìøUé  r   r"   )r%  r  r!  r;   r   ró  r*   rû  )r+   Útmr`  r  r=  r   r   r    Útest_fromtimestamp_lord_howeF  s   


z8TestLocalTimeDisambiguation.test_fromtimestamp_lord_howec                 C   s   |   t d¡jd¡ d S r  )r*   r   ró  rû  r^   r   r   r    Ú%test_fromtimestamp_low_fold_detectionV  s   zATestLocalTimeDisambiguation.test_fromtimestamp_low_fold_detectionc                 C   s8   t dddddƒ}|jdd}|  | ¡ d | ¡ ¡ d S )Nrr   rt   rG   r"   r’  rú  r<  )r   rÕ   r*   r–  )r+   r‚  rx   r   r   r    Útest_timestamp[  s
   ÿz*TestLocalTimeDisambiguation.test_timestampc                 C   sh   t  d¡}t  d|¡dkr|  d¡ tddddd	ƒ}|jd
d ¡ }|jdd ¡ }|  |d |¡ d S )Nrƒ  r„  r…  r†  rR  rI   rD   r"   rG  r   rú  r‡  )r%  r  r!  r;   r   rÕ   r–  r*   )r+   rˆ  r¥   Ús0Ús1r   r   r    Útest_timestamp_lord_howeb  s   

z4TestLocalTimeDisambiguation.test_timestamp_lord_howec                 C   s|   t dddddƒ}|jdd}| ¡ }| ¡ }|  | ¡ d¡ |  | ¡ d¡ |  |t |¡ |  |jd	¡ |  |jd	¡ d S )
Nrr   rt   rG   r"   r’  rú  rP  r“   r   )r   rÕ   rX  r*   rf   rÉ   rû  )r+   r‚  rx   Zadt0Zadt1r   r   r    r[  l  s   z+TestLocalTimeDisambiguation.test_astimezonec           	      C   sz   t dd}tddddd}tD ]+\}}}||fD ]!}| ||¡}| |¡}|  ||¡ |  |dk r3dn|j|j¡ qqd S )Nr"   rú  rI   r   )r   r   rˆ   r‰   rŠ   r*   rû  )	r+   r¥   rc   rŒ   r   r   rÇ  r`  rÑ  r   r   r    Útest_pickle_fold{  s   

üÿz,TestLocalTimeDisambiguation.test_pickle_foldc                 C   s>   t dd}tddddd}|  t|ƒd¡ |  t|ƒd¡ d S )Nr"   rú  zdatetime.time(0, 0, fold=1)z(datetime.datetime(1, 1, 1, 0, 0, fold=1))r   r   r*   r²   r~  r   r   r    r´   …  s   

ÿz%TestLocalTimeDisambiguation.test_reprc              	   C   s
  t ddddtdtj }t ddddtd}|  | ¡ t¡ |  | ¡ t¡ |  |jdd ¡ t¡ |  |jdd ¡ t¡ dD ] }t dddd|td}|  | ¡ t¡ |  |jdd ¡ t¡ q?dD ] }t dd	d
d|td}|  | ¡ t¡ |  |jdd ¡ t¡ qbd S )NrÄ  r#   rS  r"   r   rG   rú  rI  rI   rF   )	r   rh  r   rb  r*   rg   rÉ   r¸   rÕ   )r+   Ú	dt_summerÚ	dt_winterr˜  rc   r   r   r    rÎ   Œ  s   ûz$TestLocalTimeDisambiguation.test_dstc                 C   sŽ   t ddddtdtj }t ddddtd}|  | ¡ dt ¡ |  | ¡ dt ¡ |  |jdd	 ¡ dt ¡ |  |jdd	 ¡ dt ¡ d S )
NrÄ  r#   rS  r"   r   rG   rJ   rÏ   rú  )r   rh  r   rb  r*   rd   rÉ   rÕ   )r+   r  r‘  r   r   r    rÌ   §  s    z*TestLocalTimeDisambiguation.test_utcoffsetc           	      C   st  t ddddtdtj }t ddddtd}t |¡}t |¡}|  ||dt  ¡ |  ||dt  ¡ |  |jd	¡ |  |jd	¡ t ddddd
td}t |¡}|t7 }t |¡}|  ||¡ |  |jd	¡ |  |jd¡ t ddddd
td}t |¡}|  |j|j	fd¡ t ddddd
td}t |¡}|  |j|j	fd¡ t ddddd	td}t |¡}|  |j|j	fd¡ d S )NrÄ  r#   rS  rK   r   rF   rI   rD   r   r’  r"   )r    rs   )rS  r"   rG   )rK   rs   )
r   rh  r   rb  r¢   r*   rÉ   rû  ri  rÊ  )	r+   Zu_summerZu_winterZt_summerZt_winterr¤   r  r=  r¥   r   r   r    r×   ±  s0   






z(TestLocalTimeDisambiguation.test_fromutcc                 C   sL   t dddtd}|  || tj¡¡ t dddtd}|  || tj¡¡ d S )Nr¼  r"   r   rK   )r   rh  r*   rX  r   r­   r  r   r   r    Útest_mixed_compare_regularÒ  s   z6TestLocalTimeDisambiguation.test_mixed_compare_regularc                 C   ó<   t dddddtd}| tj¡}|  ||¡ |  ||¡ d S )NrÄ  r#   rS  r"   rG  r   ©r   rh  rX  r   r­   rÃ   )r+   Út_foldZ
t_fold_utcr   r   r    Útest_mixed_compare_foldØ  ó   z3TestLocalTimeDisambiguation.test_mixed_compare_foldc                 C   r“  )NrÄ  rI   rF   rG   rG  r   r”  )r+   Út_gapZ	t_gap_utcr   r   r    Útest_mixed_compare_gapÞ  r—  z2TestLocalTimeDisambiguation.test_mixed_compare_gapc                 C   s   t dddtd}|  t|ƒt|jddƒ¡ t dddddtd}t dd	d
ddtd}|  t|ƒt|jddƒ¡ |  t|ƒt|jddƒ¡ d S )Nr¼  r"   r   rú  rÄ  r#   rS  rG  rI   rF   rG   )r   rh  r*   rA  rÕ   )r+   r¥   r•  r˜  r   r   r    Útest_hash_awareä  s    z+TestLocalTimeDisambiguation.test_hash_awareN)r:   rN   rO   r{  r|  r  r€  rq  rÙ   r  r   r‡  rõ  r‰  rŠ  r‹  rŽ  r[  r  r´   rÎ   rÌ   r×   r’  r–  r™  rš  r   r   r   r    rx  Û  s8    



	


!rx  c                 C   s"   t  | ¡\}}t|d ƒ t||ƒS r-   )rå  ÚteeÚnextrÐ  )Úiterabler  r  r   r   r    Úpairsî  s   

rž  c                   @   sÆ   e Zd ZdZdd„ Zedd„ ƒZedd„ ƒZedd	„ ƒZ	e
d
ddƒ ¡ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zed(dd„ƒZed)dd„ƒZdd„ Zdd„ Zed*d d!„ƒZd"d#„ Zd$d%„ Zd&d'„ ZdS )+ÚZoneInfoz/usr/share/zoneinfoc                 C   s    	 || _ || _|  ||¡| _d S r-   )ÚutÚtiÚinvertr   )r+   r   r¡  r   r   r    r\   õ  s   zZoneInfo.__init__c                 C   s¬   t d| ƒt d| ƒf}| rT|d d t }|d d  |7  < |d d  |7  < tdt| ƒƒD ]$}|d |  ||d  d t 7  < |d |  || d t 7  < q/|S )NrŸ  r   r"   )r   ÚSECr  rB  )r   r¡  r   r[   r  r   r   r    r¢    s   $"zZoneInfo.invertc              	   C   sF  |  d¡ ¡ dkrtdƒ‚| d¡ tdƒ}| |d¡ tjdkr%| ¡  tdƒ}| ||d ¡ tjdkr:| ¡  td	ƒ}| ||d ¡ g }t	|d
 ƒD ]}| 
t d|  d¡¡¡ qN|  |d ¡}t|ƒD ]\}\}}	}
||
| d|
¡…  ¡ }td|ƒ|	|f||< qhd gt|ƒ }t|ƒD ]
\}}|| ||< q‘| ||ƒ}|S )NrI   ZTZifznot a zoneinfo fileru   r  rC   r>  r   r0  r"   z>lbbrK   rG   )ÚreadÚdecoderÄ   Úseekr   Úfromfiler8   Ú	byteorderÚbyteswapr  r  ÚstructÚunpackrz  Úfindr   rB  )rl  ÚfileobjÚcountsr   Ztype_indicesZttisr  ZabbrsZgmtoffÚisdstZabbrindÚabbrr¡  Úidxr+   r   r   r    r§    s2   



zZoneInfo.fromfilec                 C   sH   t j | j|¡}t|dƒ}|  |¡W  d   ƒ S 1 sw   Y  d S )NÚrb)ÚosÚpathÚjoinÚzonerootÚopenr§  )rl  r6   r´  r#  r   r   r    Úfromname3  s   $ÿzZoneInfo.fromnamerb  r"   c                 C   sà   	 t |tƒs
tdƒ‚|j| urtdƒ‚| ¡ | j d |jd  |jd  |j	 }|| j
d k r8| jd }d}n(t | j
|¡}| j|d |… \}}|d |d  }|td|| j
|d   ƒk}||d 7 }|rn|jdd	S |S )
Nrd  re  r	  r<  r  r"   r   rG   rú  )rU   r   rw   r   rÄ   rÌ  ÚEPOCHORDINALrÊ  r˜  r—  r   r¡  ÚbisectÚbisect_rightr   rÕ   )r+   rc   r–  Zttirû  r±  Ztti_prevÚshiftr   r   r    r¢   ;  s.   

ÿþý
zZoneInfo.fromutcc                 C   s\   |  ¡ | j d |jd  |jd  |j }| j|j }t ||¡}| j	t
d|d ƒ | S )Nr	  r<  r  r   r"   )rÌ  r¹  rÊ  r˜  r—  r   rû  rº  r»  r¡  rz   )r+   rc   r  r–  r   r±  r   r   r    Ú_find_tiY  s   ÿþýzZoneInfo._find_tic                 C   ó   |   |d¡S r  ©r½  rb   r   r   r    rd   c  ó   zZoneInfo.utcoffsetc                 C   s   |   |d¡}|r
tS tS rk  )r½  r¸   rÉ   )r+   rc   r¯  r   r   r    rg   f  s   zZoneInfo.dstc                 C   r¾  )NrG   r¿  rb   r   r   r    rf   n  rÀ  zZoneInfo.tznameNc                 c   s˜    |d u r| j }tj |d¡}zt|ƒ}W n
 ty   Y d S w |  |D ]}| ¡ }|r9| d¡s9| ¡ d V  q%W d   ƒ d S 1 sEw   Y  d S )Nzzone.tabú#rG   )	r¶  r³  r´  rµ  r·  r  Ústripr4   r  )rl  ZzonedirZzone_tabr#  Úliner   r   r    Ú	zonenamesq  s"   €ÿ€ý"ÿzZoneInfo.zonenamesc                 C   sÀ  d } } }}t j }}t }}	tj }
}d  }}tj }}d  }}t|ddƒ}|  ¡ D ]v}|d7 }|  |¡}| ¡ D ]f\}}||k rEq<|tkrp|d7 }||f||fkr[|}|}|}|tj| f|tj|
 fk ro|}|}|}
q<|tk rž|d7 }| }||f|	|fkr‰|}	|}|}|tj| f|tj| fk r|}|}|}q<|d7 }q<q-|||f}td| ƒ tdt	|ƒf|  ƒ td||
|f ƒ td|||f ƒ td|||f ƒ td|	||f ƒ d S )	Nr   r"   zNumber of zones:       %5dz@Number of transitions: %5d = %d (gaps) + %d (folds) + %d (zeros)z!Min gap:         %16s at %s in %sz!Max gap:         %16s at %s in %sz!Min fold:        %16s at %s in %sz!Max fold:        %16s at %s in %s)
r   rz   r¸   r   r®   rÄ  r¸  ÚtransitionsÚprintry  )rl  Ú
start_yearÚcountZ	gap_countZ
fold_countZzeros_countZmin_gapZmin_foldZmax_gapZmax_foldZmin_gap_datetimeZmax_gap_datetimeZmin_gap_zoneZmax_gap_zoneZmin_fold_datetimeZmax_fold_datetimeZmin_fold_zoneZmax_fold_zoneZstats_sinceÚzonenamer£   rc   r¼  Ztrans_countsr   r   r    Ústats€  s`   



€€
ç
ÿzZoneInfo.statsc                 c   sJ    t t| j| jƒƒD ]\\}}\}}|d |d  }t |¡|fV  q
d S r  )rž  rÐ  r   r¡  r   r  ©r+   Ú_Zprev_tir¥   r¡  r¼  r   r   r    rÅ  ±  s
   €"þzZoneInfo.transitionsc                 c   sr    	 t t| j| jƒƒD ]+\\}}\}}|d |d  }|tk r6|d |d kr6t |¡| |d |d fV  qd S )Nr   r"   rG   )rž  rÐ  r   r¡  r¸   r   r  rË  r   r   r    Únondst_folds¶  s   €"€ýzZoneInfo.nondst_foldsFc           
   
   C   sn   d}|   ¡ D ].}|  |¡}| ¡ D ]"\}}}}	|j|k s"|r#||	kr#q|d7 }td||||||	f ƒ qqd S )Nr   r"   z%3d) %-30s %s %10s %5s -> %s)rÄ  r¸  rÍ  rÅ  rÆ  )
rl  Z	same_abbrrÇ  rÈ  rÉ  r£   rc   r¼  Z	prev_abbrr°  r   r   r    Úprint_all_nondst_folds½  s   
ÿüþzZoneInfo.print_all_nondst_foldsc                 c   s,    |   ¡ D ]\}}|tk r|| fV  qd S r-   ©rÅ  r¸   ©r+   r¥   r¼  r   r   r    ÚfoldsÉ  s   €€þzZoneInfo.foldsc                 c   s*    |   ¡ D ]\}}|tkr||fV  qd S r-   rÏ  rÐ  r   r   r    ÚgapsÎ  s   €
€þzZoneInfo.gapsc                 c   s"    |   ¡ D ]	\}}|s|V  qd S r-   )rÅ  rÐ  r   r   r    ÚzerosÓ  s   €€þzZoneInfo.zerosr-   )r"   )Fr"   )r:   rN   rO   r¶  r\   r{  r¢  Úclassmethodr§  r¸  r   rÌ  r¹  r¢   r½  rd   rg   rf   rÄ  rÊ  rÅ  rÍ  rÎ  rÑ  rÒ  rÓ  r   r   r   r    rŸ  ó  s4    

$

0rŸ  c                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚZoneInfoTestzAmerica/New_Yorkc              
   C   sx   t jdkr
|  d¡ t jdkr|  d¡ z
t | j¡| _W d S  ty; } z|  d| j|f ¡ W Y d }~d S d }~ww )NÚvxworksz"Skipping zoneinfo tests on VxWorksr,  z"Skipping zoneinfo tests on WindowszSkipping %s: %s)r8   r‰  r;   rŸ  r¸  rÉ  r£   ÚFileNotFoundError)r+   Úerrr   r   r    r¬   Ü  s   



"€ÿzZoneInfoTest.setUpc                 C   s<   |   |jd d|jt|jƒf|jd d|jt|jƒf¡ d S )Nr   )r*   rÕ   rû  Úidr   )r+   r  r  r   r   r    ÚassertEquivDatetimesæ  s   ÿz!ZoneInfoTest.assertEquivDatetimesc           	      C   sþ   | j }| ¡ D ]u\}}d| d| |tj fD ]E}|| }| |j|d¡}|  |jd¡ |jtj	d 
|¡}|  ||¡ | ¡ }|  |jd d|| ¡ |  | 
tj	¡|jtj	d¡ qtj |fD ]}|| }|j|d}| |¡}|  |jd¡ qcqd S )Nr   r  r   r"   )r£   rÑ  r   rb  r¢   rÕ   r*   rû  r   r­   rX  rÚ  rd   ©	r+   r£   rc   r¼  rÇ  Úudtrf  Zadtrd   r   r   r    Ú
test_foldsê  s(   ÿ
üòzZoneInfoTest.test_foldsc           	      C   s,  | j }| ¡ D ]Œ\}}d| d| |tj fD ]^}|| }|j|d}| |¡}|  |jd¡ |jtj	d 
|¡}|  ||¡ | ¡ }|  |jd d|jd d| ¡ | |j|d¡| | }|  |jdd ¡ |jdd ¡ d| ¡ qtj |fD ]}|| }| |j|d¡}|  |jd¡ q|qd S )Nr   r  r   r"   rú  zAt %s.)r£   rÒ  r   rb  rÕ   r¢   r*   rû  r   r­   rX  rÚ  rd   Z
assertLessrÛ  r   r   r    Ú	test_gaps   s,   
 þýðzZoneInfoTest.test_gapsc              	   C   sž  d| j v s| j  d¡r|  d| j  ¡ | j}tj d¡}| j tjd< z™t ¡  | 	¡ D ]{\}}|j
dkr6 nq|tdddƒ t }|t }dd	d
d|d |d |d fD ]%}|| }t |¡}	t ||¡jd d}
|  |	|
¡ |	 ¡ }|  ||¡ qS|dkr¦t |¡|d  }| ¡ }|jdd ¡ }|  |||d  ¡ |  |||d  ¡ q+W |d u r±tjd= n|tjd< t ¡  d S |d u rÅtjd= n|tjd< t ¡  w )NZRiyadh8zright/zSkipping %sÚTZiõ  rb  r"   i€ÍýÿiÀæþÿrÐ   r   i@ i€2 r   rG   rú  )rÉ  r4   r;   r£   r³  ÚenvironÚgetr%  ÚtzsetrÅ  rÅ  r   r£  ró  rÕ   rÚ  r–  r*   )r+   r£   rß  rÜ  r¼  rŒ  rç  rÇ  r`  ZsdtZtzdtr  rc   Zts0Zts1r   r   r    Útest_system_transitions  sL   

ù
ÿ
€

ü


z$ZoneInfoTest.test_system_transitionsN)	r:   rN   rO   rÉ  r¬   rÚ  rÝ  rÞ  rã  r   r   r   r    rÕ  Ù  s    
rÕ  c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚZoneInfoCompleteTestc                    sh   g }t dƒr,t ¡ D ]!}td| tfi ƒ}||_t|ƒD ]}| d¡r*| ||ƒ¡ qq
t	ƒ  
|¡ d S )NZtzdatazZoneInfoTest[%s]Ztest_)r   rŸ  rÄ  r‡   rÕ  rÉ  r.   r4   r  Úsuperr\   )r+   rŒ  r6   ZTestÚmethod©r9   r   r    r\   E  s   
€þzZoneInfoCompleteTest.__init__)r:   rN   rO   r\   Ú__classcell__r   r   rç  r    rä  D  s    rä  c                   @   r¿  )ÚIranTestzAsia/TehranN)r:   rN   rO   rÉ  r   r   r   r    ré  Q  rÂ  ré  c                   @   s´   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+S ),ÚCapiTestc                 C   s$   | j j d¡r|  d¡ t ¡  d S )NZPurezNot relevant in pure Python)r9   r:   r5   r;   Ú	_testcapiZtest_datetime_capir^   r   r   r    r¬   V  s   
zCapiTest.setUpc              	   C   sR   dD ]$}t  |¡}| j|d |  |tj¡ W d   ƒ n1 s!w   Y  qd S )N©TF)Ú	use_macro)rë  Zget_timezone_utc_capirí   r†   r   r­   )r+   rí  Zcapi_utcr   r   r    Útest_utc_capi_  s   
ÿ€ýzCapiTest.test_utc_capic              	   C   sü   t  ¡ \}}}ttdddƒ}ttddƒ}d||fd||fd||fg}|D ]U\}}}	| j|dB |  ||	¡ tdd	d
|d}
tdd	d
|	d}|  |
|¡ |  |
 ¡ | ¡ ¡ tdd	d
dtjd}|  |
 	tj¡|¡ W d   ƒ n1 svw   Y  q&d S )NrÏ   r–   r“   Úest_capiÚ	est_macroÚest_macro_nn)r6   r¼  rG   rI   r   rD   )
rë  Zmake_timezones_capir   r   rí   r*   r   rf   r­   rX  )r+   rï  rð  rñ  Z	exp_namedZexp_unnamedÚcasesr6   Ztz_actZtz_exprx   r½  rY  r   r   r    Útest_timezones_capif  s&   ýõ€ÿzCapiTest.test_timezones_capic              
   C   óœ   G dd„ dt ƒ}t |fD ]?}dD ]:}||Ž }| j||d% t |¡\}}}|  ||j¡ |  ||j¡ |  ||j¡ W d   ƒ n1 sEw   Y  qqd S )Nc                   @   r  )z=CapiTest.test_PyDateTime_DELTA_GET.<locals>.TimeDeltaSubclassNr€  r   r   r   r    ÚTimeDeltaSubclass  r‚  rõ  )©r    é7   éŸ† rö  ©rl  r   )r   rí   rë  ZPyDateTime_DELTA_GETr*   rÿ   r¿   r½   )r+   rõ  Úklassr”   rC  rÿ   r¿   r½   r   r   r    Útest_PyDateTime_DELTA_GET€  ó   û€þÿz"CapiTest.test_PyDateTime_DELTA_GETc              
   C   rô  )Nc                   @   r  )z2CapiTest.test_PyDateTime_GET.<locals>.DateSubclassNr€  r   r   r   r    r    r‚  r  ))r¼  r"   rG   )rr  rG   rÚ  rù  )r   rí   rë  ZPyDateTime_GETr*   rÅ  rÆ  ri  )r+   r  rú  r”   rC  rÅ  rÆ  ri  r   r   r    Útest_PyDateTime_GETŽ  rü  zCapiTest.test_PyDateTime_GETc           
   
   C   sÒ   G dd„ dt ƒ}t |fD ]Z}ddddddd	d
tjffD ]J}||Ž }| j||d5 t |¡\}}}}}	|  ||j¡ |  ||j¡ |  ||j	¡ |  ||j
¡ |  |	|j¡ W d   ƒ n1 s`w   Y  qqd S )Nc                   @   r  )z;CapiTest.test_PyDateTime_DATE_GET.<locals>.DateTimeSubclassNr€  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ë  ZPyDateTime_DATE_GETr*   rÊ  r˜  r—  rÏ  r†   r   )
r+   r‘  rú  r”   rC  rÊ  r˜  r—  rÏ  r   r   r   r    Útest_PyDateTime_DATE_GETœ  s(   ÿÿÿø€üÿz!CapiTest.test_PyDateTime_DATE_GETc           
   
   C   sÌ   G dd„ dt ƒ}t |fD ]W}dddddtjffD ]J}||Ž }| j||d5 t |¡\}}}}}	|  ||j¡ |  ||j¡ |  ||j	¡ |  ||j
¡ |  |	|j¡ W d   ƒ n1 s]w   Y  qqd S )	Nc                   @   r  )z7CapiTest.test_PyDateTime_TIME_GET.<locals>.TimeSubclassNr€  r   r   r   r    r˜  °  r‚  r˜  )r¡   r’  rò   r#   r¡   r’  rò   r#   rù  )r   r   r­   rí   rë  ZPyDateTime_TIME_GETr*   rÊ  r˜  r—  rÏ  r†   r   )
r+   r˜  rú  r”   rC  rÊ  r˜  r—  rÏ  r   r   r   r    Útest_PyDateTime_TIME_GET¯  s$   ÿÿø€ýÿz!CapiTest.test_PyDateTime_TIME_GETc                 C   s  t  ¡ \}}}| jdd |  |tj¡ W d   ƒ n1 sw   Y  | jdd |  |tj¡ W d   ƒ n1 s<w   Y  | jdd> |  |tj¡ ttdddƒ}|  ||¡ t	dd	d
|d}t	dd	d
|d}|  ||¡ |  | 
¡ | 
¡ ¡ W d   ƒ d S 1 sˆw   Y  d S )NÚutc0)ZtestnameÚutc1Únon_utcr   r–   rÈ   r¼  rG   rI   r   )rë  Zget_timezones_offset_zerorí   r†   r   r­   rÂ   r   r*   r   rf   )r+   r  r  r  Znon_utc_exprx   r½  r   r   r    Útest_timezones_offset_zeroÁ  s    ÿÿ"õz#CapiTest.test_timezones_offset_zeroc           	   
   C   s  G dd„ dt ƒ}t dddƒ}|dddƒ}tdddƒ}tj}|  ||ƒ¡ |  ||ƒ¡ |  ||ƒ¡ |  ||dƒ¡ |  ||dƒ¡ |  ||dƒ¡ tƒ tƒ ddtdƒt	j
tddƒg}|D ]&}d	D ]!}| j||d
 |  |||ƒ¡ W d   ƒ n1 s}w   Y  qaq]d S )Nc                   @   r  )z.CapiTest.test_check_date.<locals>.DateSubclassNr€  r   r   r   r    r  Ø  r‚  r  éÛ  r"   Tú
2011-01-01r¡   r   rì  ©ÚargÚexact)r   r   rë  Zdatetime_check_dater~   rØ   r  rÉ  r   r   r­   r   rí   )	r+   r  rC  Zdsrc   Zis_dater”   r  r	  r   r   r    Útest_check_date×  s,   ÿÿ€ÿÿzCapiTest.test_check_datec              
   C   sà   G dd„ dt ƒ}t ddƒ}|ddƒ}tj}|  ||ƒ¡ |  ||ƒ¡ |  ||dƒ¡ |  ||dƒ¡ tƒ tƒ ddtdƒtj	t
dddƒg}|D ]&}d	D ]!}| j||d
 |  |||ƒ¡ W d   ƒ n1 sgw   Y  qKqGd S )Nc                   @   r  )z.CapiTest.test_check_time.<locals>.TimeSubclassNr€  r   r   r   r    r˜  ô  r‚  r˜  r¡   r’  Tr"   r  r  rì  r  )r   rë  Zdatetime_check_timer~   rØ   r  rÉ  r   r   r­   r   rí   )r+   r˜  r¥   rô  Zis_timer”   r  r	  r   r   r    Útest_check_timeó  s&   

ÿÿ€ÿÿzCapiTest.test_check_timec              
   C   sì   G dd„ dt ƒ}t dddddƒ}|dddddƒ}tj}|  ||ƒ¡ |  ||ƒ¡ |  ||dƒ¡ |  ||dƒ¡ tƒ tƒ ddtdƒtj	t
dddƒg}|D ]&}d	D ]!}| j||d
 |  |||ƒ¡ W d   ƒ n1 smw   Y  qQqMd S )Nc                   @   r  )z6CapiTest.test_check_datetime.<locals>.DateTimeSubclassNr€  r   r   r   r    r‘    r‚  r‘  r  r"   r¡   r’  Tr  rì  r  )r   rë  Zdatetime_check_datetimer~   rØ   r  rÉ  r   r   r­   r   rí   )r+   r‘  rc   rg  Zis_datetimer”   r  r	  r   r   r    Útest_check_datetime  s&   ÿÿ€ÿÿzCapiTest.test_check_datetimec              
   C   sà   G dd„ dt ƒ}t dƒ}|dƒ}tj}|  ||ƒ¡ |  ||ƒ¡ |  ||dƒ¡ |  ||dƒ¡ tƒ tƒ ddtjt	dddƒt
dddƒg}|D ]&}dD ]!}| j||d |  |||ƒ¡ W d   ƒ n1 sgw   Y  qKqGd S )	Nc                   @   r  )z4CapiTest.test_check_delta.<locals>.TimeDeltaSubclassNr€  r   r   r   r    rõ  (  r‚  rõ  r"   Tr  r  rì  r  )r   rë  Zdatetime_check_deltar~   rØ   r  rÉ  r   r­   r   r   rí   )r+   rõ  r  ZtdsZis_timedeltar”   r  r	  r   r   r    Útest_check_delta'  s&   ÿÿ€ÿÿzCapiTest.test_check_deltac           	   
   C   s  G dd„ dt ƒ}t ƒ }|ƒ }ttddƒ}tj}|  ||ƒ¡ |  ||ƒ¡ |  ||ƒ¡ |  ||dƒ¡ |  ||dƒ¡ |  ||dƒ¡ tƒ tƒ ddt	dddƒt
dddƒg}|D ]&}d	D ]!}| j||d
 |  |||ƒ¡ W d   ƒ n1 syw   Y  q]qYd S )Nc                   @   r  )z2CapiTest.test_check_tzinfo.<locals>.TZInfoSubclassNr€  r   r   r   r    ÚTZInfoSubclassB  r‚  r  rÏ   r–   Tr"   r  r  rì  r  )r   r   r   rë  Zdatetime_check_tzinfor~   rØ   r  rÉ  r   r   rí   )	r+   r  rê  Ztzisr£   Z	is_tzinfor”   r  r	  r   r   r    Útest_check_tzinfoA  s,   ÿÿ€ÿÿzCapiTest.test_check_tzinfoc              	   C   óh   t dddƒ}dD ])}| j|d t ||j|j|j¡}|  ||¡ W d   ƒ n1 s,w   Y  qd S )Nrþ  rÁ  r    ©FT©Úmacro)r   rí   rë  Zget_date_fromdaterÅ  rÆ  ri  r*   ©r+   Úexp_dater  Ú
c_api_dater   r   r    Útest_date_from_date^  ó   üù€ÿzCapiTest.test_date_from_datec                 C   s€   t dddddddƒ}dD ]1}| j|d	! t ||j|j|j|j|j|j	|j
¡}|  ||¡ W d   ƒ n1 s8w   Y  qd S )
Nrþ  rÁ  r    r   r¡   r÷  rø  r  r  )r   rí   rë  Zget_datetime_fromdateandtimerÅ  rÆ  ri  rÊ  r˜  r—  rÏ  r*   r  r   r   r    Útest_datetime_from_dateandtimek  s"   ø
õ€ÿz'CapiTest.test_datetime_from_dateandtimec                 C   s    t dddddddƒ}dD ]A}d	D ]<}| j||d
+ t ||j|j|j|j|j|j	|j
|j¡	}|  ||¡ |  |j|j¡ W d   ƒ n1 sGw   Y  qqd S )Nrþ  rÁ  r    r   r¡   r÷  rø  ©r   r"   r  ©r  rû  )r   rí   rë  Z#get_datetime_fromdateandtimeandfoldrÅ  rÆ  ri  rÊ  r˜  r—  rÏ  rû  r*   )r+   r  rû  r  r  r   r   r    Ú%test_datetime_from_dateandtimeandfold|  s*   ÷ó€ÿÿz.CapiTest.test_datetime_from_dateandtimeandfoldc              	   C   sn   t ddddƒ}dD ]+}| j|d t ||j|j|j|j¡}|  ||¡ W d   ƒ n1 s/w   Y  q	d S )Nr   r¡   r÷  rø  r  r  )	r   rí   rë  Zget_time_fromtimerÊ  r˜  r—  rÏ  r*   )r+   Úexp_timer  Ú
c_api_timer   r   r    Útest_time_from_time  s   ûø€ÿzCapiTest.test_time_from_timec                 C   sŽ   t ddddƒ}dD ];}dD ]6}| j||d% t ||j|j|j|j|j¡}|  	||¡ |  	|j|j¡ W d   ƒ n1 s>w   Y  qq	d S )Nr   r¡   r÷  rø  r  r  r  )
r   rí   rë  Zget_time_fromtimeandfoldrÊ  r˜  r—  rÏ  rû  r*   )r+   r  rû  r  r  r   r   r    Útest_time_from_timeandfoldž  s$   úö€ÿÿz#CapiTest.test_time_from_timeandfoldc              	   C   r  )Nr    r÷  rø  r  r  )r   rí   rë  Zget_delta_fromdsurÿ   r¿   r½   r*   )r+   Z	exp_deltar  Zc_api_deltar   r   r    Útest_delta_from_dsu¯  r  zCapiTest.test_delta_from_dsuc              	   C   sn   t dddƒ ¡ }dD ]*}| j|d t t|ƒ|¡}|  |tdddƒ¡ W d   ƒ n1 s/w   Y  q
d S )NéË  rI   r¡   r  r  )r   r–  rí   rë  Zget_date_fromtimestamprV   r*   r   )r+   rô  r  rC  r   r   r    Útest_date_from_timestamp¼  s   ý€ÿz!CapiTest.test_date_from_timestampc              
   C   sº   dddt tddƒdfddd	t tddƒdfg}tj}|D ]=}d
D ]8}| j||d' |\}}}t|d|iŽ}t| ¡ ƒ}	||	|||ƒ}
|  ||
¡ W d   ƒ n1 sTw   Y  q!qd S )N)©r"  rI   r¡   NF)r$  NTr$  r"   r–   T)©r"  rI   r¡   r  r’  NF)r%  NTr%  r  )Úcaser  r   )	r   r   rë  Zget_datetime_fromtimestamprí   r   rV   r–  r*   )r+   rò  r1  r&  r  Zdtupr   ZusetzZdt_origrô  r¯  r   r   r    Útest_datetime_from_timestampÅ  s(   ú	
ù€ÿÿz%CapiTest.test_datetime_from_timestampN)r:   rN   rO   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ê  U  s,    		rê  c                 C   s   |  tƒ ¡ |S r-   )ZaddTesträ  )ÚloaderZstandard_testsÚpatternr   r   r    Ú
load_testsÜ  s   r*  Ú__main__)kr·  rå  rº  rÞ   r`  r8   r³  r   rn   rƒ  rª  rˆ  r   Úoperatorr   r   r   r   r   r   r	   r
   r   Útestr   Ztest.supportr   r   r   r   r   r)   r   r   r   r   r   r   r   r%  rë  r7  rŠ   Ú_loadsrX  r  r   rˆ   rS  r§  rl  r/  ZTestCaser'   rP   ri   rm   rq   r§   rñ   rý   r»  rÀ  rÃ  rË  rÌ  rŠ  rŒ  r  rŸ  rÊ  rì  r!  r¸   r9  rÉ   rC  r3  r4  r"  rÔ   r9  r:  r;  rE  rF  r<  rU  rc  rg  rh  ri  rj  rk  rl  rx  r£  rž  rŸ  rÕ  Z	TestSuiterä  ré  rê  r*  r:   Úmainr   r   r   r    Ú<module>   s    ,ÿ8_ A3    =!      a             "        <


*  M"32  
 gk   

ÿ