
    daf                    L   d 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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( ddl m)Z)m Z  ddl&Z*	 ddl+Z+ddl-Z-	 ddl.Z.ej^                  ej`                  hZ1 e2ejf                  dz         D  cg c]  } ee| f	 c} Z4 e5e4      ejf                  dz   k(  sJ  e ddddd      Z6dddi g dfZ7 e8d      Z9 e8d      Z: G d dejv                        Z< G d de%      Z= G d de=      Z> G d de>      Z? G d de%      Z@ G d  d!ejv                        ZA G d" d#ejv                        ZB G d$ d%      ZC G d& d'eCejv                        ZD G d( d)ejv                        ZE G d* d+e)      ZF G d, d-eCejv                        ZG G d. d/e       ZH G d0 d1eG      ZI G d2 d3eI      ZJ G d4 d5e&      ZK G d6 d7eCejv                        ZL G d8 d9      ZM G d: d;eLeMejv                        ZN G d< d=eIeMejv                        ZOd> ZP e$d      ZQ e$d?      ZR e$d@      ZS e$dA      ZT e ddBddC      ZU e dddDd      ZV G dE dFe%      ZW eWdGdHdIdJ      ZX eWdKdLdMdN      ZY eWdOdPdQdR      ZZ eWdSdTdUdV      Z[ e=ddWd      Z\ e=dXdYd      Z] G dZ d[ejv                        Z^ G d\ d]ejv                        Z_ G d^ d_e%      Z` G d` dae`      Za eadGdbdIdJ      Zb eadKdcdMdN      Zc eadOdddQdR      Zd eadSdedUdV      Ze G df dge%      Zf G dh diejv                        Zg e$dd      Zhdj Zi G dk dle%      Zj G dm dnejv                        Zk G do dpej                        Zm G dq drek      Zn ej                  e+du ds       G dt duejv                               Zpdv Zqerdwk(  r ej                          yy# e,$ r dZ+Y qw xY w# e,$ r Y tw xY wc c} w )xzUTest date/time type.

See https://www.zope.dev/Members/fdrake/DateTimeWiki/TestCases
    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)UTC)datedatetime     
   g     @A@abc infnanc                   *    e Zd Zd Zd Zd Zd Zd Zy)
TestModulec                     t         }| j                  |j                  d       | j                  |j                  d       y )Nr   '  )datetime_moduleassertEqualr   r   )selfr   s     ./root/Python-3.12.4/Lib/test/datetimetester.pytest_constantszTestModule.test_constantsG   s3    "))1-))40    c                 L    | j                  t        t        j                         y N)assertIsr   r   utcr*   s    r+   test_utc_aliaszTestModule.test_utc_aliasL   s    c8<<(r-   c                 p    t        t              }t        j                  D ]  }| j                  ||        y)z2Test that __all__ only points to valid attributes.N)dirr(   __all__assertIn)r*   	all_attrsattrs      r+   test_allzTestModule.test_allO   s/    (	#++ 	+DMM$	*	+r-   c                     d| j                   j                  v r| j                  d       t        }t	        d t        |      D              }t	        g d      }| j                  ||z
  t	        g              y )N_Purez"Only run for Fast C implementationc              3   d   K   | ](  }|j                  d       s|j                  d       s| * yw)__N)
startswithendswith).0names     r+   	<genexpr>z/TestModule.test_name_cleanup.<locals>.<genexpr>Z   s0      NT??40t9L  Ns   .0)r   r   r   r   datetime_CAPIr   r   r   r   r   sys)	__class____name__skipTestr(   setr5   r)   )r*   r   namesalloweds       r+   test_name_cleanupzTestModule.test_name_cleanupU   sl    dnn---MM>?" NS] N N / 0 	#b'2r-   c                 2   d| j                   j                  v r| j                  d       t        j                  }| 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	       | 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	       y )N_Fastz'Only run for Pure Python implementation            r         )rF   rG   rH   _pydatetime_divide_and_roundr)   )r*   dars     r+   test_divide_and_roundz TestModule.test_divide_and_rounda   sd   dnn---MMCD++S"q)QR( 	QA&RR(QR(Ra( 	RQ'S!b)Rb)S"q)QA&RR(QR(Ra(r-   N)rG   
__module____qualname__r,   r3   r:   rL   r^   r!   r-   r+   r%   r%   E   s    1
)+
3)r-   r%   c                   ,    e Zd ZddZd Zd Zd Zd Zy)FixedOffsetc                     t        |t              rt        |      }t        |t              rt        |      }|| _        || _        || _        y Nminutes)
isinstanceintr   _FixedOffset__offset_FixedOffset__name_FixedOffset__dstoffsetr*   offsetrB   	dstoffsets       r+   __init__zFixedOffset.__init__   s@    fc"v.Fi%!)4I$r-   c                 6    | j                   j                         S r/   )rj   lowerr2   s    r+   __repr__zFixedOffset.__repr__   s    {{  ""r-   c                     | j                   S r/   )ri   r*   dts     r+   	utcoffsetzFixedOffset.utcoffset       }}r-   c                     | j                   S r/   )rj   rt   s     r+   tznamezFixedOffset.tzname   s    {{r-   c                     | j                   S r/   )rk   rt   s     r+   dstzFixedOffset.dst   s    r-   N*   )rG   r_   r`   ro   rr   rv   ry   r{   r!   r-   r+   rb   rb      s    %# r-   rb   c                       e Zd ZddZy)PicklableFixedOffsetNc                 4    t         j                  | |||       y r/   )rb   ro   rl   s       r+   ro   zPicklableFixedOffset.__init__   s    T64;r-   )NNNrG   r_   r`   ro   r!   r-   r+   r   r      s    <r-   r   c                       e Zd ZdZy)PicklableFixedOffsetWithSlots)ri   rj   spamN)rG   r_   r`   	__slots__r!   r-   r+   r   r      s    DIr-   r   c                       e Zd Zd Zy)_TZInfoc                 *    t        j                          S r/   )random)r*   r(   s     r+   rv   z_TZInfo.utcoffset   s    }}r-   NrG   r_   r`   rv   r!   r-   r+   r   r      s    r-   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	
TestTZInfoc           
          t               }t        ddddddd|      }| j                  t              5  |j	                          d d d        y # 1 sw Y   y xY w)N  rT             rQ   r   )r   r   assertRaises	TypeErrorrv   )r*   tz1dt1s      r+   test_refcnt_crash_bug_22044z&TestTZInfo.test_refcnt_crash_bug_22044   sM    itQBAq#6y) 	MMO	 	 	s   AAc                     t               }t        j                  }| j                  t        |j
                  |       | j                  t        |j                  |       | j                  t        |j                  |       y r/   )r   r   maxr   NotImplementedErrorry   rv   r{   )r*   uselessru   s      r+   test_non_abstractnessz TestTZInfo.test_non_abstractness   s[     (\\-w~~rB-w/@/@"E-w{{B?r-   c                     G d dt               }| j                  t        |t                       |dd      }| j                  |t                t	        j
                         }| j                  t        |j                  |       | j                  t        |j                  |       | j                  t        |j                  |       y )Nc                       e Zd Zd Zy)9TestTZInfo.test_subclass_must_override.<locals>.NotEnoughc                      || _         || _        y r/   )_NotEnough__offset_NotEnough__name)r*   rm   rB   s      r+   ro   zBTestTZInfo.test_subclass_must_override.<locals>.NotEnough.__init__   s     &"r-   Nr   r!   r-   r+   	NotEnoughr      s    #r-   r   rQ   NotByALongShot)r   
assertTrue
issubclassassertIsInstancer   nowr   r   ry   rv   r{   )r*   r   r	   ru   s       r+   test_subclass_must_overridez&TestTZInfo.test_subclass_must_override   s    	# 	# 	
9f56q*+b&)\\^-ryy"=-r||R@-rvvr:r-   c                 l   t        dd      }| j                  |t               t        j                         d fD ]y  }| j                  |j                  |      t        d             | j                  |j                  |      d       | j                  |j                  |      t        d             { y )NrQ   Threere   r}   )
rb   r   r   r   r   r)   rv   r   ry   r{   )r*   foru   s      r+   test_normalzTestTZInfo.test_normal   s    G$b&),,.$& 	@BR\\"-y/CDRYYr]G4RVVBZ2)>?	@r-   c                    t        j                  t               }| j                  t        |      t                t        D ]H  \  }}}|j                  ||      }|j                  |      }| j                  t        |      t                J y r/   )r   __new__r0   typepickle_choicesdumpsloads)r*   origpickler	unpicklerprotogreenderiveds          r+   test_pickling_basezTestTZInfo.test_pickling_base   sj     ~~f%d4j&))7 	1%GYMM$.Eooe,GMM$w-0	1r-   c                    t        d      }t        |dfft        |dfft        |fft        |dfffD ]O  \  }} || }|j	                  d       }| j                  |t               | j                  t        |      |       | j                  |j                  d       |       | j                  |j	                  d       |       t        D ]  \  }}}|j                  ||      }	|j                  |	      }
| j                  |
t               | j                  t        |
      |       | j                  |
j                  d       |       | j                  |
j	                  d       |       | j                  t        |
d              R y )Nre   cookieESTr   )r   r   r   r   ry   r   r   r0   r   r)   rv   r   r   r   assertFalsehasattr)r*   rm   otypeargsr   onamer   r   r   r   r   s              r+   test_pickling_subclassz!TestTZInfo.test_pickling_subclass   s]   4(!FH#56*VX,>?y!'	) 	;KE4
 $<DKK%E!!$/MM$t*e,T^^D16:T[[.6-; ;)EdE2#//%0%%gv6d7mU3  !2!24!8&A  !5u=  &!9:;	;r-   c                     t        d      x G fddt              } |       }t        ddddd|	      }|j                  |      }| j	                  ||j                         z
  |       y )
Nr   hoursc                   ,    e Zd ZdZfdZ fdZd Zy)0TestTZInfo.test_issue23600.<locals>.UKSummerTimez~Simple time zone which pretends to always be in summer time, since
                that's what shows the failure.
            c                     S r/   r!   )r*   ru   	DSTOFFSETs     r+   rv   z:TestTZInfo.test_issue23600.<locals>.UKSummerTime.utcoffset   s	      r-   c                     S r/   r!   )r*   ru   DSTDIFFs     r+   r{   z4TestTZInfo.test_issue23600.<locals>.UKSummerTime.dst   s    r-   c                      y)NUKSummerTimer!   rt   s     r+   ry   z7TestTZInfo.test_issue23600.<locals>.UKSummerTime.tzname   s    %r-   N)rG   r_   r`   __doc__rv   r{   ry   )r   r   s   r+   r   r      s    !&r-   r   r   rW         r   )r   r   r   fromutcr)   rv   )r*   r   tzutr   r   s        @@r+   test_issue23600zTestTZInfo.test_issue23600   sc    'a00)	&6 	& ^T1b"a3JJqMQ[[]*A.r-   N)
rG   r_   r`   r   r   r   r   r   r   r   r!   r-   r+   r   r      s'    @;@	1;./r-   r   c                   r    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zy)TestTimeZonec                     t        t        d      d      | _        t        t        d       d      | _        t	        ddd      | _        y )N      #@r   ACDTrR   r     r   )r   r   r   r   r   DTr2   s    r+   setUpzTestTimeZone.setUp  s;    YS16:	YQ//74A&r-   c                     | j                   | j                  t        j                  t        j                  t        j
                  fD ],  }| j                  t        |      |j                  d              . y r/   )	r   r   r   r1   minr   r)   strry   r*   r   s     r+   test_strzTestTimeZone.test_str  sO    99dhh<</ 	7BSWbiio6	7r-   c                     t         }| j                  | j                  t        j                  t        j
                  t        j                  fD ](  }t        |      }| j                  |t        |             * y r/   )
r(   r   r   r   r1   r   r   reprr)   eval)r*   r   r   tzreps       r+   	test_reprzTestTimeZone.test_repr  sW    "99dhh<</ 	.B HERe-		.r-   c                 B   t        dd      }| j                  t        j                  j	                  d       t
               | j                  t        j                  j	                  d       |        | j                  t        j                  j	                  d       |       y )N   ;   r   rf   )r   r)   r   r1   rv   ZEROr   r   )r*   limits     r+   test_class_memberszTestTimeZone.test_class_members  sm    B///5t<//5v>//5u=r-   c                    | j                  t        j                  t        t        d                   | j	                  t        j                  t        t        d      d             | j                  t        j                  t        t        d      d             t        d      t        d      fD ];  }t        |      }| j                  |j                  d       t        d      z  d       = t        dd      t        d      fD ]9  }| j                  t        t        |       | j                  t        t        |        ; | j                  t              5  t        d        d d d        | j                  t              5  t        d       d d d        | j                  t              5  t        t        d        d d d        | j                  t              5  t        t        d       d d d        | j                  t              5  t        t        dd	       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   y xY w)
Nr   r   r   microsecondssecondsre   r}   ABCextra)r0   r   r1   r   assertIsNotr)   assertNotEqualrv   r   
ValueErrorr   r   )r*   	subminuter   invalids       r+   test_constructorzTestTimeZone.test_constructor  s   hllHYq\$:;x	!e'DEx	!e'DE#3Yq5IJ 	NI)$BT 2Yq5I I1M	N "!Q16 	>Gj(G<j(WH=	> y)98D>9y)78B<7y)?8D$+??y)=8D"+==y)I8D%+III	 	:977??==IIs<   H  H,)H8II H),H58IIIc                     | j                  t        j                  t               | j                  | j                  t               y r/   )r   r   r1   r   r   r2   s    r+   test_inheritancezTestTimeZone.test_inheritance,  s*    hllF3dhh/r-   c                    | j                   }dD ]a  }|t        z  }| j                  |t        |      j	                  |             | j                  | t        |       j	                  |             c | j                  t              5  | j                  j	                  d       d d d        | j                  t              5  | j                  j	                  d       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)N)r   g      ?r    rR   )r   HOURr)   r   rv   r   r   r   )r*   dummyhrm   s       r+   test_utcoffsetzTestTimeZone.test_utcoffset0  s     	JAXFVXf%5%?%?%FGfWhw&7&A&A%&HI	J
 y)A488+=+=b+AAy)@488+=+=a+@@@ 	BA@@s   C&C2&C/2C;c                    | j                  t        j                  j                  | j                               | j                  t              5  | j                  j                  d       d d d        | j                  t              5  | j                  j                  d       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)Nr   rR   )assertIsNoner   r1   r{   r   r   r   r   r2   s    r+   test_dstzTestTimeZone.test_dst;  s{    (,,**47734y);488<<+;;y):488<<?:: 	<;::s   B,B8,B58Cc           
         | j                  dt        j                  j                  d              | j                  dt	        j                  d              | j                  dt        t
              j                  d              | j                  dt        dt        z        j                  d              | j                  dt        dt        z        j                  d              | j                  dt        t        d            j                  d              | j                  d	t        dt        z  d	      j                  d              | j                  d
t        t
        d
      j                  d              | j                  dt        t        dd            j                  d              | j                  dt        t        dd             j                  d              | j                  dt        t        ddd            j                  d              | j                  dt        t        ddd             j                  d              | j                  t              5  | j                  j                  d       d d d        | j                  t              5  | j                  j                  d       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)Nr   z	UTC-05:00z	UTC+09:30r   z	UTC-00:01re   XYZ   zUTC+01:06:40r     zUTC-01:06:40zUTC+01:06:40.000001r   zUTC-01:06:40.000001r   rR   )r)   r   r1   ry   r   r   r  r   r   r   r   r2   s    r+   test_tznamezTestTimeZone.test_tznameA  s    3 3D 9:

4 01 5 5d ;<hrDy&9&@&@&FGhsTz&:&A&A$&GHhy/D&E&L&LT&RSdE : A A$ GH8D(#;#B#B4#HI 	)At2D)E)L)LT)RS!9Q#5"56==dC	E.!)AtQ"78??E	G.!9Qa#8"89@@F	H y)>488??2+>>y)=488??1+=== 	?>==s   #KKK
Kc                    | j                  t              5  t        j                  j	                  | j
                         d d d        | j                  t              5  t        j                  j	                  d       d d d        | j                  | j                  t        fD ]  }| j
                  j                  |      }|j	                  |      }| j                  ||z
  |j                  |             | j                  || j
                  j                  t        j                                y # 1 sw Y   xY w# 1 sw Y   xY w)Nznot datetimer   )r   r   r   r1   r   r   r   r   r   Easternreplacer)   rv   )r*   r   utctimelocals       r+   test_fromutczTestTimeZone.test_fromutcX  s    z* 	*LL  )	*y) 	1LL  0	188TYY0 	CBggooRo0GJJw'EUW_bll5.ABU!WW__HLL_AC		C		* 	*	1 	1s   *D3 D?3D<?Ec                    | j                  t        t              t        t                     | j	                  t        t              t        t                     | j	                  t        dt        z        t        dt        z  d             | j                  t              5  t        t              t        t              k   d d d        | j                  t        t              t        t              h       | j                  t        t              d k7         | j                  t        t              d k(         t        t              }| j                  |t        k(         | j                  |t        k7         | j                  |t        k         | j                  |t        kD         | j                  |t        k         | j                  |t        k\         | j                  |t        k         | j                  |t        kD         | j                  |t        k         | j                  |t        k\         y # 1 sw Y   yxY w)Nr	  r   )r   r   r   r  r)   r   r   r7   r   r   r   r   r   r   s     r+   test_comparisonzTestTimeZone.test_comparisond  s{   HTNHTN;$$8"t),hrDy%.HIy)J8D>HTN+JJhtnx~&67$./$4/0d^i(y)W%g&g&w'h'X&x(h' 	KJs   ! H88Ic                     t        ddd      }t        j                  t        j                  t        j                  fD ]  }| j                  |j                  |      |j                  |      j                                | j                  |j                  |      |j                  |      j                                | j                  |j                  |      |j                  |      j                                 y )Nr   r   )
r   r   r   r   r1   r)   ry   r  rv   r{   r*   r   r   s      r+   test_aware_datetimez TestTimeZone.test_aware_datetimey  s    Q1<<x||< 	9BRYYq\YYbY188:<R\\!_YYbY1;;=?RVVAYYYbY15579	9r-   c                    | j                   | j                  t        j                  t        j                  fD ]D  }t
        D ]9  \  }}}|j                  |j                  ||            }| j                  ||       ; F t        j                  }t
        D ]9  \  }}}|j                  |j                  ||            }| j                  ||       ; y r/   )r   r   r   r   r   r   r   r   r)   r1   r0   )r*   r   r   r   r   tz_copys         r+   test_picklezTestTimeZone.test_pickle  s    ))TXXx||X\\A 	.B-; .)E#//'--E*BC  "-.	. \\)7 	'%GYoogmmB&>?GMM'2&	'r-   c                 6   | j                   | j                  t        j                  t        j                  fD ])  }t        j
                  |      }| j                  ||       + t        j                  }t        j
                  |      }| j                  ||       y r/   )	r   r   r   r   r   copyr)   r1   r0   r*   r   r  s      r+   	test_copyzTestTimeZone.test_copy  sm    ))TXXx||X\\A 	*BiimGWb)	* \\))B-gr"r-   c                 6   | j                   | j                  t        j                  t        j                  fD ])  }t        j                  |      }| j                  ||       + t        j                  }t        j                  |      }| j                  ||       y r/   )
r   r   r   r   r   r  deepcopyr)   r1   r0   r  s      r+   test_deepcopyzTestTimeZone.test_deepcopy  so    ))TXXx||X\\A 	*BmmB'GWb)	* \\--#gr"r-   c                 X   t        dd      t        ddd      t        dddd      g}|j                  |D cg c]  }|  c}       |D ])  }| j                  d|      5  t        |       d d d        + t        d	
      t        d	d      g}|j                  |D cg c]  }|  c}       |D ]G  }| j                  d|      5  | j	                  t
              5  t        |       d d d        d d d        I y c c}w # 1 sw Y   xY wc c}w # 1 sw Y   *xY w# 1 sw Y   vxY w)Nr   r   r   r   rf   r   ?B r   rf   r   r   good)	test_typedelta   r   r   )r   r   bad)r   extendsubTestr   r   r   )r*   time_deltasr*  bad_time_deltass       r+   test_offset_boundariesz#TestTimeZone.test_offset_boundaries  s1    B+BB7BBVL

 	<uUF<=  	 Ee<     	  BBQ/
 	OD5DE$ 	$EU; $&&z2 $UO$$ $	$ =     E$ $$ $s;   
C>"D 
D	D D+D D	DD  D)	c                     | j                  t        j                  t                      | j                  t        t	        d            t                      y )Nr   r   )r   r   r1   r   r   r2   s    r+   test_comparison_with_tzinfoz(TestTimeZone.test_comparison_with_tzinfo  s6     	HLL&(3HYQ%78&(Cr-   N)rG   r_   r`   r   r   r   r   r   r   r  r  r  r  r  r  r  r   r#  r1  r3  r!   r-   r+   r   r      s[    '
7
.>J$0A;>.
C(*	9'##$2Dr-   r   c                       e Zd Zd Zd Zy)HarmlessMixedComparisonc                    | j                  ddd      }| j                  |dk(         | j                  |dk7         | j                  d|k(         | j                  d|k7         | j                  |ddg |g       | j                  g |ddg g       | j                  |t        k(         | j                  |t        k7         | j                  |t
        k         | j                  |t
        kD         | j                  |t
        k         | j                  |t
        k\         | j                  |t        k         | j                  |t        kD         | j                  |t        k         | j                  |t        k\         y )Nr   r!      )theclassr   r   r7   r   r   r   r*   mes     r+   test_harmless_mixed_comparisonz6HarmlessMixedComparison.test_harmless_mixed_comparison  s2   ]]1a#r"b!r"b!b1b"b/*b2q"b/* 	i(y) 	W%g&g&w'h'X&x(h'r-   c                    | j                  ddd      | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd	       y )
Nr   c                       dk  S Nr!   r!   r:  s   r+   <lambda>zGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>      R"W r-   c                       dk  S r>  r!   r?  s   r+   r@  zGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>      R2X r-   c                       dkD  S r>  r!   r?  s   r+   r@  zGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>  rA  r-   c                       dk\  S r>  r!   r?  s   r+   r@  zGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>  rC  r-   c                      d k  S r>  r!   r?  s   r+   r@  zGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>  rA  r-   c                      d k  S r>  r!   r?  s   r+   r@  zGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>  rC  r-   c                      d kD  S r>  r!   r?  s   r+   r@  zGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>  rA  r-   c                      d k\  S r>  r!   r?  s   r+   r@  zGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>  rC  r-   )r8  r   r   r9  s    @r+   test_harmful_mixed_comparisonz5HarmlessMixedComparison.test_harmful_mixed_comparison  s    ]]1a#)_5)%56)_5)%56)_5)%56)_5)%56r-   N)rG   r_   r`   r;  rJ  r!   r-   r+   r5  r5    s    (:7r-   r5  c                       e Zd ZeZd Zd Zd Zej                  d        Z
d Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zej                  d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!y)TestTimeDeltac                    | 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             y )Nr   )weeksdaysr   rf   r   millisecondsr   r   rO  r   r   rN  rT   r+  r   <   re     rP  g$I$I?gUUUUUU?g?gMbP?)r)   r   )r*   r   tds      r+   r   zTestTimeDelta.test_constructor  sV    	24!!1a!"4 	5
2a5"!*
2a8R]#
2aA;*+
2A;
#
21:r|$
2A;2'
2a="R.)
2a="$/0
21rt45 	2E?BAJ'
26?BQK(
2FR]+
2fr!}-
2eba01
25!21#56r-   c                 	   | j                   }t        } |d      } |dd      } |ddd      } |||z   |z    |ddd              |||z
   |dd              ||j                  |       |dd              ||  |d              || |d              ||  |dd              ||  |dd	d
              |t        |      |        |t        |       |        | |dd      |        | |ddd      |        ||dz   |d              ||dz  d|z          ||dz  d|z          ||dz   |dd              |d|z   |dd              ||dz   |dd              ||dz   |ddd              |d|z   |ddd              ||dz   |ddd              ||dz  |         ||dz  | |z
          ||dz  | | z           ||dz  |dz  dz          ||dz  d|z  dz          ||dz   |dd              |d|z   |dd              ||dz   |d              ||dz   |dd              ||dz   |ddd              ||dz   |dd              ||dz   |ddd              ||dz   |d              ||dz   |dd              ||dz   |d              ||dz   |dd              ||dz   |ddd              ||dz   |dd              ||dz   |ddd              |d      } |d|z  dz  d|z          |d|z  dz  d|z          |dd|z  z  d|z          |dd|z  z  d|z          |d|z  dz  d|z          |d |z  dz  d|z          | |d!      d"z   |d#              | |d!      d$z   |d%              |d|z  dz  d|z          |d|z  dz  d|z          |d|z  d&z  d|z          |d |z  d&z  d|z          |d|z  dz  d|z          |d|z  dz  d|z          |d|z  d'z  d|z          |d|z  d'z  d|z         t	        d(d      D ]   } |||z  dz  |z  t        |dz               " t	        d(d      D ]   } |||z  dz  |z  t        |dz               "  | |d!      d)z   |d%              | |d*d	d+       |d*d	d,      z
   |ddd              | |d*dd       |d*dd      z
   |ddd             y )-NrT   r   rS  rT  rY   iDQ rV   r
  Q X> Q i r   F   iX  '  rS     r+  r   i@  i6 i@       ?   x   r   rQ   rU   rR   rP   r	  r   翶~Ϛ?@ g6+1?iS	 g       @g       rO   g`""K?-?ɚ;r&  >B )r)   r   __rsub__absrangeround)r*   r   rV  abcusis           r+   test_computationszTestTimeDelta.test_computations  s}   qEq"Iq!TN
1Q3q5"QD/"
1Q31l#$
1::a="Q-.
A2r"v
A2r!u
A2r"l#$
A2r"k6*+
3q61
3r7A
2a>1
2aJ#
1R4B
1R4A
1R4A
1R4As
2a4As
1R4As
1R4Aq%!
2a4Aq%!
1R4Aq%!
1R4!
1R4!A
1R4!QB
1e9qtRi 
1e9r!tRi 
1T62a8
462a8
1a4A
1b5"Q(
1d7Bq!QK 
1b5"Q/"
1g:r!Q	*+
1S5"R&
1S5"Q*
1Q31
1R4Aq
1T62aA;
1R4Ax!
1W9bAy)* Q
AbDC<2
AbDC<2
3!B$<2
3!B$<2
BrES="R% 
BrES="R%  	2a=8#RV%<=
2a=9$bf&=> 	AbDA:qt
AbDA:qt
BrES="R% 
BrES="R% 
AbDB;2
AbDB;2
AbDD="R% 
AbDD="R% sB 	)A"Q|U1Q3Z(	)sB 	+A"R"}eAbDk*	+ 	2a=M*BF,CD 	2i'"Yv*FFaA;	
2iAIq!!44aA;	r-   c                    t        d      dD ]j  | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       l d| j                  t        fd       | j                  t        fd	       | j                  t        fd
       | j                  t        fd       | j                  t        fd       y )Nr}   r         ?c                       z   S r/   r!   ri  rm  s   r+   r@  z<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>i      1 r-   c                       z
  S r/   r!   rs  s   r+   r@  z<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>j  rt  r-   c                       z   S r/   r!   rs  s   r+   r@  z<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>k  rt  r-   c                       z
  S r/   r!   rs  s   r+   r@  z<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>l  rt  r-   r   c                       z  S r/   r!   ri  zeros   r+   r@  z<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>q  s    TQY r-   c                       z  S r/   r!   ry  s   r+   r@  z<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>r  s    Q$Y r-   c                       z  S r/   r!   ry  s   r+   r@  z<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>s  s    QX r-   c                       dz  S )N        r!   ri  s   r+   r@  z<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>t  s    QW r-   c                       dz  S )Nr   r!   r  s   r+   r@  z<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>u  s    QV r-   )r   r   r   ZeroDivisionError)r*   ri  rm  rz  s    @@@r+   test_disallowed_computationsz*TestTimeDelta.test_disallowed_computationsd  s    bM  	6Ai5i5i5i5		6 )%67+->?+-=>+_=)^4r-   c                     t        d      }| j                  t        |j                  t               | j                  t        |j
                  t               y )Nr}   )r   r   r   __mul__NAN__truediv__)r*   ri  s     r+   test_disallowed_specialz%TestTimeDelta.test_disallowed_specialw  s7    bM*aii5*ammS9r-   c                     d\  }}}t        |||      }| j                  |j                  |       | j                  |j                  |       | j                  |j                  |       y )N)r   rT      r   r)   rO  r   r   )r*   rO  r   rl  rV  s        r+   test_basic_attributesz#TestTimeDelta.test_basic_attributes}  sX    $grtWb)$'W-"-r-   c                 B   t        d      }| j                  |j                         d       dD ].  }t        |      }| j                  |j                         |       0 dD ];  }t        |      }| j                  |j                         |t        d      z         = y )	Nm  rQ  g    8~A)g˟$@g˟$ra  r   g    .Ar   )r
  rS   ir   r   )r   r)   total_seconds)r*   rV  r  mss       r+   test_total_secondsz TestTimeDelta.test_total_seconds  s    C ))+Z8N 	@M=1BR--/?	@
 ! 	LB+BR--/i6J1JK	Lr-   c                 b    t        dddddd      }t        d	      }| j                  ||       y )
Nd   rV   8rP   r   g   ArO  rN  r   rf   r   r   r   r   )r   r)   r*   t1t2s      r+   test_carrieszTestTimeDelta.test_carries  s9    C)!!$9; A&R r-   c                    t        dddddd      }t               }| j                  t        |      t        |             |t        d	      z  }|t        d
      z  }| j                  ||       | j                  t        |      t        |             |di}d||<   | j                  t        |      d       | j                  ||   d       y )Nr  rV   r  rP   r   i z
r  rT   rR  1   rQ  r   rU   )r   r)   hashlen)r*   r  r  ds       r+   test_hash_equalityz TestTimeDelta.test_hash_equality  s    C)!!$9; [b48,
ia  
iS!!R b48,G"Q#2"r-   c                     d}t        | }t        D ];  \  }}}|j                  ||      }|j                  |      }| j	                  ||       = y )N)r   "   8   )r   r   r   r   r)   r*   r   r   r   r   r   r   r   s           r+   test_picklingzTestTimeDelta.test_pickling  sU    $)7 	,%GYMM$.Eooe,GT7+	,r-   c                    t        ddd      t        ddd      }| j                  |       | j                  |k         | j                  |k\         | j                  |k7         | j                  |k         | j                  |kD         dD ]  }t        | }| j                  |k         | j                  |kD         | j                  |k         | j                  |k\         | j                  |k7         | j                  |k7         | j                  |k(         | j                  |k(         | j                  |kD         | j                  |k         | j                  |k\         | j                  |k          t        D ]'  | j                  k(  d       | j                  k7  d       | j                  k(  d       | j                  k7  d       | j                  t        fd       | j                  t        fd       | j                  t        fd	       | j                  t        fd
       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       * y )NrU   rQ   rW   )rQ   rQ   rQ   )rU   rW   rW   )rU   rQ   rR   FTc                       k  S r/   r!   badargr  s   r+   r@  z,TestTimeDelta.test_compare.<locals>.<lambda>      v r-   c                       k  S r/   r!   r  s   r+   r@  z,TestTimeDelta.test_compare.<locals>.<lambda>      f r-   c                       kD  S r/   r!   r  s   r+   r@  z,TestTimeDelta.test_compare.<locals>.<lambda>  r  r-   c                       k\  S r/   r!   r  s   r+   r@  z,TestTimeDelta.test_compare.<locals>.<lambda>  r  r-   c                       k  S r/   r!   r  s   r+   r@  z,TestTimeDelta.test_compare.<locals>.<lambda>      2 r-   c                       k  S r/   r!   r  s   r+   r@  z,TestTimeDelta.test_compare.<locals>.<lambda>      " r-   c                       kD  S r/   r!   r  s   r+   r@  z,TestTimeDelta.test_compare.<locals>.<lambda>  r  r-   c                       k\  S r/   r!   r  s   r+   r@  z,TestTimeDelta.test_compare.<locals>.<lambda>  r  r-   )r   r)   r   r   
OTHERSTUFFr   r   r*   r  r   r  r  s      @@r+   test_comparezTestTimeDelta.test_compare  sS   q!Qq!QR b!b!r"b!b!3 	'DD!BOOBG$OOBG$OOB"H%OOB"H%OOB"H%OOB"H%R2X&R2X&R"W%R"W%R2X&R2X&	' ! 	?FR6\51R6\40Vr\51Vr\40i)=>i)<=i)<=i)=>i)=>i)<=i)<=i)=>	?r-   c                 *   t         }| j                  } |t         |d            d        |t         |d            d        |t         |d            d        |t         |d            d        |t         |d	d
d            d        |t         |ddd            d        |t         |ddd	d            d        |t         |d            d        |t         |d            d        |t         |ddddd            d       y )Nr   z1 day, 0:00:00r
  z-1 day, 0:00:00rU   z2 days, 0:00:00rS   z-2 days, 0:00:00r   :   r   r%  z12:58:59rQ   rW   z2:03:04ir   r  )rN  r   rf   r   z-210 days, 23:12:34rU  z0:00:00.001000r   z0:00:00.000003rc  r&  rO  r   rf   r   r   z999999999 days, 23:59:59.999999)r   r)   r   )r*   rV  r   s      r+   r   zTestTimeDelta.test_str  s    
3r!u:'(
3r"v;)*
3r!u:()
3r"v;*+
3rB34jA
3r1a019=
3r2r2>? 	" 	3rq!"$45
3rq!"$45
3ryB &( ),	.r-   c           	         d| j                   j                  z   }| j                  t        | j                  d            d|z         | j                  t        | j                  dd            d|z         | j                  t        | j                  ddd            d	|z         | j                  t        | j                  d
            d|z         | j                  t        | j                               d|z         | j                  t        | j                  d            d|z         | j                  t        | j                  dd            d|z         | j                  t        | j                  dd            d|z         y )N	datetime.r   z
%s(days=1)r   rU   z%s(days=10, seconds=2)rO    z,%s(days=-10, seconds=2, microseconds=400000)rS  r   z%s(seconds=60)z%s(0)r  r   z%s(microseconds=100))rO  r   z%s(days=1, microseconds=100))r   r   z%s(seconds=1, microseconds=100)r8  rG   r)   r   r*   rB   s     r+   r   zTestTimeDelta.test_repr  sW   T]]333dmmA./%,	.dmmB231D8	:dmmCF;<G$N	PdmmBm78)D0	2dmmo. 4	)dmmm=>/$6	8dmmmEF7$>	@dmmACmHI:TA	Cr-   c                    t        ddddd      t        d      t        dd	      t        dd
d      fD ]  }t        |      }| j                  |j                  d             |dd  }t	        |      }| j                  ||       t        |j                  |j                  |j                        }| j                  ||        y )Nrc  r   r   r&  r  6erQ  r   rO  r   rU   rQ   rO  r   r   r  	   )	r   r   r   r?   r   r)   rO  r   r   )r*   rV  std2s       r+   test_roundtripzTestTimeDelta.test_roundtrip  s    )2r%'f>*-*a8!QQ?	A 	&B RAOOALL56!"Aq'CR% BGGRZZACR%	&r-   c                 :   | j                  t        j                  t               | j                  t        j                  t               | j                  t        j                  t               | j                  t        j                  t        j                  kD         | j                  t        j                  t        d             | j                  t        j                  t        ddd             | j                  t        j                  t        ddd             y )Nr  rc  rX  g    ~.Ar   r   )r   r   r   r   
resolutionr   r)   r2   s    r+   test_resolution_infoz"TestTimeDelta.test_resolution_info  s    immY7immY7i22I>		56	*(=>	)Y(NO--yAq/ABr-   c                    t         j                  }t         j                  |z   }||z  }| j                  t        |j
                  |       | j                  t        |j                  |        t         j                  |z
  }||z  }| j                  t        |j                  |       | j                  t        |j
                  |        | j                  t        d        t        d      }| j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       y )Nc                  $    t         j                   S r/   )r   r   r!   r-   r+   r@  z-TestTimeDelta.test_overflow.<locals>.<lambda>.  s    )-- r-   r    ʚ;g    eAg#B;g|=gr{>)
r   r  r   r   OverflowError__sub____add__r   r  r  )r*   tinyrV  days       r+   test_overflowzTestTimeDelta.test_overflow!  s   ##]]T!
d
-T:-dU;]]T!
d
-T:-dU;-)?@l-e<-c:-%@-%@-%@r-   c                     t        d      }| j                  t        |j                  t               | j                  t        |j                  t                y Nr   )r   r   r  r  INF)r*   r  s     r+   _test_overflow_specialz$TestTimeDelta._test_overflow_special7  s9    l-c:-sd;r-   c                 <   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z  } | |d|z         |d              | |d|z         |d              | |d|z  d|z         |d	              | |d|z         |d              | |d|z         |d              | |d|z  d|z         |d              | |d       d  |d!      z          | |d       |j                  z  d |j                  z  |j                  z         y )"Ng-C6:?rU  r   g-C6:gMb@?r   gMb@ga2U0*C?r   ga2U0*Cr
  g~jtX?rU   g~jtXrS   gƠ>r   gƠ      ?        i|   tAr+  g?rQ  g?r   rO  r   gٿgɿr^  rq  )r   r)   r  )r*   rV  r   us_per_hour
us_per_days        r+   test_microsecond_roundingz'TestTimeDelta.test_microsecond_rounding=  s    	28$be,
29%r!u-
28$ba&89
29%rr':;
28$ba&89
29%rr':;
28$ba&89
29%rr':;
2i "!"45
2j!22#67
2frt45
2g 67  2%

22j=!2a5)
2B{N#RU+
22j=;79KL
23z>"BqE*
2CO$be,
23z>[922;NO 	23RS%9!9:
23.BMM0A2==0PQr-   c                     t        d      }| j                  |j                  |j                  |j                  fd       y )Nr
  r   )r
  rX  r&  r  )r*   rV  s     r+   test_massive_normalizationz(TestTimeDelta.test_massive_normalization^  s2    B'"''2::r?0	2r-   c                    | j                  t        d             | j                  t        dd             | j                  t        ddd             | j                  t        d             | j                  t        d             y )Nr   r   r   )r   r   r   r2   s    r+   	test_boolzTestTimeDelta.test_boolc  s\    	!%	!Q(	!Q*+	q121&r-   c                 F    G fddt                d      }| j                  t        |             | j                  |j	                         d        dd      }| j                  t        |             | j                  |j	                         d	       ||z   }| j                  t        |      t                j                  |      }| j                  t        |             | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         | j                  t        |      t        |             | j                  |j	                         d       y )
Nc                   (    e Zd Ze fd       Zd Zy)0TestTimeDelta.test_subclass_timedelta.<locals>.Tc                 T     | j                   | j                  | j                        S r/   r  )rV  Ts    r+   from_tdz8TestTimeDelta.test_subclass_timedelta.<locals>.T.from_tdm  s    "**boo>>r-   c                 v    | j                   dz  | j                  dz  z   | j                  dz  z   }t        |      S )Nr+  g      @r  )rO  r   r   rh  )r*   sums     r+   as_hoursz9TestTimeDelta.test_subclass_timedelta.<locals>.T.as_hoursq  s?    yy2~||f,-((612 Sz!r-   N)rG   r_   r`   staticmethodr  r  )r  s   r+   r  r  l  s    ? ?"r-   r  r   rQ  r+  r
  ir  i)
r   r0   r   r)   r  r  rO  r   r   r   )r*   r  r  t3t4r  s        @r+   test_subclass_timedeltaz%TestTimeDelta.test_subclass_timedeltaj  s&   		"	 		" AYd2h"+B&d2h","Wd2h	*YYr]d2h""''*RZZ0"//:R#b'*+r-   c           	      \    G d dt               } |ddd      }t        d      }dd  |ddd	      fd
d  |ddd	      fdd  |ddd      fg}|D ]M  \  }}}| j                  |      5   |||      }| j                  ||       | j	                  ||       d d d        O y # 1 sw Y   ZxY w)Nc                       e Zd Zy)6TestTimeDelta.test_subclass_date.<locals>.DateSubclassNrG   r_   r`   r!   r-   r+   DateSubclassr        r-   r    r   rR   rQ  addc                     | |z   S r/   r!   r  r   s     r+   r@  z2TestTimeDelta.test_subclass_date.<locals>.<lambda>  
    Q r-   rY   raddc                     || z   S r/   r!   r  s     r+   r@  z2TestTimeDelta.test_subclass_date.<locals>.<lambda>  
    !a% r-   subc                     | |z
  S r/   r!   r  s     r+   r@  z2TestTimeDelta.test_subclass_date.<locals>.<lambda>  r  r-   rW   )r   r   r.  r)   r   )	r*   r  d1rV  testsrB   funcexpectedacts	            r+   test_subclass_datez TestTimeDelta.test_subclass_date  s    	4 	 $1%A &T1a(@A'dAq)AB&T1a(@A
 %* 	9 D$d# 92rl  h/%%c<89 9	99 9s   ).B""B+	c           
      h    G d dt               } |dd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 ]M  \  }}}| j                  |      5   |||      }| j                  ||       | j	                  ||       d d d        O y # 1 sw Y   ZxY w)Nc                       e Zd Zy)>TestTimeDelta.test_subclass_datetime.<locals>.DateTimeSubclassNr  r!   r-   r+   DateTimeSubclassr	    r  r-   r
  r  r   rR   r      )rO  rf   r  c                     | |z   S r/   r!   r  s     r+   r@  z6TestTimeDelta.test_subclass_datetime.<locals>.<lambda>  r  r-   rY      r  c                     || z   S r/   r!   r  s     r+   r@  z6TestTimeDelta.test_subclass_datetime.<locals>.<lambda>  r  r-   r  c                     | |z
  S r/   r!   r  s     r+   r@  z6TestTimeDelta.test_subclass_datetime.<locals>.<lambda>  r  r-   rW   )r   r   r.  r)   r   )	r*   r
  r  rV  r  rB   r  r  r  s	            r+   test_subclass_datetimez$TestTimeDelta.test_subclass_datetime  s    	x 	 dAq"b1Ar* &(8q!R(HI')9$1b)IJ&(8q!R(HI
 %* 	= D$d# =2rl  h/%%c+;<= =	== =s   /.B((B1	c                    t        ddd      }t        d      }| j                  ||z  d       | j                  ||z  d       t        dd	
      }t        d      }| j                  ||z  d       | j                  ||z  d       t        d      }| j                  t        t        ||       | j                  t        t
        ||       y )Nr   r+     r%  r   g     ó@i  rU   r  rf   r   re   g      @r   )r   r)   r   r  r
   r   )r*   r   secondminutezerotds        r+   test_divisionzTestTimeDelta.test_division  s    Ar261%VV,fd+a,1%VS)fa(1+Wa@+Xq&Ar-   c                 Z   t        dd      }t        d      }||z  }| j                  |t        d             t        dd      }||z  }| j                  |t        d             t        d      }| j                  t        t        ||       | j                  t
        t        |d	       y 
NrU   r  r  r   re   r   rS   r   r   )r   r)   r   r  r   r   )r*   r   r  rr  s        r+   test_remainderzTestTimeDelta.test_remainder  s    a,1%JIb12b"-KIb121+S!V<)S!R0r-   c                    t        dd      }t        d      }t        ||      \  }}| j                  |d       | j                  |t        d             t        dd      }t        ||      \  }}| j                  |d       | j                  |t        d             t        d      }| j                  t        t        ||       | j                  t
        t        |d	       y r  )r   divmodr)   r   r  r   )r*   r   r  qr  r  s         r+   test_divmodzTestTimeDelta.test_divmod  s    a,1%a 1AIb12b"-a 1BIb121+VQ?)VQ3r-   c                    d }| j                  t              5  t                |ddz        z   d d d        | j                  t              5  t                |ddz        z   d d d        dD ]d  }| j                  t              5  t                ||      z   d d d        | j                  t              5  t                ||      z   d d d        f y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   UxY w# 1 sw Y   xY w)Nc                 4      G  fddt               } |       S )Nc                       e Zd Z fdZy)FTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloatc                     S r/   r!   )r*   	bad_ratios    r+   as_integer_ratiozWTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloat.as_integer_ratio  s	    $$r-   N)rG   r_   r`   r&  )r%  s   r+   BadFloatr#    s    %r-   r'  )float)r%  r'  s   ` r+   get_bad_floatz4TestTimeDelta.test_issue31293.<locals>.get_bad_float  s    %5 % :r-   r   rT  )r!   r|   r   rU   rQ   )r   r   r   r   )r*   r)  r%  s      r+   test_issue31293zTestTimeDelta.test_issue31293  s    	 y) 	3K-T	22	3y) 	3K-T	22	3 1 	7I"":. 7mI667"":. 7mI667 7	7	3 	3	3 	37 77 7s/   CC"C.7C:C"C+.C7	:D	c                     G fddt               } G fdd       G fddt               dD ]  | j                        5  	 t         |d	      
       	 t         |d	             	 t         |d	             	 t        d	       |d	      z   	  |d	      t        d	      z   	 t        d	       |d	      z   d d d         y # t        $ r Y {w xY w# t        $ r Y ww xY w# t        t        f$ r Y yw xY w# t        t        f$ r Y yw xY w# t        $ r Y sw xY w# t        $ r Y mw xY w# 1 sw Y   	xY w)Nc                   6    e Zd Z fdZ fdZ fdZ fdZy)-TestTimeDelta.test_issue31752.<locals>.BadIntc                             S r/   r!   r*   otherProds     r+   r  z5TestTimeDelta.test_issue31752.<locals>.BadInt.__mul__  
    vr-   c                             S r/   r!   r0  s     r+   __rmul__z6TestTimeDelta.test_issue31752.<locals>.BadInt.__rmul__  r3  r-   c                             S r/   r!   r0  s     r+   __floordiv__z:TestTimeDelta.test_issue31752.<locals>.BadInt.__floordiv__  r3  r-   c                             S r/   r!   r0  s     r+   __rfloordiv__z;TestTimeDelta.test_issue31752.<locals>.BadInt.__rfloordiv__   r3  r-   N)rG   r_   r`   r  r5  r7  r9  )r2  s   r+   BadIntr.    s    r-   r:  c                   "    e Zd Z fdZ fdZy)+TestTimeDelta.test_issue31752.<locals>.Prodc                             S r/   r!   r*   r1  Sums     r+   r  z3TestTimeDelta.test_issue31752.<locals>.Prod.__add__  
    ur-   c                             S r/   r!   r>  s     r+   __radd__z4TestTimeDelta.test_issue31752.<locals>.Prod.__radd__  r@  r-   N)rG   r_   r`   r  rB  )r?  s   r+   r2  r<    s    r-   r2  c                       e Zd Z fdZy)*TestTimeDelta.test_issue31752.<locals>.Sumc                     S r/   r!   )r*   r1  divmodresults     r+   
__divmod__z5TestTimeDelta.test_issue31752.<locals>.Sum.__divmod__
  s	    ##r-   N)rG   r_   r`   rG  rF  s   r+   r?  rD  	  s    $r-   r?  )Nr!   )r   r   rU   )r   r
  rH  r   r   r   rR  )rh   r.  r   r   r   )r*   r:  r2  r?  rF  s     @@@r+   test_issue31752zTestTimeDelta.test_issue31752  sM   	S 		 		$# 	$ ; 	L<8 6!95F1I.F1I.aL6!9,1I	!,aLF1I-/ 	
 !  !  ":.  ":.  !  ! 1 s   	D3CC1C+D D.D$	CD3CD3	C(%D3'C((D3+C=:D3<C==D3 DD3DD3	D!D3 D!!D3$	D0-D3/D00D33D=	N)"rG   r_   r`   r   r8  r   rn  r  r   requires_IEEE_754r  r  r  r  r  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r+  rI  r!   r-   r+   rL  rL    s    H72Qf5& : :
.
L!#(,&?P.*C&&$CA, < <
RB2
',>9&=&B&14"7(1r-   rL  c                       e Zd Zd Zy)TestDateOnlyc                 <   t        ddd      }t        ddddd      }t        |j                        }| j                  |t        d             ||z   }| j                  |||z          ||z   }| j                  |||z          ||z
  }| j                  |||z
         | }t        |j                        }| j                  |t        d             ||z   }| j                  |||z          ||z   }| j                  |||z          ||z
  }| j                  |||z
         y )	N  r   rU   rQ   rW   rR   r  rS   )r   r   rO  r)   )r*   ru   r*  rO  dt2s        r+   test_delta_non_days_ignoredz(TestDateOnly.test_delta_non_days_ignored1  s   $1q1a'(*$y|,5jb4i(bjb4i(5jb4i($y}-5jb4i(bjb4i(5jb4i(r-   N)rG   r_   r`   rP  r!   r-   r+   rL  rL  -  s    )r-   rL  c                       e Zd ZdZy)SubclassDater   NrG   r_   r`   sub_varr!   r-   r+   rR  rR  N      Gr-   rR  c                      e Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d  Z$d! Z%d" Z&d# Z'd$ Z(d% Z)d& Z*d' Z+d( Z,d) Z-d* Z.d+ Z/y,)-TestDatec                     | j                  ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )N  rQ   r   )r8  r)   yearmonthr  rt   s     r+   r  zTestDate.test_basic_attributesW  sP    ]]4A&$'1%#r-   c                    | j                  ddd      | j                   j                         fD ]  }t        |      }| j                  |j	                  d             |dd  }t        |      }| j                  ||       | j                  |j                  |j                  |j                        }| j                  ||        y )Nr   rU   rQ   r  r  )
r8  todayr   r   r?   r   r)   rZ  r[  r  r*   ru   r  rO  s       r+   r  zTestDate.test_roundtrip]  s    ==Aq)==&&(* 	&B RAOOALL56!"Aq'CR% --266:CR%	&r-   c           	      .   dD ]  \  }}}}| j                  |||      }| j                  ||j                                | j                   j                  |      }| j                  ||       t	        |d      su| j                  |j
                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d        t        t        t        dz   d      D ]  }| j                  |dd      }|j                         }| j                   j                  |      }| j                  ||       |dkD  sY| j                   j                  |dz
        }| j                  |dz
  dd      }| j                  ||       | j                  |j                         |dz
          g d}d	D ]  \  }}	| j                  |dd      j                         }t        t        dd
      |      D ]  \  }
}|
dk(  r|	r|dz  }t        d|dz         D ]e  }| j                  ||
|      }| j                  |j                         |       | j                  || j                   j                  |             |dz  }g   y )N))r   r   r   r   )r   r   r  r  )rU   r   r   n  )i  r   r   i
 hourr   r   rT   r   r  )r     r  r  r  r  r  r  r  r  r  r  ))rN  T)rY  Fr  rU   )r8  r)   	toordinalfromordinalr   ra  r  r  microsecondrg  r   r   zip)r*   ymr  nfromordrZ  d2dimisleapr[  maxdayr  s                r+   test_ordinal_conversionsz!TestDate.test_ordinal_conversionsk  sV   3 	9JAq!Q
 aA&AQ.mm//2GQ(w'   q1  3  3  !4!4a8	9& '719a0 	6DdAq)AA**1-BQ#axMM--ac2]]462r2  B'  15	6 ?7 		LD&dAq)335A!$U1b\3!7 vA:&aKF F1H- CdE37A$$Q[[]A6$$Q(A(A!(DEFA			r-   c                    | j                   j                  | j                  j                  j                  j                        j                         j                        }| j                  |       | j                  t        fd       t        d      z   }| j                  |j                         dz          | j                  || j                   j                  dz                | j                   j                  | j                  j                  j                  j                        j                         j                        }| j                  |       | j                  t        fd       t        d      z
  }| j                  |j                         dz
         | j                  || j                   j                  dz
               y )Nc                  ,     j                  dz
        S r  rd  ri  aords   r+   r@  z0TestDate.test_extreme_ordinals.<locals>.<lambda>      ammD1H.E r-   r   rQ  c                  ,     j                  dz         S r  rr  rs  s   r+   r@  z0TestDate.test_extreme_ordinals.<locals>.<lambda>  ru  r-   )r8  r   rZ  r[  r  rc  rd  r)   r   r   r   r   )r*   rj  ri  rt  s     @@r+   test_extreme_ordinalszTestDate.test_extreme_ordinals  si   MMMM!&&!''1551{{}MM$A*&EF	q!!q1DMM55dQh?@MMMM!&&!''1551{{}MM$A*&EF	q!!q1DMM55dQh?@r-   c                    | j                  t        dd       | j                  t        dd       | j                  t        | j                   t        dz
  dd       | j                  t        | j                   t        dz   dd       | j                  ddd       | j                  ddd       | j                  t        | j                   ddd       | j                  t        | j                   ddd       | j                  ddd       | j                  ddd       | j                  d	dd       | j                  t        | j                   ddd
       | j                  t        | j                   ddd       | j                  t        | j                   ddd       | j                  t        | j                   ddd       | j                  t        | j                   ddd       | j                  t        | j                   ddd       y )Nr   rN  r   r   r  rU        `	  r    4  l  r   )r8  r   r   r   r   r2   s    r+   test_bad_constructor_argumentsz'TestDate.test_bad_constructor_arguments  s~   gq!$gq!$*dmmWQY1E*dmmWQY1EdAq!dB"*dmmT1a@*dmmT2qAdAr"dAr"dAr"*dmmT1bA*dmmT1bA*dmmT1bA*dmmT1bA*dmmT1a@*dmmT1bAr-   c                    | j                  ddd      }| j                  ddd      }| j                  ||       | j                  t        |      t        |             |di}d||<   | j                  t        |      d       | j                  ||   d       | j                  ||   d       | j                  ddd      }| j                  ddd      }| j                  ||       | j                  t        |      t        |             |di}d||<   | j                  t        |      d       | j                  ||   d       | j                  ||   d       y )NrN  r   r  r   rU   r|  r8  r)   r  r  r*   r  edics       r+   r  zTestDate.test_hash_equality  s6   MM$B'MM$B'Aa$q'*!fAS1%Q#Q#MM$Q'MM$Q'Aa$q'*!fAS1%Q#Q#r-   c                 L   | j                  ddd      | j                  ddd      }| j                  ddd      }|z
  }| j                  |j                  dt        t	        ddd            z          | j                  |j
                  d	       | j                  |j                  d	       t        d      t        d
      }| j                  ddd      | j                  z   | j                  ddd             | j                  z   | j                  ddd             | j                  z
  | j                  ddd             | j                   z   | j                  ddd             | j                  |z   | j                  ddd             | j                  |z
  | j                  ddd             | j                  d|z  z   | j                  ddd             | j                  d|z  z
  | j                  ddd             | j                  |z   z
  |       | j                  z   z
         | j                  |z
  z
  |        | j                  z
  z
          | j                  |z   z
  |        | j                  z   z
          | j                  |z
  z
  |       | j                  z
  z
         | j                  ||z
  z
         dD ]j  | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       l | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       y )NrY  r   r    r|  rU   A  rW   r   rT   rQ   r  r   4     rp  c                       z   S r/   r!   rs  s   r+   r@  z,TestDate.test_computations.<locals>.<lambda>  rt  r-   c                       z
  S r/   r!   rs  s   r+   r@  z,TestDate.test_computations.<locals>.<lambda>  rt  r-   c                       z   S r/   r!   rs  s   r+   r@  z,TestDate.test_computations.<locals>.<lambda>  rt  r-   c                       z
  S r/   r!   rs  s   r+   r@  z,TestDate.test_computations.<locals>.<lambda>  rt  r-   c                       z
  S r/   r!   ri  r  s   r+   r@  z,TestDate.test_computations.<locals>.<lambda>	      S1W r-   c                       z  S r/   r!   r  s   r+   r@  z,TestDate.test_computations.<locals>.<lambda>  r  r-   c                       z  S r/   r!   r  s   r+   r@  z,TestDate.test_computations.<locals>.<lambda>      QW r-   c                       z  S r/   r!   r  s   r+   r@  z,TestDate.test_computations.<locals>.<lambda>      SAX r-   c                       z  S r/   r!   r  s   r+   r@  z,TestDate.test_computations.<locals>.<lambda>      Q#X r-   c                        z  S r/   r!   r  s   r+   r@  z,TestDate.test_computations.<locals>.<lambda>      QU r-   c                        z  S r/   r!   r  s   r+   r@  z,TestDate.test_computations.<locals>.<lambda>      Q!V r-   c                        z   S r/   r!   r  s   r+   r@  z,TestDate.test_computations.<locals>.<lambda>  r  r-   
r8  r)   rO  r  rg  r   r   r   r   r   )r*   rj  rk  diffweekri  r  rm  s        @@@r+   rn  zTestDate.test_computations  s~   MM$2&MM$2&MM$q#sFStT11E-F$FGq)**A.l|MM$1%S$--a";<q$--a";<S$--a";<#4==q!#<=T4==q!#<=T4==q"#=>RWdmmD!Q&?@RWdmmD!Q&?@!d(a.!c'Q,!d(a$/!c'Q-a$h$/a#g-a$h.a#g,a#g,  	6Ai5i5i5i5		6 	)_5)_5)_5)%56)%56)]3)^4)]3r-   c                    | j                   j                  }|t        d      t        d      fD ]  }| j                   j                  |z   }||z  }| j	                  t
        |j                  |       | j	                  t
        |j                  |        | j                   j                  |z
  }||z  }| j	                  t
        |j                  |       | j	                  t
        |j                  |         y )Nr   rU   )	r8  r  r   r   r   r  r  r  r   )r*   r  r*  ru   s       r+   r  zTestDate.test_overflow  s    }}''IaL)A,7 		AE""U*B%KBmRZZ?mRZZ%@""U*B%KBmRZZ?mRZZ%@		Ar-   c                 ,   dd l }d\  }}} |j                  |||ddddddf	      }| j                  j                  |      }| j	                  |j
                  |       | j	                  |j                  |       | j	                  |j                  |       y )Nr   )i  r  r  r
  )r   mktimer8  fromtimestampr)   rZ  r[  r  )r*   r   rZ  r[  r  tsr  s          r+   test_fromtimestampzTestDate.test_fromtimestamp"  s     'eST[[$sAq!Q2>?MM''+&%($r-   c                 h    dD ]-  }| j                  t        | j                  j                  |       / y N)gZbtgZbtir   r  r8  r  r*   insanes     r+   test_insane_fromtimestampz"TestDate.test_insane_fromtimestamp-  2    
 $ 	&FmT]]-H-H$&	&r-   c                 2   dd l }t        d      D ]a  }| j                  j                         } |j                          }| j                  j	                  |      }||k(  r n |j
                  d       c k7  r| j                  ||t        d             y y )Nr   rQ   g?r^  r   )r*  )r   rg  r8  r]  r  sleepassertAlmostEqualr   )r*   r   r  r]  r  
todayagains         r+   
test_todayzTestDate.test_today6  s     1X 	EMM'')EB44R8J
" DJJsO!	( J"":u)23)? # A r-   c           	         t        d      D ]  }| j                  | j                  ddd|z         j                         |       | j                  | j                  ddd|z         j	                         |dz          | j                  | j                  ddd|z         j                         |       | j                  | j                  ddd|z         j	                         |dz           y )NrT   rY  rQ   rW   r   r  rU   )rg  r)   r8  weekday
isoweekday)r*   rm  s     r+   test_weekdayzTestDate.test_weekdayS  s    q 	LAT]]4AaC8@@BAFT]]4AaC8CCEqsKT]]4AaC8@@BAFT]]4AaC8CCEqsK	Lr-   c                 <   g d}g }|D ]T  \  }} | j                   | }t        d      D ]2  }|t        |      z   }|dd |d   |z   fz   }|j                  ||f       4 V |D ]  \  }	}
| j	                  |	d      5  | j                  |	j                         |
       d d d        | j	                  |	d      5  |	j                         }| j                  |j                  |j                  |j                  f|
       d d d         y # 1 sw Y   kxY w# 1 sw Y   xY w)N)))r  r      )r  r  r   ))r  r   ry  rz  r   r   ))rz  r   rR   )rz  rU   r   ))  r   r   )r  r  r   ))r  r   rb  )r  5   r   ))r   r   rW   )r   r   r   rT   r   rU   tuple)r  
comparisonfields)
r8  rg  r   appendr.  r)   isocalendarrZ  r  r  )r*   week_mondays
test_casescal_dateiso_date	base_daterm  new_datenew_isor  exp_isor   s               r+   test_isocalendarzTestDate.test_isocalendar\  s4   
 
". 	7Hh%x0I1X 7$y|3"1Q-8A;?*<<!!8W"567	7 % 	GJAwg6 ;  ':; h7 GMMO  !&&!&&!))!<gFG G	G; ;G Gs   ;!D7ADD	D	c                     | j                  ddd      }t        j                  |j                               }t        j                  |      }| j                  t        |      t               | j                  |d       y)zTest that the result of datetime.isocalendar() can be pickled.

        The result of a round trip should be a plain tuple.
          r   )r  r   rU   N)r8  pickler   r  r   r)   r   r  )r*   r  press       r+   test_isocalendar_picklingz"TestDate.test_isocalendar_picklingz  s[    
 MM$1%LL)ll1ocE*l+r-   c                    d}t        t        t        |j                                     }g }t	        d      D ]  }| j                  d|z   dd      }| j                  d|z   dd      }| j                  |j                         dd  |j                         dd         |j                         d   dk(  sz|j                  |        | j                  ||       y )	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
          rN  r   r  i@  r   r  )	sortedmaprh   splitrg  r8  r)   r  r  )r*   ISO_LONG_YEARS_TABLEiso_long_yearsLrm  r  r  s          r+   test_iso_long_yearszTestDate.test_iso_long_years  s     2  C)=)C)C)E FGs 	Ad1fb"-AtAvr2.BQ]]_QR0"..2B122FG}}q!R'	 	N+r-   c                 j    | j                  ddd      }| j                  |j                         d       y )NrU   rQ   z
0002-03-02)r8  r)   	isoformatr*   r   s     r+   test_isoformatzTestDate.test_isoformat  s*    MM!Q"5r-   c                 j    | j                  ddd      }| j                  |j                         d       y )NrY  rQ   rU   zSat Mar  2 00:00:00 2002)r8  r)   ctimer  s     r+   
test_ctimezTestDate.test_ctime  s+    MM$1%$>?r-   c                    | j                  ddd      }| j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  t        |j                         | j                  t        |j                  dd	       | j                  t        |j                  d
       | j                  |j                  d      d       | j                  |j                  d      d       dD ]  }	 |j                  |        	 |j                  d       |j                  d       |j                  d       y # t
        $ r Y Xw xY w# t        $ r Y >w xY w)N  rQ   rU   m:%m d:%d y:%yzm:03 d:02 y:05r     xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxonetwor}   %m03'%z' '%:z' '%Z''' '' '')z%e%z%#u   %y%m%fformat)r8  r)   strftimer   r   r   UnicodeEncodeError)r*   r   fs      r+   test_strftimezTestDate.test_strftime  sP   MM$1%$457GHB,H-x8)QZZ0)QZZ>)QZZ4 	D)40 	$56
C # 	A

1		JJ|$
 	


4 	


$
   " 		s$   "E+6E: +	E76E7:	FFc                    | j                  ddd      }	 t        j                  d       | j                  |j                  d      t        j                  d|j                                      | j                  |j                  d      t        j                  d|j                                      y # t        $ r | j	                  d       Y w xY w)Nr  rQ   rU   r  z'time module does not support trailing %zm:%m d:%d y:%y %zm:03 d:02 y:05 %)r8  _timer  r   rH   r)   	timetupler  s     r+   test_strftime_trailing_percentz'TestDate.test_strftime_trailing_percent  s    
 MM$1%	ENN3 	C%..akkm*LMJJ)*NN-q{{}=	
  	EMMCD	Es   B1 1CCc                    | j                  ddd      }| j                  |j                  d      t        |             | j	                  t
        d      5  |j                  d       d d d         G d d| j                         } |ddd      }| j                  |j                  d      d        G d	 d
| j                         } |ddd      }| j                  |j                  d      t        |             dD ]  }| j                  |j                  |      |j                  |             | j                  |j                  |      |j                  |             | j                  |j                  |      d
        y # 1 sw Y   xY w)N  r  r   r   must be str, not int{   c                       e Zd Zd Zy)TestDate.test_format.<locals>.Ac                      yNAr!   r2   s    r+   __str__z'TestDate.test_format.<locals>.A.__str__      r-   NrG   r_   r`   r  r!   r-   r+   r  r        r-   r  c                       e Zd Zd Zy)TestDate.test_format.<locals>.Bc                      yNBr!   r*   format_specs     r+   r  z(TestDate.test_format.<locals>.B.strftime  r  r-   NrG   r_   r`   r  r!   r-   r+   r  r    r  r-   r  r  zm:%m d:%d y:%y H:%H M:%M S:%Sz	%z %:z %Zr8  r)   
__format__r   assertRaisesRegexr   r  r*   ru   r  ri  r  rj  fmts          r+   test_formatzTestDate.test_format  sG   ]]4B'r*CG4##I/EF 	MM#		 	 dArNb)3/	 	 dArNb)3r73 	5C R]]3/S1ABQ\\#.C0@AQ\\#.4	5#	 	s   F  F
c                    t        | j                  t              rt        }nt        }| j	                  | j                  j
                  |       | j	                  | j                  j                  |       | j	                  | j                  j                  t               | j                  | j                  j                  | j                  j
                  kD         y r/   )
r   r8  r   r   r   r   r   r  r   r   )r*   expected_classs     r+   r  zTestDate.test_resolution_info
  s    dmmX.%N!Ndmm//@dmm//@dmm66	B))DMM,=,==>r-   c                    | j                   j                  | j                   j                  z
  }|j                  dz  dz  |j                  z   dz  |j
                  z   }t        dd|      }| j                  ||       | j                  | j                   j                  |z   | j                   j                         | j                  | j                   j                  |z
  | j                   j                         y )Nr+    @B r   )r8  r   r   rO  r   r   r   r)   )r*   bigri  	justasbigs       r+   test_extreme_timedeltazTestDate.test_extreme_timedelta  s    mm$--"3"33XXb[+W4s7G7GGaA&	i(**S0$--2C2CD**S0$--2C2CDr-   c                    t        d      D ]  }| j                  ddd|z         }|j                         }| j                  |ddd|z   ddd|d|z   df	       | j                  ddd|z         }|j                         }| j                  |ddd|z   dddd|z   dz  d|z   df	       | j                  ddd|z         }|j                         }| j                  |ddd|z   dddd|z   dz  d	|z   df	       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d|z          | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d|z   dz         | j                  |j                  d	|z          | j                  |j                  d        y )
NrT   r  r   rU   r   r
  r   rQ   =   )rg  r8  r  r)   tm_yeartm_montm_mdaytm_hourtm_mintm_sectm_wdaytm_ydaytm_isdst)r*   rm  r  r   s       r+   test_timetuplezTestDate.test_timetuple  s   q 	-AdAqs+AAQq!A#q!Q1Q3 CDdAqs+AAQq!A#q!Q1aAr JK dAqs+AAQq!A#q!Q1aAr JKQYY-QXXq)QYY!,QYY*QXXq)QXXq)QYY1a0QYY1-QZZ,-	-r-   c                    d} | j                   | }t        D ];  \  }}}|j                  ||      }|j                  |      }| j	                  ||       = | j	                  |j                         |j                  d             y )NrY   rT   r   rU   r8  r   r   r   r)   
__reduce____reduce_ex__r  s           r+   r  zTestDate.test_pickling8  s    t}}d#)7 	,%GYMM$.Eooe,GT7+	, 	*D,>,>q,ABr-   c                     g d}d} | j                   | }|D ])  }t        D ]  } ||d      }| j                  ||         + y )N)s'   cdatetime
date
(S'\x07\xdf\x0b\x1b'
tR.s   cdatetime
date
(UtR.s   cdatetime
date
UR.)  r      latin1encodingr8  pickle_loadsr)   r*   r  r   r  datar   r   s          r+   test_compat_unpicklezTestDate.test_compat_unpickleA  sZ    

  4==$' 	4D% 4x8  (34	4r-   c                 ~   | j                  ddd      | j                  ddd      }| j                  |       | j                  |k         | j                  |k\         | j                  |k7         | j                  |k         | j                  |kD         dD ]  } | j                   | }| j                  |k         | j                  |kD         | j                  |k         | j                  |k\         | j                  |k7         | j                  |k7         | j                  |k(         | j                  |k(         | j                  |kD         | j                  |k         | j                  |k\         | j                  |k          t        D ]  | j                  k(  d       | j                  k7  d       | j                  k(  d       | j                  k7  d       | j                  t        fd       | j                  t        fd       | j                  t        fd	       | j                  t        fd
       | j                  t        fd       | j                  t        fd       | j                  t        fd        y )NrU   rQ   rW   r  FTc                       k  S r/   r!   r  s   r+   r@  z'TestDate.test_compare.<locals>.<lambda>m  r  r-   c                       kD  S r/   r!   r  s   r+   r@  z'TestDate.test_compare.<locals>.<lambda>n  r  r-   c                       k\  S r/   r!   r  s   r+   r@  z'TestDate.test_compare.<locals>.<lambda>o  r  r-   c                       k  S r/   r!   r  s   r+   r@  z'TestDate.test_compare.<locals>.<lambda>p  r  r-   c                       k  S r/   r!   r  s   r+   r@  z'TestDate.test_compare.<locals>.<lambda>q  r  r-   c                       kD  S r/   r!   r  s   r+   r@  z'TestDate.test_compare.<locals>.<lambda>r  r  r-   c                       k\  S r/   r!   r  s   r+   r@  z'TestDate.test_compare.<locals>.<lambda>s  r  r-   )r8  r)   r   r   r  r   r   r  s      @@r+   r  zTestDate.test_compareN  sP   ]]1a#]]1a#R b!b!r"b!b!3 	'D%BOOBG$OOBG$OOB"H%OOB"H%OOB"H%OOB"H%R2X&R2X&R"W%R"W%R2X&R2X&	' ! 	?FR6\51R6\40Vr\51Vr\40i)<=i)<=i)=>i)=>i)<=i)<=i)=>	?r-   c                 l   | j                  ddd      | j                  dk(  d       | j                  dk(  d       | j                  dk7  d       | j                  dk7  d       | j                  t        fd       | j                  t        fd        G d	 d
      } |       | j                  k(  d       | j                  k(  d       | j                  k7  d       | j                  k7  d       | j                  t        fd       | j                  t        fd       y )NrN  rW   rR   r   FTc                       dk  S r  r!   ours   r+   r@  z-TestDate.test_mixed_compare.<locals>.<lambda>  r  r-   c                      d k  S r  r!   r?  s   r+   r@  z-TestDate.test_mixed_compare.<locals>.<lambda>  r  r-   c                       e Zd Zy).TestDate.test_mixed_compare.<locals>.SomeClassNr  r!   r-   r+   	SomeClassrC    r  r-   rD  c                       k  S r/   r!   r@  theirs   r+   r@  z-TestDate.test_mixed_compare.<locals>.<lambda>  s    S5[ r-   c                       k  S r/   r!   rF  s   r+   r@  z-TestDate.test_mixed_compare.<locals>.<lambda>  s    US[ r-   )r8  r)   r   r   )r*   rD  r@  rG  s     @@r+   test_mixed_comparezTestDate.test_mixed_compareu  s   mmD!Q' 	5)c5)4(c4( 	)_5)_5	 	 u-#u-t,#t,)%89)%89r-   c                     | j                  | j                  j                         | j                  | j                  j                         y r/   )r   r8  r   r   r2   s    r+   r  zTestDate.test_bool  s.    ))*))*r-   c                    dD ]  }| j                  |dd      }|j                  d      d|z  k7  s.| j                  |j                  d      d|z         t        j                  sc| j                  |j                  d      d|z          y )N)r   r  r[  c   r  i  rT  r   r   z%Yz%04d%dz%4Y)r8  r  r)   r   has_strftime_extensions)r*   rg  r  s      r+   test_strftime_y2kzTestDate.test_strftime_y2k  s    6 	DAaA&A
 zz$6A:-  D!14!8<22$$QZZ%6
C	Dr-   c                 R   | j                   }g d} || }| j                  ||j                                d}dD ]?  \  }}|d d  }|||<    || } |j                  d
i ||i}	| j                  ||	       |dz  }A  |ddd      }| j                  t        |j                  d	       y )Nr*  r   )rZ  rU   r[  rQ   r  rW   r   rN  rU   ry  r|  rZ  r!   r8  r)   r  r   r   
r*   clsr   baserm  rB   newvalnewargsr  gots
             r+   test_replacezTestDate.test_replace  s    mmDzt||~.) 	LD& 1gGGAJG}H$,,0$0CXs+FA	 4B*dll>r-   c                      G d d| j                         } |ddd      }| j                  t        |j                  d            |       y )Nc                       e Zd Zy)4TestDate.test_subclass_replace.<locals>.DateSubclassNr  r!   r-   r+   r  r_    r  r-   r    r   i  rT  r8  r0   r   r  )r*   r  ru   s      r+   test_subclass_replacezTestDate.test_subclass_replace  s@    	4== 	 $1%d2::4:01<@r-   c                      G  fdd j                         }d}  j                   | } ||i ddi} j                  |j                  |        j                  |j                  d        j                  |j                  d        j                  |j                         |j                                 j                  |j                  d      |j                  |j                  z   dz
         y )Nc                   "    e Zd ZdZ fdZd Zy)&TestDate.test_subclass_date.<locals>.Cr}   c                     |j                         }|j                  d      } j                  j                  | g|i |}||_        |S Nr   r  popr8  r   r   rW  r   kwstempr   resultr*   s         r+   r   z.TestDate.test_subclass_date.<locals>.C.__new__  H    xxz)...sBTBTB$r-   c                 :    || j                   z   | j                  z   S r/   )rZ  r[  r*   starts     r+   newmethz.TestDate.test_subclass_date.<locals>.C.newmeth  s    tyy(4::55r-   NrG   r_   r`   	theAnswerr   rr  r2   s   r+   Cre    s    I6r-   ru  r  rW   r_  r   rT   r}   rV   )	r8  r)   rF   rt  r   rc  rr  rZ  r[  r*   ru  r   r   rO  s   `    r+   r  zTestDate.test_subclass_date  s    	6 	6 dmmT"&'1&*+A&#--/:R#((SYY*>*BCr-   c                 F     G  fdd j                         }d}d}d} || } j                  ||        j                  |j                  d       t	        j
                  |t        d            j                         }d|ffd	|ffd
|ffg}|D ]  \  }}	||fD ]x  }
 j                  t        |
      |      5  t        |
|      } ||	 } j                  ||        j                  ||        j                  |j                  d       d d d        z  y # 1 sw Y   xY w)Nc                       e Zd Z fdZy)CTestDate.test_subclass_alternate_constructors.<locals>.DateSubclassc                 V     j                   j                  | g|i |}d|_        |S NrT   r8  r   r   rW  r   kwargsrm  r*   s       r+   r   zKTestDate.test_subclass_alternate_constructors.<locals>.DateSubclass.__new__  /    ...sDTDVD r-   NrG   r_   r`   r   r2   s   r+   r  rz        r-   r  rv  i( z
2003-04-14rT   r   rd  r  fromisoformatbase_obj_typeconstr_name)r8  r   r)   r   r   combiner   	timestampr.  r   getattr)r*   r  r   d_ordd_isoformatbase_dr  r  r  constr_argsbase_objconstrru   s   `            r+   $test_subclass_alternate_constructorsz-TestDate.test_subclass_alternate_constructors  sH   	4== 	 "t$fl3q) fd1g.88: UH%re${n-

 )3 	2$K)62 2\\X.9 " ; 2$X{;F-B ))"l; $$R0 $$RXXq12 22	22 2s   8ADD c                     d}t        | }t        D ]Z  \  }}}|j                  ||      }|j                  |      }| j	                  ||       | j                  t        |t                      \ y )Nr&  )rR  r   r   r   r)   r   rg   r  s           r+   test_pickling_subclass_datez$TestDate.test_pickling_subclass_date  sh    T")7 	?%GYMM$.Eooe,GT7+OOJw=>		?r-   c           	         d}t        | j                  t              s|d d }dD ]/  }| j                  t        | j                  |d d |z   |dd  z          1 t        | j                  t              rG| j                  t        d      5  | j                  t        dgt        |      z        d       d d d        t        dd	      D ])  }| j                  |d d t        |g      z   |dd  z          + y # 1 sw Y   BxY w)
Ns
   1995-03-25rW   )   9          rU   rQ   ^bad tzinfo state arg$r   r   r  )	r   r8  r   r   r   r  bytesr  rg  )r*   rX  
month_byteord_bytes       r+   test_backdoor_resistancez!TestDate.test_backdoor_resistance  s     $--28D5 	KJi)-bqJ)>ab)IK	K dmmX.''	3KL =eQC#d)O4e<= a 	CH MM$r(UH:%66abAB		C= =s   )C00C9c                    g d}|D ]w  } | j                   | }|j                         }| j                  |      5  | j                   j                  |j                               }| j	                  ||       d d d        y y # 1 sw Y   xY w)N)r   r   r   )rT  rU   r_  r~  r   r   )rN  rU   ry  rz  r   r   )rz  rW   rQ   i  rR   r  )dt_strr8  r  r.  r  r)   )r*   
base_datesdt_tupleru   r  dt_rts         r+   test_fromisoformatzTestDate.test_fromisoformat(  s    

 # 	,H)B\\^FV, ,33BLLNC  U+, ,	,, ,s   <BB	c                    d| j                  ddd      fd| j                  ddd      fd| j                  ddd      fd| j                  d	d
d      fd| j                  ddd      fd| j                  ddd      fd| j                  ddd      fd| j                  d	d
d      fd| j                  dd
d      fd| j                  dd
d      fd| j                  ddd      fd| j                  ddd      fd| j                  dd
d      fd| j                  dd
d      fd| j                  dd
d      fd| j                  dd
d      fd| j                  dd
d      fd| j                  dd
d      fd| j                  d dd      fd!| j                  d dd      fd"| j                  d#d
d      fd$| j                  d#d
d      fd%| j                  d&dd      fd'| j                  d(d
d)      fd*| j                  d(d
d)      fd+| j                  d,dd      fg}|D ]M  \  }}| j                  |-      5  | j                   j                  |      }| j                  ||       d d d        O y # 1 sw Y   ZxY w).N00010101r   20000101rN  20250102  rU   99991231r'   r   r  z
0001-01-01z
2000-01-01
2025-01-02z
9999-12-312025W01  r  z2025-W012025W014z
2025-W01-42026W01ry  z2026-W012026W013z
2026-W01-32022W52  r   z2022-W522022W527  z
2022-W52-72015W534r+  z
2015-W53-4z
2015-W53-5  2020W531  rb  z
2020-W53-1z
2020-W53-6  	input_str)r8  r.  r  r)   r*   examplesr  r  actuals        r+    test_fromisoformat_date_examplesz)TestDate.test_fromisoformat_date_examples<  s   q!Q/0tQ23tQ23tR454==Aq124==q!454==q!454==r267dB34tR45tQ234==q!45dB34tR45tR454==r267dB34tR45tQ234==q!45tR454==r2674==q!45tR454==r2674==q!455
: $, 	3Ix	2 344Y?  23 3	33 3s   %.II'	c                      G d d| j                         } |ddd      }|j                  |j                               }| j                  ||       y )Nc                       e Zd Zy):TestDate.test_fromisoformat_subclass.<locals>.DateSubclassNr  r!   r-   r+   r  r  `  r  r-   r  r   r   r_  )r8  r  r  r   )r*   r  ru   r  s       r+   test_fromisoformat_subclassz$TestDate.test_fromisoformat_subclass_  sH    	4== 	 $B'**2<<>:e\2r-   c                     g d}|D ];  }| j                  t              5  | j                  j                  |       d d d        = y # 1 sw Y   HxY w)N)r   r  z	009-03-04	123456789z
200a-12-04z
2009-1a-04z
2009-12-0az
2009-01-32z
2009-02-29z
2019-W53-1z
2020-W54-1z
0000-W25-1z10000-W25-1z
2020-W25-0z
2020-W25-8u   20090228)r   r   r8  r  r*   bad_strsbad_strs      r+   test_fromisoformat_failsz!TestDate.test_fromisoformat_failsi  sT    
&   	5G"":. 5++G45 5	55 5s   AA	c                     dd t        j                  d      g}|D ];  }| j                  t              5  | j                  j                  |       d d d        = y # 1 sw Y   HxY w)Ns
   2009-03-01z
2009-03-01ioStringIOr   r   r8  r  r*   	bad_typesbad_types      r+   "test_fromisoformat_fails_typeerrorz+TestDate.test_fromisoformat_fails_typeerror  s`    "D"++l*CD	! 	6H""9- 6++H56 6	66 6   AA#	c                 2   ddddddddd	d
dddt         ddft        ddfg}|D ]g  }| j                  |      5   | j                  | }|j	                         } | j                  j
                  | }| j                  ||       d d d        i y # 1 sw Y   txY w)N)r  rW   rQ   )r  r   rU   )i  r   r  )r   r   rU   )r  r   r  r  )r~  r   r  )rN  r   r   )rN  r   r  r  )rz  r   r  r  )r'   r   r  r   r   r  )	datecomps)r   r   r.  r8  r  fromisocalendarr)   )r*   datesr  dobjisocald_roundtrips         r+   test_fromisocalendarzTestDate.test_fromisocalendar  s     aOb"
$  	4I	2 4$t}}i0))+;dmm;;VD  {34 4	44 4s   ABB	c                     g d}|D ]T  }| j                  |      5  | j                  t              5   | j                  j                  |  d d d        d d d        V y # 1 sw Y   xY w# 1 sw Y   mxY w)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.  r   r   r8  r  )r*   isocalsr  s      r+   !test_fromisocalendar_value_errorsz*TestDate.test_fromisocalendar_value_errors  sy    
   	;FV, ;&&z2 ;1DMM116:;; ;	;; ;; ;s"   A+AA+A($A++A4	c                    t         t        d g}g }d}t        d      D ]<  }|D ]5  }t        |      } |||         ||<   |j	                  t        |             7 > |D ]T  }| j                  |      5  | j                  t              5   | j                  j                  |  d d d        d d d        V y # 1 sw Y   xY w# 1 sw Y   mxY w)Nc                      y r/   r!   )xs    r+   r@  z;TestDate.test_fromisocalendar_type_errors.<locals>.<lambda>  s    r-   )r  r   r   rQ   r  )r   r(  rg  listr  r  r.  r   r   r8  r  )r*   err_txformersr  rX  rm  txformererr_valr  s           r+    test_fromisocalendar_type_errorsz)TestDate.test_fromisocalendar_type_errors  s    
 q 	/A) /t*%gaj1
uW~./	/  	;FV, ;&&y1 ;1DMM116:;; ;	;; ;; ;s$   4C
B7$C7C <CC	N)0rG   r_   r`   r   r8  r  r  ro  rw  r  r  rn  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r  r4  r  rI  r  rO  r\  rb  r  r  r  r  r  r  r  r  r  r  r  r  r!   r-   r+   rW  rW  Q  s     H$&-^A2B,$204dA	%&A:LG<	,$,L6@( T
 5:	?E-2C4%?N:4+
D?*AD4*2X?C4,(!3F35264<;,;r-   rW  c                       e Zd ZdZy)SubclassDatetimer   NrS  r!   r-   r+   r  r    rU  r-   r  c                   X   e Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ej6                  d      d        Zd Z ej6                  d      d        Zd Zd Z d Z!d Z"d Z# e$jJ                  e&jN                  d k(  d!      d"        Z( e$jJ                  e&jN                  d k(  d!      d#        Z)d$ Z*d% Z+d& Z,d' Z-d( Z.d) Z/d* Z0d+ Z1 ej6                  d,      d-        Z2d. Z3d/ Z4d0 Z5d1 Z6d2 Z7d3 Z8d4 Z9d5 Z:d6 Z;d7 Z<d8 Z=d9 Z>d: Z?y;)<TestDateTimec                    | j                  ddddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )NrY  rQ   r   r   r   	r8  r)   rZ  r[  r  ra  r  r  re  rt   s     r+   r  z"TestDateTime.test_basic_attributes  s    ]]4Ar1-$'1%#"%A&A&+r-   c           	         | j                  ddddddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )NrY  rQ   r   r   r   @  r  rt   s     r+   test_basic_attributes_nonzeroz*TestDateTime.test_basic_attributes_nonzero  s     ]]4Ar2r48$'1%#"%B'B'.r-   c           
         | j                  ddddddd      | j                   j                         fD ]  }t        |      }| j                  |j	                  d             |d	d  }t        |      }| j                  ||       | j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                        }| j                  ||        y )
Nr   rU   rQ   rW   rR   rY   rT   r  r  )r8  r   r   r   r?   r   r)   rZ  r[  r  ra  r  r  re  r^  s       r+   r  zTestDateTime.test_roundtrip  s    ==Aq!Q15==$$&( 	&B RAOOALL56!"Aq'CR% --266 "BII "0C R%	&r-   c           
         | j                  ddddddd      }| j                  |j                         d       | j                  |j                  d      d       | j                  |j                  d	      d
       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d	d      d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |      d
       | j                  dddddddt        j                        }| j                  |j                  d      d       | j                  ddddddd      }| j                  |j                  d      d        | j                  dddddd      }| j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d!       | j                  ddd      }| j                  |j                         d"       | j                  |j                  d      d"       | j                  |j                  d	      d#       | j                  t        |      d#       t        t        d$%      d&      }| j                  ddd|      }| j                  |j                         d'       y )(Nr   rU   rQ   rW   rR   r  z0001-02-03T04:05:01.000123r   z0001-02-03 04:05:01.000123 z0001-02-03 04:05:01.000123r  u   0001-02-0304:05:01.000123r   timespecz0001-02-03T04rf   z0001-02-03T04:05r   z0001-02-03T04:05:01rP  z0001-02-03T04:05:01.000r   auto)sepr  z0001-02-03 04:05fooL@ 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   XXXz0002-03-02T00:00:00+00:00:16)
r8  r)   r  r   r   r   r   r1   rb   r   r  s      r+   r  zTestDateTime.test_isoformat  s9   MM!Q1aC0+GHS)+GHS)+GHV,.MNX.:	<g6Hi8:LMi8:OPn=?XYn=?[\f57STyACUV*akkEB*akkHEQ!=>MM!Q1aF8<<MHn=?^_MM!Q1aF3n=?XYMM!Q1a+f57LMn=?XYn=?[\MM!Q"+@AS)+@AS)+@AQ!672.6MM!Q"M-(FGr-   c                 R   dt        d      fdt        d      fdt        dd	      fd
t        ddd      fdt        dddd      fg}ddt        j                  fdt        t        d            fg}||D cg c]"  \  }}dD ]  \  }}||z   t        ||z        f $ c}}}}z  }| j                  dddddd      }d}|D ]M  \  }	}
|j	                  |
      }||	z   }| j                  |
      5  |j                         |k(  sJ 	 d d d        O y c c}}}}w # 1 sw Y   bxY w)N05:00rR   r   02:00rU   06:27rY   r,  r   12:32:30r   r   r  r%  02:04:09.123456rW   r  rb  r'  r   N+00:00r   )-r
  )+r   r  r   %   z2016-04-01T12:37:09r   tzir   r   r1   r8  r  r.  r  )r*   	tzoffsetstzinfosr  rV  prefixsigndt_baseexp_baseexp_tzr  ru   exps                r+   test_isoformat_timezonez$TestDateTime.test_isoformat_timezone1  sd   ia()ia()ia45RDE	1aV\ ]^
	 x||$x	!-.
 	 )
 
" 5
  h 34
4
 	
 --aBA6(" 	-KFC,BV#C#& -||~,,,- -	-
- -s   ;'D3DD&	c           	      2   | j                  ddddddd      }| j                  |j                  d      t        |             | j	                  t
        d	      5  |j                  d       d d d         G d
 d| j                         } |ddddddd      }| j                  |j                  d      d        G d d| j                         } |ddddddd      }| j                  |j                  d      t        |             dD ]  }| j                  |j                  |      |j                  |             | j                  |j                  |      |j                  |             | j                  |j                  |      d        y # 1 sw Y   $xY w)Nr  r  r   rW   rR   r   r  r   r  c                       e Zd Zd Zy)#TestDateTime.test_format.<locals>.Ac                      yr  r!   r2   s    r+   r  z+TestDateTime.test_format.<locals>.A.__str__X  r  r-   Nr   r!   r-   r+   r  r  W  r  r-   r  c                       e Zd Zd Zy)#TestDateTime.test_format.<locals>.Bc                      yr  r!   r  s     r+   r  z,TestDateTime.test_format.<locals>.B.strftime_  r  r-   Nr	  r!   r-   r+   r  r  ^  r  r-   r  r
  r  r  s          r+   r  zTestDateTime.test_formatO  sa   ]]4B1a5r*CG4##I/EF 	MM#		 	 dAr1aC(b)3/	 	 dAr1aC(b)3r73 	5C R]]3/S1ABQ\\#.C0@AQ\\#.4	5#	 	s   FFc           	      D   dd l }| j                  ddddddd      }| j                  |j                         d       | j                  ddd	dddd      }| j                  |j                          |j                   |j                  |j                                            y )
Nr   rY  rQ   rU      rR   r  zSat Mar  2 18:03:05 2002r  )r   r8  r)   r  r  r  )r*   r   r   s      r+   test_more_ctimezTestDateTime.test_more_ctimel  s    MM$1b!Q4$>? MM$2r1a5JDJJ{t{{1;;=/I$JKr-   c           	      ~   | j                  dddddd      }| j                  dddddd      }| j                  dddddd      }| j                  ||       | j                  ||kD         | j                  t        ddd	d
d
d      }t	        d      }||z   }| j                  ||z
  |       | j                  ||k         y )NrY  rQ   r   r  r   r   r   r  r   r   rd  r   )r8  r)   r   r   r   )r*   r   rO  dt3rl  s        r+   test_tz_independent_comparingz*TestDateTime.test_tz_independent_comparing|  s    mmD!Q1a0mmD!QAq1mmD!Q1a0c"c	" mmGRRR@A&BhsB'c	"r-   c                      G d dt               }| j                  ddddddd |dd            }| j                  t        |j                  d       y )	Nc                       e Zd Zd Zy)DTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfoc                 0     G d dt               } |d      S )Nc                       e Zd Zd Zy)ZTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStrc                      y r/   r!   )r*   r   s     r+   r  zbTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStr.replace  s    #r-   N)rG   r_   r`   r  r!   r-   r+   MyStrr,    s    $r-   r.  rB   )r   )r*   ru   r.  s      r+   ry   zKTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname  s    $C $ V}$r-   N)rG   r_   r`   ry   r!   r-   r+   MyTzInfor)    s    %r-   r/  r  rQ   rU   r   rB   %Z)rb   r8  r   r   r  )r*   r/  r   s      r+   %test_strftime_with_bad_tzname_replacez2TestDateTime.test_strftime_with_bad_tzname_replace  sI    	%{ 	% MM$1aAq(1f2EF)QZZ6r-   c                    | j                  t        dd       | j                  t        dd       | j                  t        | j                   t        dz
  dd       | j                  t        | j                   t        dz   dd       | j                  ddd       | j                  ddd       | j                  t        | j                   ddd       | j                  t        | j                   ddd       | j                  ddd       | j                  ddd       | j                  d	dd       | j                  t        | j                   ddd
       | j                  t        | j                   ddd       | j                  t        | j                   ddd       | j                  t        | j                   ddd       | j                  t        | j                   ddd       | j                  t        | j                   ddd       | j                  dddd       | j                  dddd       | j                  t        | j                   dddd       | j                  t        | j                   dddd       | j                  ddddd       | j                  ddddd       | j                  t        | j                   ddddd       | j                  t        | j                   ddddd       | j                  dddddd       | j                  dddddd       | j                  t        | j                   dddddd       | j                  t        | j                   dddddd       | j                  ddddddd       | j                  ddddddd       | j                  t        | j                   ddddddd	       | j                  t        | j                   ddddddd	       | j                  t        | j                   dddd       | j                  t        | j                   dddd       | j                  t
        | j                   dddddddd d       y )Nr   rN  r   r   r  rU   ry  rz  r{  r  r|  r}  r~  r   r  r   r
  r+  r   rS  r&  r  fold)r8  r   r   r   r   r   r2   s    r+   r  z+TestDateTime.test_bad_constructor_arguments  s   gq!$gq!$*dmmWQY1E*dmmWQY1EdAq!dB"*dmmT1a@*dmmT2qAdAr"dAr"dAr"*dmmT1bA*dmmT1bA*dmmT1bA*dmmT1bA*dmmT1a@*dmmT1bAdAr1%dAr2&*dmmT1b"E*dmmT1b"EdAr2q)dAr2r**dmmT1b"bI*dmmT1b"bIdAr2r1-dAr2r2.*dmmT1b"b"M*dmmT1b"b"MdAr2r2q1dAr2r2v6*dmm2r2r2	7*dmm2r2r!	# 	*dmm2B 	 	0*dmm2A 	 	/ 	)T]]2r2r1dA	?r-   c                    | j                  dddddd      }| j                  dddddd      }| j                  ||       | j                  t        |      t        |             |di}d||<   | j                  t        |      d       | j                  ||   d       | j                  ||   d       | j                  d	ddd
dd      }| j                  d	ddd
dd      }| j                  ||       | j                  t        |      t        |             |di}d||<   | j                  t        |      d       | j                  ||   d       | j                  ||   d       y )NrN  r   r  r   r     r   rU   r|  r   rR   r  r  s       r+   r  zTestDateTime.test_hash_equality  sN   MM$BB3MM$BB3Aa$q'*!fAS1%Q#Q#MM$QQ3MM$QQ3Aa$q'*!fAS1%Q#Q#r-   c                    | j                  ddd      | j                  ddd      }|z
  }| j                  |j                  dt        t	        ddd            z          | j                  |j
                  d       | j                  |j                  d       | j                  ddd	d
d      t        ddd      }t        dd      }t        d      t        d      }| j                  |z   | j                  ddd	dd             | j                  |z   | j                  ddd	dd             | j                  d|z  z   | j                  ddddd             | j                  |z
  | j                  ddd	dd             | j                  | z   | j                  ddd	dd             | j                  |z
  | z          | j                  d|z  z
  | j                  ddddd             | j                  z   | j                  dddd
d             | j                  z
  | j                  dddd
d             | j                  |z   | j                  dddd
d             | j                  |z
  | j                  dd	dd
d             | j                  d|z  z   | j                  dddd
d             | j                  d|z  z
  | j                  dddd
d             | j                  |z   z
  |       | j                  z   z
         | j                  |z   z
  |       | j                  |z   z
  |       | j                  |z
  z
  |        | j                  z
  z
          | j                  |z
  z
  |        | j                  |z
  z
  |        | j                  |z   z
  |        | j                  z   z
          | j                  |z   z
  |        | j                  |z   z
  |        | j                  |z
  z
  |       | j                  z
  z
         | j                  |z
  z
  |       | j                  |z
  z
  |       | j                  |z   |z   |z   z   | j                  ddddddd             | j                  |z   |z   |z   z   |z   z   |z   |z          | j                  |z   |z   |z   z
  | j                  dd	ddddd             | j                  |z   |z   |z   z
  |z
  z
  |z
  |z
         dD ]j  | j                  t        fd       | j                  t        fd       | j                  t        fd        | j                  t        fd!       l | j                  t        fd"       | j                  t        fd#       | j                  t        fd$       | j                  t        fd%       | j                  t        fd&       | j                  t        fd'       | j                  t        fd(       | j                  t        fd)       y )*NrY  r   r  r  r  rW   r   rQ   rU   r6  rY   rT  r  rT   r"  r   r   r7  r   r  r   r  r  r|  r  rR   r   rY  rp  c                       z   S r/   r!   rs  s   r+   r@  z0TestDateTime.test_computations.<locals>.<lambda>	  rt  r-   c                       z
  S r/   r!   rs  s   r+   r@  z0TestDateTime.test_computations.<locals>.<lambda>	  rt  r-   c                       z   S r/   r!   rs  s   r+   r@  z0TestDateTime.test_computations.<locals>.<lambda>	  rt  r-   c                       z
  S r/   r!   rs  s   r+   r@  z0TestDateTime.test_computations.<locals>.<lambda>	  rt  r-   c                       z
  S r/   r!   r  s   r+   r@  z0TestDateTime.test_computations.<locals>.<lambda>	  r  r-   c                       z  S r/   r!   r  s   r+   r@  z0TestDateTime.test_computations.<locals>.<lambda> 	  r  r-   c                       z  S r/   r!   r  s   r+   r@  z0TestDateTime.test_computations.<locals>.<lambda>!	  r  r-   c                       z  S r/   r!   r  s   r+   r@  z0TestDateTime.test_computations.<locals>.<lambda>"	  r  r-   c                       z  S r/   r!   r  s   r+   r@  z0TestDateTime.test_computations.<locals>.<lambda>#	  r  r-   c                        z  S r/   r!   r  s   r+   r@  z0TestDateTime.test_computations.<locals>.<lambda>$	  r  r-   c                        z  S r/   r!   r  s   r+   r@  z0TestDateTime.test_computations.<locals>.<lambda>%	  r  r-   c                        z   S r/   r!   r  s   r+   r@  z0TestDateTime.test_computations.<locals>.<lambda>'	  r  r-   r  )	r*   rj  r  millisecra  r  ri  r  rm  s	         @@@r+   rn  zTestDateTime.test_computations  s    MM$2&MM$2&sFStT11E-F$FGq)**A.MM$1b!,Q4(D!l|T4==q!R#CD4==q!R#CDRWdmmD!Q1&EFT4==q!R#CD$DMM$1b!$DET1u9-RWdmmD!QA&FGS$--aB"BCS$--aB"BCT4==q!R#CDT4==q"b!#DERWdmmD!QA&FGRWdmmD!QA&FG!d(a.!c'Q,!d(a.!h,!+X6!d(a$/!c'Q-!d(a$/!h,!+hY7a$h$/a#g-a$h$/a(l+hY7a$h.a#g,a$h.a(l+X6dSj4/(:;tQB1dC	EdSj4/(:;H+t3x?	AdSj4/(:;tQB2vF	HdSj4/(:;H+t3x?	A  	6Ai5i5i5i5		6 	)_5)_5)_5)%56)%56)]3)^4)]3r-   c                    d} | j                   | }t        D ];  \  }}}|j                  ||      }|j                  |      }| j	                  ||       = | j	                  |j                         |j                  d             y )NrY   rT   r   r7  r   r      rU   r'  r  s           r+   r  zTestDateTime.test_pickling)	  s    )t}}d#)7 	,%GYMM$.Eooe,GT7+	, 	*D,>,>q,ABr-   c           	      r   | j                  ddddddd      }t        t        j                  dz         D ]  }t        j                  ||      }t        j
                  |      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d        y )	Nr  rU   rT   r   0   r  i r   )
r8  rg  r  HIGHEST_PROTOCOLr   r   r)   rZ  r[  r  )r*   ri  r   r  rj  s        r+   test_more_picklingzTestDateTime.test_more_pickling2	  s    MM$1b"b&9622Q67 	'EQ&AQAQVVT*QWWa(QUUA&	'r-   c                     d}t        | }t        D ]Z  \  }}}|j                  ||      }|j                  |      }| j	                  ||       | j                  t        |t                      \ y )NrF  )r  r   r   r   r)   r   rg   r  s           r+   test_pickling_subclass_datetimez,TestDateTime.test_pickling_subclass_datetime;	  sk    )&)7 	C%GYMM$.Eooe,GT7+OOJw0@AB		Cr-   c                     g d}d} | j                   | }|D ])  }t        D ]  } ||d      }| j                  ||         + y )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.)r+  r   r,  r7  r   r   rG  r-  r.  r0  r2  s          r+   r4  z!TestDateTime.test_compat_unpickleD	  sZ    	
 . 4==$' 	4D% 4x8  (34	4r-   c                    g d} | j                   | } | j                   | }| j                  ||       | j                  ||k         | j                  ||k\         | j                  ||k7         | j                  ||k         | j                  ||kD         t	        t        |            D ]  }|d d  }||   dz   ||<    | j                   | }| j                  ||k         | j                  ||kD         | j                  ||k         | j                  ||k\         | j                  ||k7         | j                  ||k7         | j                  ||k(         | j                  ||k(         | j                  ||kD         | j                  ||k         | j                  ||k\         | j                  ||k          y )N)rN  r   ry  r7  r  r   rd  r   )r8  r)   r   r   rg  r  )r*   r   r  r  rm  rZ  s         r+   test_more_comparezTestDateTime.test_more_compareV	  s    2T]]D!T]]D!R b!b!r"b!b!s4y! 	'A1gGa1GAJ(BOOBG$OOBG$OOB"H%OOB"H%OOB"H%OOB"H%R2X&R2X&R"W%R"W%R2X&R2X&	'r-   c                    | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         y r/   )r)   r  rZ  r  r[  r  r  r  ra  r  r  r   r  )r*   r  r[  s      r+   verify_field_equalityz"TestDateTime.verify_field_equalityw	  s    ))3884#))4))3773))3884#**5#**5r-   c                     dd l } |j                          } |j                  |      }| j                  j                  |      }| j	                  ||       y Nr   )r   	localtimer8  r  rR  r*   r   r  r  r[  s        r+   r  zTestDateTime.test_fromtimestamp	  sF    TYY[!4>>"%mm))"-""8S1r-   c                 b    dd l }| j                  j                   |j                                 y )Nr   )r  )r   r8  r  )r*   r   s     r+   test_fromtimestamp_keyword_argz+TestDateTime.test_fromtimestamp_keyword_arg	  s$     	##idiik#:r-   c                     dd l } |j                          } |j                  |      }| j                  t              5  | j                  j                  |      }d d d        | j                  |       y # 1 sw Y   xY wrT  )r   gmtimeassertWarnsDeprecationWarningr8  utcfromtimestamprR  rV  s        r+   test_utcfromtimestampz"TestDateTime.test_utcfromtimestamp	  si    TYY[4;;r?01 	5--004C	5""8S1	5 	5s   A44A=EST+05EDT,M3.2.0,M11.1.0c           	         | j                  ddd      }| j                  |j                         d       | j                  ddddddd      }| j                  |j                         d       | j                  ddd	dd
      }|j                  d      }| j                  | j                   j	                  |j                               |t        d      z
         | j                  | j                   j	                  |j                               |t        d      z          | j                  dd	ddd
      }| j                  | j                   j	                  |j                               |       | j                  ddd      | j                  ddd      fD ]>  }	 |j                         }| j                  | j                   j	                  |      |       @ y # t        $ r Y Mw xY w)Nr   r   g     @rU   rQ   rW    6@r`  r   r  r3  r   i'  r   )r8  r)   r  r  r  r   r  )r*   r   t0r  r  s        r+   test_timestamp_naivez!TestDateTime.test_timestamp_naive	  s   MM$1%0MM$1aAq1;	= ]]4B2.ZZQZ44R\\^Dia00	244R\\^Dia00	2 MM$Aq"-44Q[[]CQG --!A&d2b(AB 	DADKKM   !<!<Q!?C	D ! s   G	G G c                    | j                  dddt        j                        }| j                  |j	                         d       | j                  dddddddt        j                        }| j                  |j	                         d       | j                  dddddddt        t        d	
      d            }| j                  |j	                         d       y )Nr   r   r   r~  rU   rQ   rW   g7  @r	  r   r   ra  )r8  r   r1   r)   r  r   r  s     r+   test_timestamp_awarez!TestDateTime.test_timestamp_aware	  s    MM$1X\\M:,MM$1aAqMF1	3MM$1aAq!))"*=u!E  G9	;r-   zMSK-03c                      fd} j                   j                  |fD ]  } |d      } j                  |j                  d        j                  |j                  d        |d      }	  |d      } j                  |j                  d        j                  |j                  d        |d      } j                  ||        |d      } j                  ||        |d	      } j                  ||        |d
      } j                  |j                  d        j                  |j                  d        |d      } j                  ||        |d      } j                  ||        |d      } j                  |j                  d        j                  |j                  d        |d      } j                  |j                  d        j                  |j                  d        |d      } j                  |j                  d        j                  |j                  d        y # t
        $ r Y w xY w)Nc                      j                  t              5   j                  j                  | i |cd d d        S # 1 sw Y   y xY wr/   )r[  r\  r8  r]  )r   r  r*   s     r+   r]  z@TestDateTime.test_microsecond_rounding.<locals>.utcfromtimestamp	  sD    !!"45 G5t}}55tFvFG G Gs	   =Ar   gư>gưr   r&  g:0yEg1E2gHzr  i# gHz>g1E2>g<"2?gP?r   r  r  )r8  r  r)   r  re  OSError)r*   r]  ftsrz  r  	minus_oner   s   `      r+   r  z&TestDateTime.test_microsecond_rounding	  s   	G MM//$& %	2Cq6DT[[!,T--q1d)C8J	
   !1!126  !6!6?J  D)J  I.J  D)L  2.  7D	AQ%D	AQ$JAQXXq)Q]]F3IAQXXq)Q]]A.FAQXXq)Q]]D1K%	2  s   ,H22	H?>H?c                    | j                  d      5  | j                  j                  j                  t        j
                        }|j                         }| j                  |d       d d d        | j                  d      5  | j                  j                  j                  t        j
                  d      }|j                         }| j                  |d       d d d        y # 1 sw Y   {xY w# 1 sw Y   y xY w)Nzminimum UTCr   l w#o9 zmaximum UTCr   r   re  g  MB)	r.  r8  r   r  r   r1   r  r)   r   )r*   min_dtmin_tsmax_dtmax_tss        r+   test_timestamp_limitsz"TestDateTime.test_timestamp_limits	  s    \\-( 	3]]&&..hll.CF%%'F V\2	3 \\-( 	5]]&&..hll;< / >F%%'F V^4	5 	5	3 	3	5 	5s   AC#AC/#C,/C8c                    	 | j                   j                  d       | j                   j
                  t        d      z   }|j                         }| j                   j                  j                  d      }| j                   j                  t        d      z
  j                         t        d	d
d
      j                         z   }d||fd||ffD ]P  \  }}}| j                  |||      5  | j                   j                  |      }| j                  ||       d d d        R d|t        dd      j                         z
  fd|t        d      j                         z
  fd|t        d      j                         z   fd|t        d      j                         z   fg}	|	D ]`  \  }}| j                  ||      5  | j                  t        t        f      5  | j                   j                  |       d d d        d d d        b y # t        t        f$ r | j	                  d       Y w xY w# 1 sw Y   exY w# 1 sw Y   HxY w# 1 sw Y   xY w)N    Test not valid on this platformr   rQ  r   re  r   r   r  r   r%  minimummaximumr  r  Too small by a littler   r  Too small by a lotr  Too big by a littleToo big by a lotr  )r8  r  rh  r  rH   r   r   r  r   r  r  r.  r)   r   r   )
r*   rm  rn  ro  rp  	test_namer  r  r  r  s
             r+   test_fromtimestamp_limitsz&TestDateTime.test_fromtimestamp_limits	  s1   	=MM''
3 ""YA%66!!#""**q*9==$$yr'::EEG"b"=KKMN FF+FF+*
 	3%YH iBB 344R8  23 3		3 %fyar/J/X/X/Z&Z[!6I3,?,M,M,O#OP"FYA->-L-L-N$NO)*=*K*K*M!MN	

 ( 	4MIriB/ 4&&
M'BC 4 MM//344 4	4; ' 	=MM;<	= 3 34 44 4sA   H ).H)7IH6/I H&%H&)H3	6H?;II	c           	         | j                  t              5  	 | j                  j                  d       d d d        | j                  j                  j                  t        j                        }|j                         }| j                  j                  j                  dt        j                        }|j                         }d||j                  d       fd||j                  d       ffD ]o  \  }}}| j                  |||      5  | j                  t              5  	 | j                  j                  |      }d d d        | j                  |       d d d        q d	|d
z
  fd|t!        d      j#                         z
  fd|d
z   fd|t!        d      j#                         z   fg}
|
D ]~  \  }}| j                  ||      5  | j%                  t&        t
        f      5  | j                  t              5  | j                  j                  |       d d d        d d d        d d d         y # t        t
        f$ r | j                  d       Y w xY w# 1 sw Y   $xY w# t        t
        f$ r%}	| j                  t        |	             Y d }	~	Ud }	~	ww xY w# 1 sw Y   _xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   )xY w)Nrs  rt  r   r   re  r   rv  rw  rx  ry  r   rz  r  rQ  r{  r|  r}  )r[  r\  r8  r]  rh  r  rH   r   r  r   r1   r  r   r.  r   r)   r   r  r   r   )r*   rm  rn  ro  rp  r~  r  r  r  excr  s              r+   test_utcfromtimestamp_limitsz)TestDateTime.test_utcfromtimestamp_limits&
  s   01 	AA..z:	A ""**(,,*?!!#""**q*N!!# FFNN$N$?@FFNN$N$?@*
 	3%YH iBB 3%%&89 00!%!?!?!C0   23 3		3 %fqj1!6I3,?,M,M,O#OP"FQJ/)*=*K*K*M!MN	

 ( 	;MIriB/ ;&&
M'BC ;))*<= ; 66r:;;; ;	;= ]+ A?@A	A 	A( $]3 0c#h//00 03 3(; ;; ;; ;s   IH.	J&J!I"<J&K!J?7J3	J?K. IIIII"J	1J	JJ	JJ#J&&J0	3J<8J??KKK	c                 h    dD ]-  }| j                  t        | j                  j                  |       / y r  r  r  s     r+   r  z&TestDateTime.test_insane_fromtimestampP
  r  r-   c                     dD ]K  }| j                  t              5  | j                  t        | j                  j
                  |       d d d        M y # 1 sw Y   XxY wr  )r[  r\  r   r  r8  r]  r  s     r+   test_insane_utcfromtimestampz)TestDateTime.test_insane_utcfromtimestampY
  s[    
 $ 	*F!!"45 *!!-1O1O"(** *	** *s   ,AA	win32z*Windows doesn't accept negative timestampsc                 :    | j                   j                  d       y )N)r8  r  r2   s    r+   !test_negative_float_fromtimestampz.TestDateTime.test_negative_float_fromtimestampc
  s     	##E*r-   c                     | j                  t              5  | j                  j                  d      }d d d        | j	                  | j                  ddddddd             y # 1 sw Y   1xY w)	Nr  i  r   r  r   r   r  i~ )r[  r\  r8  r]  r)   )r*   r  s     r+   $test_negative_float_utcfromtimestampz1TestDateTime.test_negative_float_utcfromtimestampi
  s_    01 	6..u5A	6DMM$BBFKL	6 	6s   A""A+c                    dd l }t        d      }t        d      D ]  }| j                  t              5  | j
                  j                         }d d d        | j                  t              5  | j
                  j                   |j                                }d d d        t        z
        |k  s n | j                  t        z
        |       y # 1 sw Y   xY w# 1 sw Y   IxY w)Nr   r   r   rQ   )
r   r   rg  r[  r\  r8  utcnowr]  rf  assertLessEqual)r*   r   	tolerancer  from_nowfrom_timestamps         r+   test_utcnowzTestDateTime.test_utcnowo
  s     a(	1X 	E!!"45 2==//12 !!"45 M!%!?!?			!LM>H,-:	 	S(!:;YG2 2M Ms   C,+CC	C(	c                 |   d}d}t        j                  | j                  ||      }| j                  j                  ||      }| j	                  ||       | j                  t        |      | j                         | j                  t        |      | j                         g d}|D ]p  \  }}| j                  ||      5  t        j                  | j                  ||      }| j                  j                  ||      }| j	                  ||       d d d        r | j                  j                  }| j	                   |dd      j                         dt        z         | j	                   |dd      j                         d	t        z         | j	                   |d
d      j                         t        ddd              ddt        j                   t        j                  d   ffD ]  \  }}|dk  rd}	| }
nd}	|}
t        |
dz  d      \  }}dj                  |	|||      } ||d      }| j	                  |j                         t        |             | j	                  |j                         |        d\  }} |||      }| j	                  |j                         dt         z  dt        z  z          | j	                  |j                         d       | j	                  |j#                  |      |       | j	                   |dd      j$                  d        | j'                  t(              5   |dd       d d d        | j'                  t(              5   |dd       d d d        | j'                  t(              5   |dd       d d d        y # 1 sw Y   xY w# 1 sw Y   exY w# 1 sw Y   JxY w# 1 sw Y   y xY w)Nz2004-12-01 13:02:47.197z%Y-%m-%d %H:%M:%S.%f))u   2004-12-0113:02:47.197u   %Y-%m-%d%H:%M:%S.%f)u   200412-01 13:02:47.197u   %Y%m-%d %H:%M:%S.%f)u   2004-12-01 13:0247.197u   %Y-%m-%d %H:%M%S.%f)stringr  z+0002%zrU   z-0002rS   z-00:02:01.000003r   rQ   )rf   r   r   )r   r   )r   GMTr   r  r  rS  z{}{:02d}{:02d} {}%z %Zr   )z	+1234 UTCr  r   r  r   r0  z-2400z-000z)	_strptime_strptime_datetimer8  strptimer)   r0   r   r.  rv   MINUTEr   r  r   ry   r  r  r  r  r   r   r   )r*   r  r  r  r[  inputsr  	tzsecondsry   r  r   r   rf   dtstrru   r  s                   r+   test_strptimezTestDateTime.test_strptime
  s<   *'//vvNmm$$VV43'd8ndmm4d3i/

 % 	0NFFVF; 0$77v8>@mm,,VV<  3/	0 0	0 ==))'40::<a&jI'40::<b6kJ'.88:q!!<<	

 #-j#(>>/5<<?!C"E 	2Iv1}$*##GRK4NE7'..tUGVLE%)BR\\^Yy-IJRYY[&1	2 *
seS!dR&[)@Ae,S)51 	%.55t<z*CHWd,CCz*BHVT,BBz*?HS$,???S0 0N 	DCBB??s1   =AN,
N
N&:
N2N	N#&N/2N;c                 ^   | j                   j                  }| j                  t              5   |dd      }d d d        | j                  dddddd      }| j                  dddddd      }| j                  dddd	d	d	      }| j                  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 ]G  \  }}	}
}d"|z   }| j	                  ||	|
|#      5   ||	|
      }| j                  |||$       d d d        I y # 1 sw Y   xY w# 1 sw Y   `xY w)%Nz01/02/3 04:05:06z%d/%m/%y %H:%M:%Sr  rU   r   rW   rR   rY   r      rM  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 )reasonr  r  target)msg)r8  r  r   r   r.  r)   )r*   r  newdater   rO  r%  dt4r  r  r  r  r  s               r+   test_strptime_single_digitz'TestDateTime.test_strptime_single_digit
  s    ==))z* 	H13FGG	H mmD!Q1a0mmD!Q1a0mmD!Q1a0mmD!RAq1?$7=?$7=%':C@%':C@%':C@$&8=$&8=9j#.:z3/:z3/
 /5 	>*FFFF)F2FV%+%+%+  - > #662  &f => >	>)	H 	H,> >s   
D.D#D #D,	c                    | j                  dddddd      }| j                  |j                         d       | j                  |j                         |j                  |j                  |j
                  |j                  |j                  |j                  |j                         |j                         t        |j                  dd      j                         z
  dz   d	f	       |j                         }| j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j
                         | j                  |j                  |j                         | j                  |j                   |j                         | j                  |j"                  |j                         | j                  |j$                  |j                                | j                  |j&                  |j                         t        |j                  dd      j                         z
  dz          | j                  |j(                  d	       y )
Nrz  r   r  rY   r  !   )	rz  r   r  rY   r  r  rW   r`  r
  r   r
  )r8  r)   r  rZ  r[  r  ra  r  r  r  rc  r   r  r  r  r  r  r   r!  r"  r#  )r*   r   tts      r+   test_more_timetuplez TestDateTime.test_more_timetuple
  s   MM$B2r2(MN&&!''155&&!((AHH))+++-$qvvq!*<*F*F*HH1L		 [[]QVV,AGG,QUU+QVV,AHH-AHH-QYY[1Q[[]%)!&&!Q%7%A%A%C&DFG&H 	Ib)r-   c           	         | j                  ddddddd      }| j                  |j                  d      d	       d
D ]z  \  \  }}}t        t	        d||             }|j                  |      }| j                  |j                  d      d|z          | j                  |j                  d      d|z          | 	 |j                  d       y # t        $ r Y y w xY w)Nrz  r   r  rY   r  r  /   z%m %d %y %f %S %M %H %jz12 31 04 000047 33 22 06 366)))r  r  z	33.000123))r  r   33rU   )r   r   r   r   r  z-0200z%:zz-02:00:u   %y%m %H%M)r8  r)   r  r   r   r  r  )r*   r   r  rl  r  r   s         r+   test_more_strftimezTestDateTime.test_more_strftime
  s    MM$B2r26$=>$B	DF 	?JGQQ91abIIJB			$AQZZ-w{;QZZ.	A>		?	JJ./! 		s   9C 	CCc           	          | j                  ddddddd      }| j                  |j                         t        ddd             | j                  |j                         t        dddd             y )NrY  rQ   rW   r"  -     )r8  r)   r   r   rt   s     r+   test_extractzTestDateTime.test_extract  s\    ]]4Ar2q$7Dq!$45DRD$9:r-   c           	         t        ddd      }t        dddd      }| j                  ddddddd      }| j                  j                  } |||      }| j	                  ||        |||      }| j	                  ||       | j	                  ||j                                | j	                  ||j                                | j	                  | ||j                         |j                                      | j                  t        |       | j                  t        ||       | j                  t        |||       | j                  t        |||d       | j                  t        |||dd	       | j                  t        |d
d       | j                  t        ||d       | j                  t        |d
|        |||t        j                        }| j                  |j                  t        j                          |||t        j                        }| j                  |j                  t        j                         t               } |||      }| j	                  |j                         |       | j	                  |j                         |       y )NrY  rQ   rW   r"  r  r  )r   r   r   rU   r   r   r   )r   r   r8  r  r)   r   r   r   r1   r0   r   )r*   r  r   r  r  ru   s         r+   test_combinezTestDateTime.test_combine	  s   q!RD!==q!RQ=--''Q]X&!!$X&BGGI&BGGI&WRWWY	:;)W-)Wa0)Wa3)WaA6)WaAq9)Wff=)Wa8)Wfa8 Q8<<(bii.Q(,,/bii.FR^A&A&r-   c                 R   | j                   }g d} || }| j                  ||j                                d}dD ]?  \  }}|d d  }|||<    || } |j                  d
i ||i}	| j                  ||	       |dz  }A  |ddd      }| j                  t        |j                  d	       y )N)r   rU   rQ   rW   rR   rY   rT   r   )rQ  rR  rS  ra  rR   r  rY   r  rT   re  r  r   rN  rU   ry  r|  rT  r!   rU  rV  s
             r+   r\  zTestDateTime.test_replace+  s    mm$Dzt||~.1 	LD& 1gGGAJG}H$,,0$0CXs+FA	 4B*dll>r-   EDT4c                 *   | j                   j                         }t        dd      }|j                  t	        t        d      d            }| j                  |j                         |       | j                  t        |j                  ||       | j                  t        |j                  |       |j                  |      t        dd      z   }| j                  |j                  |      |       | j                  |j                  |	      |        G d
 dt              } |       }| j                  t        |j                  |       | j                  |j                  |      j                  |      |        G d dt              } |       }| j                  t        |j                  |        G d dt              }	 |	       }
|j                  |
      }| j                  t              5  |j                          d d d        y # 1 sw Y   y xY w)N,   0044rX   r   EDTr   rW   r   r   c                       e Zd Zd Zd Zy)+TestDateTime.test_astimezone.<locals>.Bogusc                      y r/   r!   rt   s     r+   rv   z5TestDateTime.test_astimezone.<locals>.Bogus.utcoffsetQ      Dr-   c                     t        d      S rT  r   rt   s     r+   r{   z/TestDateTime.test_astimezone.<locals>.Bogus.dstR  s    il2r-   NrG   r_   r`   rv   r{   r!   r-   r+   Bogusr  P  s    02r-   r  c                       e Zd Zd Zd Zy)/TestDateTime.test_astimezone.<locals>.AlsoBogusc                     t        d      S rT  r   rt   s     r+   rv   z9TestDateTime.test_astimezone.<locals>.AlsoBogus.utcoffsetX  s    IaL%8r-   c                      y r/   r!   rt   s     r+   r{   z3TestDateTime.test_astimezone.<locals>.AlsoBogus.dstY      dr-   Nr  r!   r-   r+   	AlsoBogusr  W  s    8*r-   r  c                       e Zd Zd Zd Zy),TestDateTime.test_astimezone.<locals>.Brokenc                      yr  r!   rt   s     r+   rv   z6TestDateTime.test_astimezone.<locals>.Broken.utcoffset^  s    Ar-   c                      yr  r!   rt   s     r+   r{   z0TestDateTime.test_astimezone.<locals>.Broken.dst_      ar-   Nr  r!   r-   r+   Brokenr  ]  s    -'r-   r  )r8  r   rb   r  r   r   r)   
astimezoner   r   r   r   )r*   ru   r  dt_utcdt_fr  bogr  alsobogr  broken	dt_brokens               r+   test_astimezonezTestDateTime.test_astimezoneD  s   ]] F#8IB,?#GH&1)R]]Aq9)R]]B7zzz#ia&DDq)40!,d3	3F 	3 g*bmmS93/::1=tD	+ 	+ +*bmmW=	(V 	( JJfJ-	y) 	#  "	# 	# 	#s   /H		Hc                      G  fdd j                         }d}  j                   | } ||i ddi} j                  |j                  |        j                  |j                  d        j                  |j                  d        j                  |j                         |j                                 j                  |j                  d      |j                  |j                  z   |j                  z   dz
         y )Nc                   "    e Zd ZdZ fdZd Zy).TestDateTime.test_subclass_datetime.<locals>.Cr}   c                     |j                         }|j                  d      } j                  j                  | g|i |}||_        |S rg  rh  rj  s         r+   r   z6TestDateTime.test_subclass_datetime.<locals>.C.__new__j  rn  r-   c                 T    || j                   z   | j                  z   | j                  z   S r/   )rZ  r[  r  rp  s     r+   rr  z6TestDateTime.test_subclass_datetime.<locals>.C.newmethq  s#    tyy(4::5CCr-   Nrs  r2   s   r+   ru  r  g  s    IDr-   ru  )r  rW   r_  r   r  )   r   rT   r}   rV   )
r8  r)   rF   rt  r   rc  rr  rZ  r[  r  rw  s   `    r+   r  z#TestDateTime.test_subclass_datetimee  s    	D 	D 'dmmT"&'1&*+A&#--/:R#((SYY*>*-**+578+9 	:r-   c                      G  fdd j                         }d}d}d} || } j                  ||        j                  |j                  d       |j	                         }d|f|fd|t
        j                  f|j                  t
        j                        fd|f|fd	|f|fd
|df|fdt        |dd  t        |dd   f|fg}|D ]  \  }}	}
||fD ]  } j                  t        |      |      5  t        ||      }|dk(  r$ j                  t              5   ||	 }d d d        n ||	 } j                  |        j                  ||
        j                  |j                  d       d d d          y # 1 sw Y   VxY w# 1 sw Y   xY w)Nc                       e Zd Z fdZy)TTestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclassc                 V     j                   j                  | g|i |}d|_        |S r|  r}  r~  s       r+   r   z\TestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclass.__new__  r  r-   Nr  r2   s   r+   r
  r    r  r-   r
  )r  rW   r_  r   r     rb  z2003-04-14T12:30:15.123456gh͏TMArT   r  r]  r  r  z%Y-%m-%dT%H:%M:%S.%fr  r   rQ   r  )r8  r   r)   r   r  r   r1   r  r   r   r.  r   r  r[  r\  )r*   r
  r   r  utc_tsr  r  r  r  r  r  r  constructorru   s   `             r+   -test_subclass_alternate_constructors_datetimez:TestDateTime.test_subclass_alternate_constructors_datetime  s   	t}} 	 12"!4(f&67q)  reV,r8<<0%00>@&F3{nf5+'=>GtAay)4ab?;VD	

 3= 	2.Kh-v6 2\\X.9 " ; 2")(K"@K"&88!--.@A ;!,k!:B; ; )+6 ))".>? $$R2 $$RXXq1#2 22	2; ;2 2s%   .'FE6	AF6E?;FFc                      G  f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
      ifg}|D ]  \  }}} j	                  |      5  t        ||      }|dk(  r' j                  t              5   |di |}d d d        n |di |} j                  |        j                  |j                  d       d d d         y # 1 sw Y   BxY w# 1 sw Y   xY w)Nc                       e Zd Z fdZy)8TestDateTime.test_subclass_now.<locals>.DateTimeSubclassc                 V     j                   j                  | g|i |}d|_        |S r|  r}  r~  s       r+   r   z@TestDateTime.test_subclass_now.<locals>.DateTimeSubclass.__new__  r  r-   Nr  r2   s   r+   r
  r    r  r-   r
  r   r  now_utcr   	now_fixedr	  r   r   rT   r!   )r8  r   r1   r   r.  r  r[  r\  r   r)   r   )r*   r
  r  rB   	meth_namer  r  ru   s   `       r+   test_subclass_nowzTestDateTime.test_subclass_now  s   	t}} 	 E2x$hll34%$1De(L!MN	

 (2 
	.#D)Vd# 	. !19=())*<= .#-f-. .  )&)B%%b*:;  1-	. 	.
	.. .	. 	.s$   +'C1	C%?C1%C.*C11C:	c                    g d}g d}ddg}d t         j                  t        t        d            t        t        d            g}|D cg c]'  }|D ]   }|D ]  } | j                  g ||d|i " ) }}}}|D ]c  }	|D ]\  }
|	j	                  |
	      }| j                  |
      5  | j                  j                  |      }| j                  |	|       d d d        ^ e y c c}}}w # 1 sw Y   rxY w)N)r  r  r  r  )r   r   r   r   )r   r   r   ih )r   r   r   G )r   r  r  r  r  r  r	  r   rU   r   r  r  )r   r1   r   r8  r  r.  r  r)   )r*   r  
base_times
separatorsr  
date_tuple
time_tupler  dtsru   r  r  r  s                r+   test_fromisoformat_datetimez(TestDateTime.test_fromisoformat_datetime  s*   



 3Z
IB/0IA./1
 ",# #!+#!#  t}}BjB:BcB #B #B # #
  	0B! 0-\\\. 0 MM77>E$$R/0 00	0#0 0s   ,C&+.C--C6c           
      d   | j                  ddddddd      }t        d      t        d      t        d	d
      t        ddd      t        dddd      g}||D cg c]  }d|z  	 c}z  }d t        j                  t        t        d            g}||D cg c]  }t        |       c}z  }|D ]g  }|j	                  |      }|j                         }| j                  |      5  | j                   j                  |      }||k(  sJ |       	 d d d        i y c c}w c c}w # 1 sw Y   ~xY w)Nr   r   r  r  pQ rR   r   rU   rY   r,  r   r   r%  rW   r  rb  r'  r
  r   r   tstrr8  r   r   r1   r  r  r.  r  )	r*   base_dtr  rV  r  r  ru   r  r  s	            r+   test_fromisoformat_timezonez(TestDateTime.test_fromisoformat_timezone  s,   --b"b"b&A A	 2Ar*BB7Aq!&I	
	 		2"b2g22	IA./1 	95RHRL55 	*C,BLLNE5) *33E:U{)E){* *		* 3
 6* *s   DD!((D&&D/	c           
         g d}|D ]s  }| j                  ddddddd      }|j                  |	      }| j                  |
      5  | j                   j                  |      }| j	                  ||       d d d        u y # 1 sw Y   xY w)N)	r  r     u   ʁu   ᛇu   時u   🐍r  r  r   r  r   r   r  iu r  r  r  r*   r  r  ru   r  r  s         r+   test_fromisoformat_separatorsz*TestDateTime.test_fromisoformat_separators  s    

  	,CtQBB?BLLSL)EE* ,33E:  U+, ,		,, ,s   .A>>B	c                    ddg}|D ]q  }| j                  ddddd      }|j                  |      }| j                  |	      5  | j                   j                  |      }| j	                  ||       d d d        s y # 1 sw Y   ~xY w)
Nr  r  r  r   r  r   r  r  r  r  r	  s         r+   test_fromisoformat_ambiguousz)TestDateTime.test_fromisoformat_ambiguous  s    3Z
 	,CtQB3BLLSL)EE* ,33E:  U+, ,		,, ,s   .A<<B	c           
      "   ddg}d t         j                  t        t        d            t        t        d            t        t        dd            g}g d	}t        |      D ]  \  }}|D ]  }|D ]  }|d
k(  rd|d   dz  z  }|dd |fz   } | j                  |dd|z    d|i}	|	j                  |      }
| j                  |
      5  | j                  j                  |
      }| j                  |	|       d d d           y # 1 sw Y   xY w)N)r  r   rW   r  r6  r  rb  )r  r   rW   r  r6  r  r   r	  r   rU   rY   r,  r   r   rf   r   rP  r   rP  rT  r   rW   r   r  r  	r   r1   r   	enumerater8  r  r.  r  r)   )r*   datetime_basesr  	timespecsipr  r  r  new_microsecondsru   r  r  s               r+   test_fromisoformat_timespecsz)TestDateTime.test_fromisoformat_timespecs)  s5   ,') IB/0IA./IAr:;=
5	  	* 	4FB 
4 . 	4H^++/8A;$3F+G(#+Aa=4D3F#F&!QV)=KsKBLL"L5EE2 4 $ ; ;E B((U34 4	4
4	44 4   .D	Dc                    t         j                  }t        t        d      d      }t        t        d      d      }t        t        d      d      }g d| j                  d	dd
dd      fd| j                  d	dd
dd      fd| j                  d	dd
dd      fd| j                  d	dd
dd      fd| j                  d	dd
ddd      fd| j                  d	dd
ddd      fd| j                  d	dd
dddd      fd| j                  d	dd
dddd      fd| j                  d	dd
dddd      fd| j                  d	dd
dddd      fd| j                  d	dd
dddd      fd| j                  d	dd
dddd      fd| j                  d	dd
dddd      fd| j                  d	dd
dddd      fd| j                  d dd!dd"d#d$      fd%| j                  d dd!dd"d#d&      fd'| j                  d	dd
dddd      fd(| j                  d	dd
dd      fd)| j                  d	dd
dd      fd*| j                  d	dd
dd      fd+| j                  d	dd
ddd      fd,| j                  d	dd
ddd      fd-| j                  d	dd
dddd      fd.| j                  d	dd
dddd      fd/| j                  d	dd
dddd      fd0| j                  d	dd
dddd      fd1| j                  d	dd
dddd      fd2| j                  d	dd
dddd      fd3| j                  d	dd
dddd      fd4| j                  d	dd
dddd      fd5| j                  d6dd      fd7| j                  d6d8d9d:d      fd;| j                  d<ddd:d      fd=| j                  d	d8d>d?d      fd@| j                  d	d8dAd?d      fdB| j                  dCd8dDdd      fdE| j                  d	dd
dd      fdF| j                  dCd8dDd8d      fdG| j                  d	dd
d8d      fdH| j                  d	dd
d8dIdA      fdJ| j                  d	d8dAd?dK      fdL| j                  d	d8dAd?dK      fdM| j                  d<ddd:dKdN      fdO| j                  d<ddd:dKdN      fdP| j                  d	dd
d8dIdA      fdQ| j                  d	dd
ddd      fdR| j                  d	dd
ddd      fdS| j                  dTdd
ddd      fdU| j                  dTddddd      fdV| j                  d	dd
ddd      fdW| j                  d	dd
dddd      fdX| j                  d	dd
d8dIdA      fdY| j                  d	dd
d8dIdAdZ      fd[| j                  d	d8dAd?dK      fd\| j                  d	d8dAd?dK      fd]| j                  d<ddd:dKdN      fd^| j                  d<ddd:dKdNd_      fd`| j                  dCd8dDdd|a      fdb| j                  d	dd
ddd|a      fdc| j                  d	dd
ddd|a      fdd| j                  d	dd
dddd|a      fde| j                  dfddddt        t        dK            a      fdg| j                  d	dd
dddht        t        d            a      fdi| j                  d	dd
dddht        t        dj            a      fdk| j                  d	dd
ddd|a      fdl| j                  d	dd
dddht        t        d            a      fdm| j                  d	dd
dddht        t        dj            a      fdn| j                  dodddddpdq|a      fdr| j                  dodddddpdq|a      fds| j                  dodhddddhdt|a      fdu| j                  dodhddddhdt|a      fdv| j                  dTdwdAddD|a      fdx| j                  dTdwdAddD|a      fdy| j                  d	dd
dddd|a      fdz| j                  d	dd
ddddt        t        dw{            a      f}|D ]M  \  }}| j	                  ||      5  | j                  j                  |      }| j                  ||       d d d        O y # 1 sw Y   ZxY w)}Nr   r   BSTr	  r   rX   r  r  r  rU   r   z2025-01-02T03rQ   z2025-01-02T03:04rW   z2025-01-02T0304z2025-01-02T03:04:05rR   z2025-01-02T030405z2025-01-02T03:04:05.6i'	 z2025-01-02T03:04:05,6z2025-01-02T03:04:05.678ipX
 z2025-01-02T03:04:05.678901[
 z2025-01-02T03:04:05,678901z2025-01-02T030405.678901z2025-01-02T030405,678901z2025-01-02T03:04:05.6789010z2009-04-19T03:15:45.2345r  r  r  r  i z2009-04-19T03:15:45.1234567rb  z2025-01-02T03:04:05,678r  20250102T03z20250102T03:04z20250102T03:04:0520250102T030405z20250102T03:04:05.6z20250102T03:04:05,6z20250102T03:04:05.678z20250102T03:04:05,678z20250102T03:04:05.678901z20250102T030405.678901z20250102T030405,678901z20250102T030405.67890102022W01r  
2022W52520r   r   r7  2022W527520r  
2026W01516ry  r   2026W013516r  
2025W01503r  r  2025W014503
2025W015122025W0145122025W014T121431r_  2026W013T162100r   z2026W013 1621002022W527T202159r   z2022W527 202159z2025W014 1214312025W014T030405z2025W014 030405z2020-W53-6T03:04:05r  z2020W537 03:04:05z2025-W01-4T03:04:05z2025-W01-4T03:04:05.678901z2025-W01-4T12:14:31z2025-W01-4T12:14:31.012345i90  z2026-W01-3T16:21:00z2026-W01-3T16:21:00.000000z2022-W52-7T20:21:59z2022-W52-7T20:21:59.999999r&  z2025-W01003+00r   z2025-01-02T03:04:05+00z2025-01-02T03:04:05Zz!2025-01-02003:04:05,6+00:00:00.00z2000-01-01T00+21rN  z2025-01-02T03:05:06+0300rY   z2025-01-02T03:05:06-0300rP   z2025-01-02T03:04:05+0000z2025-01-02T03:05:06+03z2025-01-02T03:05:06-03z 2020-01-01T03:05:07.123457-05:00r  rT   iA z2020-01-01T03:05:07.123457-0500z 2020-06-01T04:05:06.111111-04:00i z2020-06-01T04:05:06.111111-0400z 2021-10-31T01:30:00.000000+01:00r   z2021-10-31T01:30:00.000000+0100z2025-01-02T03:04:05,6+000000.00z 2025-01-02T03:04:05,678+00:00:10r   r  )r   r1   r   r8  r.  r  r)   )	r*   r   r  r   r  r  r  r  r  s	            r+   $test_fromisoformat_datetime_examplesz1TestDateTime.test_fromisoformat_datetime_examplesC  s   llyq)51yr*E2yr*E2z
4==q!Q:;z
dmmD!Q1=>z
  tQ1a!@Az
 dAq!Q ?@	z

 #DMM$1aA$FGz
 !$--aAq!"DEz
 %]]4Aq!Q79z
 %]]4Aq!Q79z
 ']]4Aq!Q79z
 *]]4Aq!Q79z
 *]]4Aq!Q79z
" (]]4Aq!Q79#z
& (]]4Aq!Q79'z
* +]]4Aq!Q79+z
. (]]4B2r6:</z
2 +]]4B2r6:<3z
6 ']]4Aq!Q797z
: tQ1a89;z
< DMM$1a;<=z
> t}}T1aA>??z
@ !$--aAq!"DEAz
B dAq!Q BCCz
D #]]4Aq!Q79Ez
H #]]4Aq!Q79Iz
L %]]4Aq!Q79Mz
P %]]4Aq!Q79Qz
T (]]4Aq!Q79Uz
X &]]4Aq!Q79Yz
\ &]]4Aq!Q79]z
` ']]4Aq!Q79az
d dAq12ez
f 4==r2r1=>gz
h DMM$1b!<=iz
j 4==r2r1=>kz
l DMM$BA>?mz
n 4==r2q!<=oz
p DMM$1a;<qz
r 4==r2r1=>sz
t DMM$1b!<=uz
v dAq"b" EFwz
x dBB CDyz
z dBB CD{z
| dAq"b" EF}z
~ dAq"b" EFz
@ dAq"b" EFAz
B dAq!Q BCCz
D dAq!Q BCEz
F #DMM$1aA$FGGz
H !$--aAq!"DEIz
J #DMM$1aA$FGKz
L *]]4Aq!Q79Mz
P #DMM$1b"b$IJQz
R *]]4Ar2r59;Sz
V #DMM$BB$GHWz
X *4==r2r2+NOYz
Z #]]4Ar2r24[z
^ *]]4Ar2r6:<_z
b ]]4RAc]:<cz
f &]]4Aq!Qs];=gz
j $]]4Aq!Qs];=kz
n 1]]4Aq!Qs]CEoz
r  ]]4Aq!HYR=P4Q]RTsz
v (]]4Aq!Q"*91+=">  @Awz
| (]]4Aq!Q"*92+>"?  AB}z
B (]]4Aq!Qs];=Cz
F &]]4Aq!Q"*91+=">  @AGz
L &]]4Aq!Q"*92+>"?  ABMz
R 0]]4Aq!Qs]CESz
V /]]4Aq!Qs]CEWz
Z 0]]4Aq!Qs]CE[z
^ /]]4Aq!Qs]CE_z
b 0]]4RBs];=cz
f /]]4RBs];=gz
j /]]4Aq!Qs]CEkz
n 0]]4Aq!Q"*9R+@"A  CDoz
x $, 	3Ix	2 344Y?  23 3	33 3s   .a		a	c                     g d}|D ]V  }| j                  |      5  | j                  t              5  | j                  j	                  |       d d d        d d d        X y # 1 sw Y   xY w# 1 sw Y   oxY w)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.123456+24:30z 2009-04-19T03:15:45.123456-24:30u   2009-04-10ᛇᛇᛇᛇᛇ12:15u   2009-0410T12:15u   2009-04-10T1215z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.  r   r   r8  r  r  s      r+   !test_fromisoformat_fails_datetimez.TestDateTime.test_fromisoformat_fails_datetime  sw    
:   	9Gg. 9&&z2 9MM//899 9	99 99 9"   A-A!A-!A*&A--A6	c                     d}| j                  t        t        j                  t	        |                  5  | j
                  j                  |       d d d        y # 1 sw Y   y xY w)Nu   2018-01-0301:0113)r  r   reescaper   r8  r  )r*   r  s     r+   "test_fromisoformat_fails_surrogatez/TestDateTime.test_fromisoformat_fails_surrogate  sM     *##J		$u+0FG 	/MM''.	/ 	/ 	/s   AA#c                     d}| j                   j                  |      }| j                  |j                  t        j
                         y )Nz2014-04-19T13:21:13+00:00)r8  r  r0   r   r   r1   )r*   r  ru   s      r+   test_fromisoformat_utcz#TestDateTime.test_fromisoformat_utc  s1    ,]]((0bii.r-   c                      G d d| j                         } |ddddddd	t        t        d
d                  }|j                  |j	                               }| j                  ||       | j                  ||       y )Nc                       e Zd Zy)BTestDateTime.test_fromisoformat_subclass.<locals>.DateTimeSubclassNr  r!   r-   r+   r
  r7    r  r-   r
  r   r   r_  r  r  r  i r   r   r   )r8  r   r   r  r  r)   r   )r*   r
  ru   r  s       r+   r  z(TestDateTime.test_fromisoformat_subclass  su    	t}} 	 dBAr2v%-ib".M%NP !..r||~>U#e%56r-   N)@rG   r_   r`   r   r8  r  r  r  r  r  r  r#  r&  r1  r  r  rn  r  rK  rM  r4  rP  rR  r  rX  r^  r   run_with_tzrc  re  r  rq  r  r  r  r  unittestskipIfrE   platformr  r  r  r  r  r  r  r  r  r\  r  r  r  r  r  r  r
  r  r  r)  r-  r2  r4  r  r!   r-   r+   r  r    s   H,
/& *HX-<5:L #$	73?j$.B4HC'C4$'B62;2 W34D 5D6	; W"*2 #*2X5&%4N(;T&* X__S\\W,.Z[+ \+
 X__S\\W,.Z[M \M
H"9@v >D*,";
 'D?2 W # !#@:632j.8!0F*2,"	,44D3L"9H//
7r-   r  c                   @    e Zd ZeZ ej                  d      d        Zy)TestSubclassDateTimeznot appropriate for subclassesc                      y r/   r!   r2   s    r+   r  z#TestSubclassDateTime.test_roundtrip  s    r-   N)rG   r_   r`   r  r8  r9  skipr  r!   r-   r+   r=  r=    s%    HX]]34 5r-   r=  c                       e Zd ZdZy)SubclassTimer   NrS  r!   r-   r+   rA  rA    rU  r-   rA  c                       e Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestTimec                    | j                  dd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       y )Nr   r   r8  r)   ra  r  r  re  r  s     r+   r  zTestTime.test_basic_attributes  sb    MM"a $1%1%*r-   c                    | j                  dddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       y )Nr   r   r  rE  r  s     r+   r  z&TestTime.test_basic_attributes_nonzero  sh     MM"b"d+$2&2&-r-   c                 b   | j                  dddd      }t        |      }| j                  |j                  d             |dd  }t	        |      }| j                  ||       | j                  |j                  |j                  |j                  |j                        }| j                  ||       y )Nr   rU   rQ   rW   r  r  )
r8  r   r   r?   r   r)   ra  r  r  re  )r*   r   r  r  s       r+   r  zTestTime.test_roundtrip&  s    MM!Q1% G[12abE!WB ]]166188QXX==*Br-   c                    g d} | j                   |  | j                   | }| j                  |       | j                  |k         | j                  |k\         | j                  |k7         | j                  |k         | j                  |kD         t	        t        |            D ]  }|d d  }||   dz   ||<    | j                   | }| j                  |k         | j                  |kD         | j                  |k         | j                  |k\         | j                  |k7         | j                  |k7         | j                  |k(         | j                  |k(         | j                  |kD         | j                  |k         | j                  |k\         | j                  |k          t        D ]'  | j                  k(  d       | j                  k7  d       | j                  k(  d       | j                  k7  d       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd	       | j                  t        fd
       | j                  t        fd       | j                  t        fd       * y )Nr   rU   rQ   rW   r   FTc                       k  S r/   r!   r  s   r+   r@  z)TestTime.test_comparing.<locals>.<lambda>W  r  r-   c                       k  S r/   r!   r  s   r+   r@  z)TestTime.test_comparing.<locals>.<lambda>X  r  r-   c                       kD  S r/   r!   r  s   r+   r@  z)TestTime.test_comparing.<locals>.<lambda>Y  r  r-   c                       k\  S r/   r!   r  s   r+   r@  z)TestTime.test_comparing.<locals>.<lambda>Z  r  r-   c                       k  S r/   r!   r  s   r+   r@  z)TestTime.test_comparing.<locals>.<lambda>[  r  r-   c                       k  S r/   r!   r  s   r+   r@  z)TestTime.test_comparing.<locals>.<lambda>\  r  r-   c                       kD  S r/   r!   r  s   r+   r@  z)TestTime.test_comparing.<locals>.<lambda>]  r  r-   c                       k\  S r/   r!   r  s   r+   r@  z)TestTime.test_comparing.<locals>.<lambda>^  r  r-   )	r8  r)   r   r   rg  r  r  r   r   )r*   r   r  rm  rZ  r  r  s        @@r+   test_comparingzTestTime.test_comparing5  s   T]]D!T]]D!R b!b!r"b!b!s4y! 	'A1gGa1GAJ(BOOBG$OOBG$OOB"H%OOB"H%OOB"H%OOB"H%R2X&R2X&R"W%R"W%R2X&R2X&	'" ! 	?FR6\51R6\40Vr\51Vr\40i)=>i)<=i)<=i)=>i)=>i)<=i)<=i)=>	?r-   c                 \   | j                  dd       | j                  dd       | j                  t        | j                   dd       | j                  t        | j                   dd       | j                  dd       | j                  dd       | j                  t        | j                   dd       | j                  t        | j                   dd       | j                  ddd       | j                  ddd       | j                  t        | j                   ddd       | j                  t        | j                   ddd       | j                  dddd       | j                  dddd       | j                  t        | j                   dddd       | j                  t        | j                   dddd       y )	Nr   r   r
  r+  r   rS  r&  r  )r8  r   r   r2   s    r+   r  z'TestTime.test_bad_constructor_arguments`  sJ   ab!*dmmR;*dmmR;b!b"*dmmR<*dmmR<b"a b"b!*dmmRR@*dmmRR@b"b!$b"b&)*dmmRRD*dmmRRIr-   c                    | j                  ddd      }| j                  ddd      }| j                  ||       | j                  t        |      t        |             |di}d||<   | j                  t        |      d       | j                  ||   d       | j                  ||   d       | j                  ddd      }| j                  ddd      }| j                  ||       | j                  t        |      t        |             |di}d||<   | j                  t        |      d       | j                  ||   d       | j                  ||   d       y )Nr   r  r6  r   rU   r   rR   r  r  s       r+   r  zTestTime.test_hash_equalityv  s6   MM"b"%MM"b"%Aa$q'*!fAS1%Q#Q#MM!a$MM!a$Aa$q'*!fAS1%Q#Q#r-   c                 b	   | j                  dddd      }| j                  |j                         d       | j                  |j                         t        |             | j                         }| j                  |j                         d       | j                  |j                         t        |             | j                  d      }| j                  |j                         d       | j                  |j                         t        |             | j                  d	      }| j                  |j                         d
       | j                  |j                         t        |             | j                  d      }| j                  |j                         d       | j                  |j                         t        |             | j                  d      }| j                  |j                         d       | j                  |j                         t        |             | j                  d      }| j                  |j                         d       | j                  |j                         t        |             | j                  d      }| j                  |j                         d       | j                  |j                         t        |             | j                  dddd      }| j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d        | j                  |j                  d!      d"       | j                  |j                  d#      d"       | j	                  t
        |j                  d$       | j	                  t
        |j                  d%       | j                  dddd&      }| j                  |j                  d      d'       | j                  dddd(      }| j                  |j                  d      d)       | j                  |j                  d!      d*       | j                  |j                  d#      d       y )+NrW   rR   r   r  z04:05:01.00012300:00:00ru  z00:00:00.000001r   z00:00:00.000010r  z00:00:00.000100rT  z00:00:00.001000r\  z00:00:00.010000順 z00:00:00.100000r   r  r  rb  )ra  r  r  re  r   r  12rf   z12:34r   z12:34:56rP  z12:34:56.123r   z12:34:56.123456r  monkeyr  r  z12:34:56.999r   z12:34:56.000z12:34:56.000000)r8  r)   r  r   r   r   r  s     r+   r  zTestTime.test_isoformat  s   MM!Q3'(9:A/MMO
3A/MMaM((9:A/MMbM)(9:A/MMcM*(9:A/MMdM+(9:A/MMeM,(9:A/MMfM-(9:A/MMr"RVMLg6=i8'Bi8*En=~Nn=?PQf57HI*akkHE*akkHEMMr"RVMLn=~NMMr"RQMGn=~Nn=?PQf5zBr-   c                 L   dt        d      fdt        d      fdt        dd	      fd
t        ddd      fdt        dddd      fg}ddt        j                  fdt        t        d            fg}||D cg c]"  \  }}dD ]  \  }}||z   t        ||z        f $ c}}}}z  }| j                  ddd      }d}|D ]M  \  }	}
|j	                  |
      }||	z   }| j                  |
      5  |j                         |k(  sJ 	 d d d        O y c c}}}}w # 1 sw Y   bxY w)Nr  rR   r   r  rU   r  rY   r,  r   r  r   r   r  r%  r  rW   r  rb  r'  r  r	  r   r
  r  z12:37:09r   r  r  )r*   r  r  r  rV  r  r  t_baser  r  r  r   r  s                r+   r  z TestTime.test_isoformat_timezone  s^   ia()ia()ia45RDE	1aV\ ]^
	 x||$x	!-.
 	 )
 
" 5
  h 34
4
 	
 r2q)" 	,KFCc*AV#C#& ,{{}+++, ,	,
, ,s   ;'D0DD#	c                 l    | j                  d      }| j                  t        |j                  d       y )Nr   r  rQ   )r  )r8  r   r   r  r  s     r+   test_1653736zTestTime.test_1653736  s+    MMM#)Q[[a8r-   c                    | j                  dddd      }| j                  |j                  d      d       | j                  |j                  d      d       	 |j                  d	       |j                  d
       y # t        $ r Y w xY w)Nr   rU   rQ   rW   z%H %M %S %fz01 02 03 000004r  r  u   %H%Mr  r  )r8  r)   r  r  r  s     r+   r  zTestTime.test_strftime  s    MM!Q1%M24EF$56
C	JJ|$
 	


$
	 " 		s   A< <	BBc                     | j                  dddd      }| j                  |j                  d      t        |             | j	                  t
        d      5  |j                  d       d d d         G d d	| j                         } |dddd      }| j                  |j                  d      d	        G d
 d| j                         } |dddd      }| j                  |j                  d      t        |             dD ]  }| j                  |j                  |      |j                  |             | j                  |j                  |      |j                  |             | j                  |j                  |      d        y # 1 sw Y   xY w)Nr   rU   rQ   rW   r   r  r  c                       e Zd Zd Zy)TestTime.test_format.<locals>.Ac                      yr  r!   r2   s    r+   r  z'TestTime.test_format.<locals>.A.__str__  r  r-   Nr   r!   r-   r+   r  rb    r  r-   r  c                       e Zd Zd Zy)TestTime.test_format.<locals>.Bc                      yr  r!   r  s     r+   r  z(TestTime.test_format.<locals>.B.strftime  r  r-   Nr	  r!   r-   r+   r  re    r  r-   r  )z%H %M %Sr  )r*   r   r  ri  r  rj  r  s          r+   r  zTestTime.test_format  sI   MM!Q1%b)3q62##I/EF 	LL		 	 aAqMb)3/	 	 aAqMb)3q62 	5CQ\\#.

3@Q\\#.

3@Q\\#.4		5#	 	s   FFc           
         | j                  t        | j                  dddd            d       | j                  t        | j                  dddd            d       | j                  t        | j                  d	ddd
            d       | j                  t        | j                  dddd	            d       | j                  t        | j                  ddd	d	            d       y )Nr   rU   rQ   rW   z01:02:03.000004r   r  z10:02:03.004000r   r  z00:02:03.400000r   z12:02:03r   r  z23:15:00)r)   r   r8  r2   s    r+   r   zTestTime.test_str  s    T]]1aA679JKT]]2q!T:;=NOT]]1aF;<>OPT]]2q!Q78*ET]]2r1a89:Fr-   c           
         d| j                   j                  z   }| j                  t        | j                  dddd            d|z         | j                  t        | j                  dddd            d	|z         | j                  t        | j                  d
ddd            d|z         | j                  t        | j                  dddd
            d|z         | j                  t        | j                  ddd
d
            d|z         y )Nr  r   rU   rQ   rW   z%s(1, 2, 3, 4)r   r  z%s(10, 2, 3, 4000)r   r  z%s(0, 2, 3, 400000)r   z%s(12, 2, 3)r   r  z
%s(23, 15)r  r  s     r+   r   zTestTime.test_repr  s    T]]333dmmAq!Q78)D0	2dmmB1d;<-4	6dmmAq!V<=.5	7dmmB1a89'$.	0dmmBAq9:%,	.r-   c                    | j                  | j                  j                  | j                         | j                  | j                  j                  | j                         | j                  | j                  j                  t
               | j                  | j                  j                  | j                  j                  kD         y r/   )r   r8  r   r   r  r   r   r2   s    r+   r  zTestTime.test_resolution_info"  s}    dmm//?dmm//?dmm66	B))DMM,=,==>r-   c                    d} | j                   | }t        D ];  \  }}}|j                  ||      }|j                  |      }| j	                  ||       = | j	                  |j                         |j                  d             y )Nr7  r   r   rG  rU   r'  r  s           r+   r  zTestTime.test_pickling(  s     t}}d#)7 	,%GYMM$.Eooe,GT7+	, 	*D,>,>q,ABr-   c                     d}t        | }t        D ]Z  \  }}}|j                  ||      }|j                  |      }| j	                  ||       | j                  t        |t                      \ y )Nrk  )rA  r   r   r   r)   r   rg   r  s           r+   test_pickling_subclass_timez$TestTime.test_pickling_subclass_time1  sh     T")7 	?%GYMM$.Eooe,GT7+OOJw=>		?r-   c                     g d}t        |      D ]Z  \  }\  }}| j                  |      5   | j                  | }t        D ]  } ||d      }| j	                  ||         	 d d d        \ y # 1 sw Y   gxY w)N))s,   cdatetime
time
(S'\x14;\x10\x00\x10\x00'
tR.rk  )s   cdatetime
time
(U;  tR.rk  )s   cdatetime
time
U;  R.rk  )s,   cdatetime
time
(S'\x14;\x19\x00\x10\x00'
tR.r7  r   r  rG  )s   cdatetime
time
(U;  tR.ro  )s   cdatetime
time
U;  R.ro  )rm  r-  r.  )r  r.  r8  r1  r)   )r*   r  rm  r3  r   r  r   r   s           r+   r4  zTestTime.test_compat_unpickle:  s    
  )/ 	8OA|d" 8(4==$/) 8E#D8<G$$Wh788 8	88 8s   7A..A7	c                 :   | j                   }| j                   |d             | j                   |dd             | j                   |ddd             | j                   |dddd             | j                   |d             | j                   |              y )Nr   r   )r8  r   )r*   rW  s     r+   r  zTestTime.test_boolP  su    mmAAq	"Aq!%Aq!Q(Ar-   c                    | j                   }g d} || }| j                  ||j                                d}dD ]?  \  }}|d d  }|||<    || } |j                  di ||i}	| j                  ||	       |dz  }A  |d      }| j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d	
       | j                  t        |j                  d       y )NrI  r   )r  r  r  r  r   r+  ra  r
  r  r  r]  r  ru  r!   rU  rV  s
             r+   r\  zTestTime.test_replaceZ  s   mmDzt||~.1 		LD& 1gGGAJG}H$,,0$0CXs+FA		 1v*dll<*dll2>*dll3?*dllHr-   c                      G d d| j                         } |dd      }| j                  t        |j                  d            |       y )Nc                       e Zd Zy)4TestTime.test_subclass_replace.<locals>.TimeSubclassNr  r!   r-   r+   TimeSubclassrv  t  r  r-   rw  r   r  r   rr  ra  )r*   rw  r  s      r+   rb  zTestTime.test_subclass_replaces  s>    	4== 	 R$d5==b=12LAr-   c                      G  fdd j                         }d}  j                   | } ||i ddi} j                  |j                  |        j                  |j                  d        j                  |j                  d        j                  |j                         |j                                 j                  |j                  d      |j                  |j                  z   dz
         y )Nc                   "    e Zd ZdZ fdZd Zy)&TestTime.test_subclass_time.<locals>.Cr}   c                     |j                         }|j                  d      } j                  j                  | g|i |}||_        |S rg  rh  rj  s         r+   r   z.TestTime.test_subclass_time.<locals>.C.__new__  rn  r-   c                 :    || j                   z   | j                  z   S r/   ra  r  rp  s     r+   rr  z.TestTime.test_subclass_time.<locals>.C.newmeth      tyy(4;;66r-   Nrs  r2   s   r+   ru  rz  |      I7r-   ru  )rW   rR   rY   r   rT   r}   rV   )	r8  r)   rF   rt  r   r  rr  ra  r  rw  s   `    r+   test_subclass_timezTestTime.test_subclass_timez  s    	7 	7 dmmT"&'1&*+A&#--/:R#((SZZ*?!*CDr-   c           	      $   d}ddt        d      dfD ])  }| j                  t        | j                  ||dd  z          + | j	                  t        d      5  | j                  t        dgt        |      z        d       d d d        y # 1 sw Y   y xY w)	Nz2:59.0r  9r+     ÿr   r  r   )chrr   r   r8  r  r  r  )r*   rX  	hour_bytes      r+   r  z!TestTime.test_backdoor_resistance  s    c3r7F2 	?Ii)2T!"X)=?	? ##I/GH 	9MM%c$i0%8	9 	9 	9s   )BBN)rG   r_   r`   r   r8  r  r  r  rR  r  r  r  r  r^  r  r  r   r   r  r  rm  r4  r  r\  rb  r  r  r!   r-   r+   rC  rC    s~    H+. )?VJ,$.2Ch,<9
 56G.?C?8,I2BE49r-   rC  c                   *    e Zd Zd Zd Zd Zd Zd Zy)
TZInfoBasec                 p   | j                   } G d dt              } |ddd |             }|t        u xr dxs d}| j                  |j	                         |       t        |t        u xr d	xs d
      }| j                  |j                         |       | j                  |j                         |       y )Nc                       e Zd Zd Zd ZeZy)7TZInfoBase.test_argument_passing.<locals>.introspectivec                     |xr dxs dS )Nrealnoner!   rt   s     r+   ry   z>TZInfoBase.test_argument_passing.<locals>.introspective.tzname  s    BM6,CV%Cr-   c                 *    t        |xr dxs d      S )Nr}   re   r   rt   s     r+   rv   zATZInfoBase.test_argument_passing.<locals>.introspective.utcoffset  s     29"+;<<r-   N)rG   r_   r`   ry   rv   r{   r!   r-   r+   introspectiver    s    C=Cr-   r  r   rU   rQ   r   r  r  r  r}   re   )r8  r   r   r)   ry   r   rv   r{   )r*   rW  r  objr  s        r+   test_argument_passingz TZInfoBase.test_argument_passing  s    mm	F 	 !Q-/2$;)63Vx0cTk&9c&?RA(3H-r-   c                 "   | j                   }| j                  t        |dddd        G d dt              }| j                  t        |ddd|        G d dt              } |       } |ddd|      }| j                  |j                  |       y )Nr   r   r   c                       e Zd Zd Zd Zy)3TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTryc                      y r/   r!   r2   s    r+   ro   z<TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.__init__      r-   c                      y r/   r!   rt   s     r+   rv   z=TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.utcoffset      Tr-   NrG   r_   r`   ro   rv   r!   r-   r+   NiceTryr        $)r-   r  c                       e Zd Zd Zd Zy)5TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTryc                      y r/   r!   r2   s    r+   ro   z>TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.__init__  r  r-   c                      y r/   r!   rt   s     r+   rv   z?TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.utcoffset  r  r-   Nr  r!   r-   r+   	BetterTryr    r  r-   r  )r8  r   r   objectr   r0   )r*   rW  r  r  rj  r   s         r+   test_bad_tzinfo_classesz"TZInfoBase.test_bad_tzinfo_classes  s    mm)S!Q"=	*f 	* 	)S!Q'B	* 	* K1a"ahh"r-   c                     G d dt               }| j                  }dD ]  \  }}|t        u r |ddd ||            }n%|t        u r |dddddd ||            }nJ d
       |rlt	        |      }t        |d      \  }}d|d	k  xr dxs d||fz  }	t        |t              r|j                         }| j                  t        |      d|	z          | j                  t        t        |        y )Nc                       e Zd Zd Zd Zy)6TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgyc                 &    t        |      | _        y rd   r   rm   )r*   rm   s     r+   ro   z?TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.__init__  s    '7r-   c                     | j                   S r/   )rm   rt   s     r+   rv   z@TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.utcoffset  s    {{"r-   Nr  r!   r-   r+   Edgyr    s    8#r-   r  ))`F)aT)  T)r]  Fr   rU   rQ   r   rY   r   
impossiblerS  z%c%02d:%02dr  r  z01:02:03)r   r8  r   r   rf  r  rg   timetzr)   r   r   r   )
r*   r  rW  rm   legitr   aofsr  rh  tags
             r+   test_utc_offset_out_of_boundsz(TZInfoBase.test_utc_offset_out_of_bounds  s    	#6 	# mm- 	6MFE d{1aV51aAqf>&,&q6{dB'1#vz'9c'@S!Q&GGa*
A  Qc)9:!!*c15%	6r-   c           	         | j                   } G d dt              } |ddd       |dddd        |ddd |             fD ]_  }| j                  |j                                | j                  |j	                                | j                  |j                                a  G d dt              } |ddd |             }| j                  |j                         t        d             | j                  |j	                         t        d	             | j                  |j                         d
        G d dt              } |ddd |             }| j                  t        |j                         | j                  t        |j                         | j                  t        |j
                          G d dt              } |ddd |             }| j                  t        |j                         | j                  t        |j                          G d dt              } |ddd |             }| j                  |j                         t        d             | j                  |j	                         t        d             y )Nc                       e Zd Zd Zd Zd Zy)*TZInfoBase.test_tzinfo_classes.<locals>.C1c                      y r/   r!   rt   s     r+   rv   z4TZInfoBase.test_tzinfo_classes.<locals>.C1.utcoffset  r  r-   c                      y r/   r!   rt   s     r+   r{   z.TZInfoBase.test_tzinfo_classes.<locals>.C1.dst  r  r-   c                      y r/   r!   rt   s     r+   ry   z1TZInfoBase.test_tzinfo_classes.<locals>.C1.tzname  s    r-   NrG   r_   r`   rv   r{   ry   r!   r-   r+   C1r    s    0*-r-   r  r   r   c                       e Zd Zd Zd Zd Zy)*TZInfoBase.test_tzinfo_classes.<locals>.C3c                     t        d      S )Nr  re   r   rt   s     r+   rv   z4TZInfoBase.test_tzinfo_classes.<locals>.C3.utcoffset  s    Ie,D%Dr-   c                     t        d      S )Nr  re   r   rt   s     r+   r{   z.TZInfoBase.test_tzinfo_classes.<locals>.C3.dst  s    i&==r-   c                      yNanamer!   rt   s     r+   ry   z1TZInfoBase.test_tzinfo_classes.<locals>.C3.tzname  s    r-   Nr  r!   r-   r+   C3r    s    D=0r-   r  r  re   r  r  c                       e Zd Zd Zd Zd Zy)*TZInfoBase.test_tzinfo_classes.<locals>.C4c                      yr  r!   rt   s     r+   rv   z4TZInfoBase.test_tzinfo_classes.<locals>.C4.utcoffset  s    Gr-   c                      yr|  r!   rt   s     r+   r{   z.TZInfoBase.test_tzinfo_classes.<locals>.C4.dst  r  r-   c                      yrT  r!   rt   s     r+   ry   z1TZInfoBase.test_tzinfo_classes.<locals>.C4.tzname  s    r-   Nr  r!   r-   r+   C4r    s    3'*r-   r  c                       e Zd Zd Zd Zy)*TZInfoBase.test_tzinfo_classes.<locals>.C6c                     t        d      S )Nir   r   rt   s     r+   rv   z4TZInfoBase.test_tzinfo_classes.<locals>.C6.utcoffset  s    IC,@%@r-   c                     t        d      S )Nr+  r   r   rt   s     r+   r{   z.TZInfoBase.test_tzinfo_classes.<locals>.C6.dst  s    ib&99r-   Nr  r!   r-   r+   C6r    s    @9r-   r  c                       e Zd Zd Zd Zy)*TZInfoBase.test_tzinfo_classes.<locals>.C7c                     t        d      S )Nr  r   r   rt   s     r+   rv   z4TZInfoBase.test_tzinfo_classes.<locals>.C7.utcoffset  s    I2,F%Fr-   c                     t        d      S )Nr   r   rt   s     r+   r{   z.TZInfoBase.test_tzinfo_classes.<locals>.C7.dst  s    iS&AAr-   Nr  r!   r-   r+   C7r  
  s    FAr-   r  r  r   r  )r8  r   r  rv   r{   ry   r)   r   r   r   r   )r*   rW  r  r   r  r  r  r  s           r+   test_tzinfo_classeszTZInfoBase.test_tzinfo_classes  s   mm	. 	. aA,aAd+aAbd+- 	*A akkm,aeeg&ahhj)	*	1 	1 1a%	%(@A)D"9:W-	+ 	+ 1a%)Q[[1)QUU+)QXX.	: 	: 1a%*akk2*aee,	B 	B 1a%	r(BC)"=>r-   c                    | j                   } G d dt              } |ddd |             }|j                  d      }|j                  d      }|j                  d	      }|||fD ]i  }|||fD ]_  }t        t        t
        t        t        t        fD ]:  }	 |	||      }
 |	|j                  |j                        }| j                  |
|       < a k |t        ur|j                  d |       
      }|j                  d |       
      }|j                  d	 |       
      }|||fD ]Z  }|||fD ]P  }||kD  ||k  z
  }
||u s||u r||u s||u rd}n||cxu r|u rn nd}n||u rd}n||u sJ d}| j                  |
|       R \ y y )Nc                       e Zd Zd Zy)=TZInfoBase.test_aware_compare.<locals>.OperandDependentOffsetc                 d    |j                   dk  rt        |j                         S t        d      S Nr   re   r   r  r   r  s     r+   rv   zGTZInfoBase.test_aware_compare.<locals>.OperandDependentOffset.utcoffset  )    88b=$QXX66 %R00r-   Nr   r!   r-   r+   OperandDependentOffsetr        1r-   r  r  r  r   r   rQ   rs  r   r  r   r   r
  r   )r8  r   r  r   r   r   r   r   r	   r  r)   r   )r*   rW  r  rX  d0r  rk  r  rg  opr[  r  s               r+   test_aware_comparezTZInfoBase.test_aware_compare  s   mm	1V 	1 1a$:$<=\\\#\\\#\\\$R 	4ARZ 4b"b"b0 4BQ(C!!((AHH5H$$S(344	4 d?Q/E/GHBQ/E/GHBR0F0HIBRZ 4R 4Aq5QU+CR17bAG#$a2#$b#% Bww#$$$S(344	 r-   N)rG   r_   r`   r  r  r  r  r  r!   r-   r+   r  r    s    .$# 68.?`-4r-   r  c                   v    e Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zy)
TestTimeTZc                 :   | j                         }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                         y rT  )r8  r)   ra  r  r  re  r  r   r  s     r+   
test_emptyzTestTimeTZ.test_emptyE  so    MMO#1%1%*!((#r-   c                     t        ddd      }t        ddd      }t        ddd	      }t        d
d|      }t        dd|      }t        dd|      }t        d      t        d|      | j                  |j                  |       | j                  |j                  |       | j                  |j                  |       | j	                  j                         | j                  j                  |       | j                  |j                         t        d             | j                  |j                         t        d             | j                  |j                         t        d             | j	                  j                                | j                  t        |j
                  d       | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       | j	                  j                                | j                  t        |j                  d       | j                  |j                         t        d             | j                  |j                         t        d             | j                  |j                         t        d	             | j	                  j                                | j                  t        |j                  d       | j                  t        |      t        |             | j                  t        |      t        |             | j                  t        |      t        |             | j                  ||       | j                  ||       | j                  ||       | j                         | j                  t        fd       | j                  t        fd       | j                  t        |      d       | j                  t        |      d       | j                  t        |      d       | j                  t              d       | j                  t              d       | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       | j                  j                         d       | j                  j                         d       d}| j                  t        |      |dz          | j                  t        |      |dz          | j                  t        |      |dz          | j                  t              |dz          | j                  t              |d z          | j                  |j!                  d!      d"       | j                  |j!                  d#      d$       | j                  |j!                  d#      d%       t        d&d'      }t        d(d)|      }| j                  |j!                  d*      d+        G d, d-t              }	t        d.d	d/ |	             }
| j                  |
j!                  d0      d1       | j                  t        |
j                   d2       d3| j"                  j$                  v r)d4|	_        | j                  t(        |
j                   d2       y y )5Nr   r   r   r   r   rS   rS  METrQ   rT   r  r   r   r  (   ru  r  re   zno argsc                       k  S r/   r!   r  t5s   r+   r@  z'TestTimeTZ.test_zones.<locals>.<lambda>w  rA  r-   c                       k  S r/   r!   r  s   r+   r@  z'TestTimeTZ.test_zones.<locals>.<lambda>x  rA  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=%z %%:z=%:zz#07:47:00 %Z=EST %z=-0500 %:z=-05:00z%H:%M:%S %Z %z %:zz12:47:00 UTC +0000 +00:00z13:47:00 MET +0100 +01:00r  z%z %Z %%z%%Zr   r   z%H:%M %%Z='%Z' %%z='%z'z"23:59 %Z='%z %Z %%z%%Z' %z='-2359'c                       e Zd ZdZd Zy)(TestTimeTZ.test_zones.<locals>.Badtznamer}   c                     | j                   S r/   r  rt   s     r+   ry   z/TestTimeTZ.test_zones.<locals>.Badtzname.tzname  s
    .r-   N)rG   r_   r`   r   ry   r!   r-   r+   	Badtznamer    s
    B0r-   r  rU   rW   z%H:%M:%Sz02:03:04r0  rN   r  )rb   r   r)   r   r  rv   r   r   r   ry   r{   r  r   r   r  r   r  rF   rG   r   r   )r*   estr1   metr  r  r  r  yuckr  r   r  r  s              @@r+   
test_zoneszTestTimeTZ.test_zonesM  sL   $q)!UB'"eQ'1b%"b%"b%b!b-C(C(C("))$C(4)@A1)=>2)>?",,.))R\\9=e,e,e,"))+&)RYY	:9Q#789R#899Q#78"&&(#)RVVY7b48,b48,b48,R R R B#)_5)_5R"23R"23R"23R"34R"9:)9:)9:)9:):;)@Ab1'<#<=b1'=#=>b1'=#=>b1#67b1'B#BC%FG%J	L%9:<WX%9:<WX5.1"b&%>?%I	K	1 	1 Aq-J/<)QZZ6 dnn---#ILj!**d; .r-   c           
         | j                  ddddt        dd            }| j                  ddddt        dd            }| j                  t        |      t        |             | j                  d	d
ddt        dd            }| j                  d	dddt        dd            }| j                  t        |      t        |             y )Nr   r   rU   rQ   r  r   r   i  r   r  rY   r  irI  i)r8  rb   r)   r  r  s      r+   test_hash_edge_caseszTestTimeTZ.test_hash_edge_cases  s    ]]1aAk$.C]D]]1aAk$.C]Db48,]]2r1c+eR2H]I]]2r1c+eR2H]Ib48,r-   c                    d} | j                   | }t        D ];  \  }}}|j                  ||      }|j                  |      }| j	                  ||       = | j	                  |j                         |j                  d             t        dd      }| j                  ddd|      }t        D ]  \  }}}|j                  ||      }|j                  |      }| j	                  ||       | j                  |j                  t               | j	                  |j                         t        d	             | j	                  |j                         d        | j	                  |j                         |j                  d             y )
Nrk  rU   r   r   rR   rY   rT   r   re   )r8  r   r   r   r)   r(  r)  r   r   r   rv   r   ry   	r*   r   r   r   r   r   r   r   tinfos	            r+   r  zTestTimeTZ.test_pickling  sU    t}}d#)7 	,%GYMM$.Eooe,GT7+	, 	*D,>,>q,AB %T84}}Q1U}3)7 	9%GYMM$.Eooe,GT7+!!'..2FGW..0)D2IJW^^-x8	9 	*D,>,>q,ABr-   c           	         g d}t        dd      }| j                  dddd|      }|D ]  }t        D ]  } ||d	
      }| j                  ||t	        |             | j                  |j                  t                | j                  |j                         t        d             | j                  |j                         d         y )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
(JJ0 K tRU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieubtR.s   cdatetime
time
U@ctest.datetimetester
PicklableFixedOffset
)R}(U_FixedOffset__offsetcdatetime
timedelta
JJ0 K RU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieubR.r   r   rR   rY   rT   rb  r   r-  r.  re   )
r   r8  r1  r)   r   r   r   rv   r   ry   )r*   r  r  r  r3  r   r   s          r+   r4  zTestTimeTZ.test_compat_unpickle  s    
. %T84==Aq&=? 	=D% =x8  (DJ?%%gnn6JK  !2!2!4i6MN  !18<=	=r-   c                 F   | j                   } |dt        dd            }| j                  |        |dt        dd            }| j                  |        |dt        dd            }| j                  |        |ddt        d	d            }| j                  |       y )
Nr   r   r   r   rR   i,  r   r   r  )r8  rb   r   )r*   rW  r   s      r+   test_more_boolzTestTimeTZ.test_more_bool  s    mm+dB/0+dB/0+c2./B{:r:;r-   c                    | j                   }t        dd      }t        t        d      d      }dddd	|g} || }| j                  ||j	                                d
}ddddd|ffD ]?  \  }}|d d  }	||	|<    ||	 }
 |j                  di ||i}| j                  |
|       |dz  }A | j                  |j                         d       |j	                  d       }| j                  |j                         | j                  |j                                |j	                  |      }| j                  ||       | j                  |j                  |j                          |d      }| j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       y )Nr  +1008re   -200r   rU   rQ   rW   r   r  r  r  r  r   r   r+  rr  r
  rs  r]  r  ru  r!   r8  rb   r   r)   r  ry   r  r   r0   r   r   r*   rW  z100zm200r   rX  rm  rB   rY  rZ  r  r[  base2base3s                 r+   r\  zTestTimeTZ.test_replace  s   mm3'Id3V<1aD!Dzt||~.(**/&.	0 
	LD&
 1gGGAJG}H$,,0$0CXs+FA
	 	/D)%,,'%,,.) T*u%dkk5<<0 1v*dll<*dll2>*dll3?*dllHr-   c                 
   | j                  ddd      }| j                  ddd      }| j                  ||       |j                  d       }| j                  ||       |j                  t        d d            }| j                  ||       |j                  t        dd            }| j	                  ||        G d dt
              } |       }|j                  |      }|j                  |      }| j                  |j                         t        d	
             | j                  |j                         t        d
             | j                  ||       |j                   |             }| j                  ||k         y )Nr   rU   rQ   r   r   r   c                       e Zd Zd Zd Zy)-TestTimeTZ.test_mixed_compare.<locals>.Variesc                 &    t        d      | _        y Nr  re   r  r2   s    r+   ro   z6TestTimeTZ.test_mixed_compare.<locals>.Varies.__init__*      '3r-   c                 X    | xj                   t        d      z  c_         | j                   S Nr   re   rm   r   r  s     r+   rv   z7TestTimeTZ.test_mixed_compare.<locals>.Varies.utcoffset,      y33{{"r-   Nr  r!   r-   r+   Variesr
  )      4#r-   r  r   re   r+  )	r8  r)   r  rb   r   r   rv   r   r   r*   r  r  r  vs        r+   rI  zTestTimeTZ.test_mixed_compare  sC   ]]1a#]]1a#R ZZtZ$R ZZ{44Z5R ZZ{1b1Z2B#	#V 	# HZZqZ!ZZqZ!2)>?2)>?R  ZZvxZ(R r-   c           	         ddg}d}d}d}d}|t        t        j                  ||||            z  }d t        j                  t        t        d            t        t        d	d
            g}|D ]s  }|D ]l  } | j                  |d|i}	|	j                         }
| j                  |
      5  | j                  j                  |
      }| j                  |	|       d d d        n u y # 1 sw Y   {xY w)Nr  )r   r   r   r&  )r  r   r7  )rR   r  )rW   r  )r   i r  rU   r   rY   r,  r   r   r  )r  	itertoolsproductr   r1   r   r8  r  r.  r  r)   )r*   time_exampleshhmmssusecr  ttupr  r   r  t_rts               r+   r  zTestTimeTZ.test_fromisoformat;  s     

 "i//BDABBIA./IAr:;= " 	.D .!DMM444{{}\\t\, .==66t<D$$Q-. .	.	.
. .s   *.C%%C.c           
      ^   | j                  dddd      }t        d      t        d      t        dd	
      t        ddd      t        dddd      g}||D cg c]  }d|z  	 c}z  }d t        j                  t        t        d            g}||D cg c]  }t        |       c}z  }|D ]g  }|j	                  |      }|j                         }| j                  |      5  | j                   j                  |      }||k(  sJ |       	 d d d        i y c c}w c c}w # 1 sw Y   ~xY w)Nr   r  r  r   rR   r   rU   rY   r,  r   r   r%  rW   r  rb  r'  r
  r   r   r  r  )	r*   	base_timer  rV  r  r  r   r  r  s	            r+   r  z&TestTimeTZ.test_fromisoformat_timezoneU  s)   MM"b"f5	 A	 2Ar*BB7Aq!&I	
	 		2"b2g22	IA./1 	95RHRL55 	'C!!!-A;;=D4( '}}2248Dy&$&y' '		' 3
 6' 's   DD%(D##D,	c           
      "   ddg}d t         j                  t        t        d            t        t        d            t        t        dd            g}g d	}t        |      D ]  \  }}|D ]  }|D ]  }|d
k(  rd|d   dz  z  }|dd |fz   } | j                  |dd|z    d|i}	|	j                  |      }
| j                  |
      5  | j                  j                  |
      }| j                  |	|       d d d           y # 1 sw Y   xY w)N)r  r6  r  rb  )r  r6  r  r   r	  r   rU   rY   r,  r   r  rP  rT  r
  r   r   r   r  r  r  )r*   
time_basesr  r  r  r  r  t_tupler  r   r  r  s               r+   r  z'TestTimeTZ.test_fromisoformat_timespecsn  s5   


 IB/0IA./IAr:;=
5	  	* 	2FB 
2) 	2G^++/72;$3F+G(")!B-3C2E"E%1r6(;ISIA;;;3D40 2#}}::4@((D12 2	2
2	22 2r  c                     g d}|D ]A  \  }} | j                   | }| j                   j                  |      }| j                  ||       C y )N))z
12:30:45.1)r   r  r  rW  )z12:30:45.12)r   r  r  i )z12:30:45.123)r   r  r  ix )z12:30:45.1234)r   r  r  i )z12:30:45.12345)r   r  r  i: )z12:30:45.123456r   r  r  rb  )z12:30:45.1234567r&  )z12:30:45.12345678r&  )r8  r  r)   )r*   strstime_str
time_compsr  r  s         r+   test_fromisoformat_fractionsz'TestTimeTZ.test_fromisoformat_fractions  sS    	
 %) 	/ Hj$t}}j1H]]00:FVX.		/r-   c                    g d| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  dd      fd	| j                  dd      fd
| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  dd      fd| j                  ddd      fd| j                  ddd      fd| j                  dddd      fd| j                  dddd      fd | j                  dddd!      fd"| j                  dddd!      fd#| j                  dddd$      fd%| j                  dddd$      fd&| j                  ddt        j                  '      fd(| j                  ddt        j                  '      fd)| j                  ddt        j                  '      fd*| j                  ddt        t        d+,            '      fd-| j                  ddt        t        d+d./            '      fd0| j                  ddt        t        d1,            '      fd2| j                  ddt        t        d1,            '      fd3| j                  ddt        t        dddd$4             '      f}|D ]M  \  }}| j	                  |5      5  | j                   j                  |      }| j                  ||       d d d        O y # 1 sw Y   ZxY w)6N0000r   z00:00000000rV  z000000.0z
00:00:00.0z
000000.000z00:00:00.000z000000.000000z00:00:00.0000001200r   z12:00120000z12:00:00z120000.0z
12:00:00.0z
120000.000z12:00:00.000z120000.000000z12:00:00.0000002359r   r   z23:59235959z23:59:59z235959.9i z
23:59:59.9z
235959.999rY  z23:59:59.999z235959.999999r&  z23:59:59.999999z	00:00:00Zr   z12:00:00+0000z12:00:00+00:00z00:00:00+05rR   r   z00:00:00+05:30r  r   z12:00:00-05:00r	  z12:00:00-0500z00:00:00,000-23:59:59.999999r'  r  )r8  r   r1   r   r.  r  r)   r  s        r+    test_fromisoformat_time_examplesz+TestTimeTZ.test_fromisoformat_time_examples  s   ,
T]]1a(),
dmmAq)*,
 t}}Q*+,
 q!,-	,

 q!,-,
 4==A./,
 4==A./,
 T]]1a01,
 dmmAq12,
 a 34,
 T]]2q)*,
 dmmB*+,
 t}}R+,,
 r1-.,
 r1-.,
  4==Q/0!,
" 4==Q/0#,
$ T]]2q12%,
& dmmB23',
( b! 45),
* T]]2r*++,
, dmmB+,-,
. t}}RR01/,
0 r2r231,
2 r2r6:;3,
4 4==RV<=5,
6 4==RV<=7,
8 T]]2r2v>?9,
: dmmBB?@;,
< b"b& AB=,
> $--1X\\-BC?,
@ dmmB(,,mGHA,
B t}}R8<<}HIC,
D ]]1a1C(D]EGE,
H ]]1aB1O(P]QSI,
L ]]2q)"2E)F]GIM,
P ]]2q)"2E)F]GIQ,
T ,]]1a)"bZ\kq2r1r(s]tvU,
\ $, 	3Ix	2 344Y?  23 3	33 3s   .O::P	c                     g d}|D ]V  }| j                  |      5  | j                  t              5  | j                  j	                  |       d d d        d d d        X y # 1 sw Y   xY w# 1 sw Y   oxY w)N)r   u   1200z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.123456+24:30z12:30:45.123456-24:30u   12：30：4512:30:45.123456az12:30:45.123456789au   12:30:45․123456z	12:30:45az12:30:45.123ar5  z12:30:45.123456-z12:30:45.123456+z12:30:45.123456+12:00:30ar+  r,  r  s      r+   r  z#TestTimeTZ.test_fromisoformat_fails  sw    
4   	9Gg. 9&&z2 9MM//899 9	99 99 9r.  c                     dd t        j                  d      g}|D ];  }| j                  t              5  | j                  j                  |       d d d        = y # 1 sw Y   HxY w)Ns   12:30:45z12:30:45r  r  s      r+   r  z-TestTimeTZ.test_fromisoformat_fails_typeerror  s`     $J(?@	! 	6H""9- 6++H56 6	66 6r  c                      G d d| j                         } |ddddt        j                        }|j                  |j	                               }| j                  ||       | j                  ||       y )Nc                       e Zd Zy)<TestTimeTZ.test_fromisoformat_subclass.<locals>.TimeSubclassNr  r!   r-   r+   rw  r9    r  r-   rw  r   r_  r  i r   )r8  r   r1   r  r  r)   r   )r*   rw  tsctsc_rts       r+   r  z&TestTimeTZ.test_fromisoformat_subclass  s`    	4== 	 2r2vhllC++CMMO<f%fl3r-   c           	           G  fdd j                         }ddddt        ddd	      f}  j                   | } ||i d
di} j                  |j                  |        j                  |j                  d        j                  |j
                  d        j                  |j                         |j                                 j                  |j                  d      |j                  |j                  z   dz
         y )Nc                   "    e Zd ZdZ fdZd Zy)*TestTimeTZ.test_subclass_timetz.<locals>.Cr}   c                     |j                         }|j                  d      } j                  j                  | g|i |}||_        |S rg  rh  rj  s         r+   r   z2TestTimeTZ.test_subclass_timetz.<locals>.C.__new__  rn  r-   c                 :    || j                   z   | j                  z   S r/   r}  rp  s     r+   rr  z2TestTimeTZ.test_subclass_timetz.<locals>.C.newmeth  r~  r-   Nrs  r2   s   r+   ru  r>    r  r-   ru  rW   rR   rY     r   r   r   r   rT   r}   rV   )
r8  rb   r)   rF   rt  r   rv   rr  ra  r  rw  s   `    r+   test_subclass_timetzzTestTimeTZ.test_subclass_timetz  s    	7 	7 !Q[ua88dmmT"&'1&*+A&#--/:R#((SZZ*?!*CDr-   N)rG   r_   r`   r   r8  r  r  r  r  r4  r  r\  rI  r  r  r  r*  r2  r  r  r  rB  r!   r-   r+   r  r  B  se    H$U<n-C, =D %IN!<.4'226/$23h9@64Er-   r  c                      e Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z ej0                  d      d        Z ej0                  d      d        Z ej0                  d      d        Zd Zd Zd Zy)TestDateTimeTZc           	         | j                  ddddddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d        y )Nr   rU   rQ   rW   rR   rY   rT   )
r8  r)   rZ  r[  r  ra  r  r  re  r   rt   s     r+   test_trivialzTestDateTimeTZ.test_trivial!  s    ]]1aAq!Q/!$1%#!$A&A&+D)r-   c                 "   | j                  dddt        dd            | j                  t        dddddd	t        d
d            | j                  k         | j                  k7         | j                  kD         | j	                         | j	                         | j                  dddddt        dd            | j                  dddddt        dd            | j	                         | j                  dddddt        dd            | j                  kD         | j                  dddddt        dd            | j                  k         | j                  dddddt        dd      d      | j                  kD         | j                  dddddt        dd      d      | j                  kD         | j                   j
                  | j                         | j	                         | j                  t              5  kD   d d d         G d dt              }| j                  ddd |             | j                         | j	                         | j                  ddd      | j	                          G d dt              }| j                  ddd |             | j                  dddt        dd            | j                  t        fd       y # 1 sw Y   xY w)Nr   r  r   r   r   r  r   r   r&  r  rU   rQ   r     r   )r   r  rl  c                       e Zd Zd Zy)4TestDateTimeTZ.test_even_more_compare.<locals>.Naivec                      y r/   r!   rt   s     r+   rv   z>TestDateTimeTZ.test_even_more_compare.<locals>.Naive.utcoffset_  r  r-   Nr   r!   r-   r+   NaiverJ  ^  s    0r-   rL  rR   rY   rT   c                       e Zd Zd Zy)4TestDateTimeTZ.test_even_more_compare.<locals>.Bogusc                     t        d      S )Nr]  re   r   rt   s     r+   rv   z>TestDateTimeTZ.test_even_more_compare.<locals>.Bogus.utcoffsetk  s     ..r-   Nr   r!   r-   r+   r  rN  j  s    /r-   r  c                       k(  S r/   r!   )r  r  s   r+   r@  z7TestDateTimeTZ.test_even_more_compare.<locals>.<lambda>o  s    bBh r-   )r8  rb   r   r   r)   r   r   r   r   r   r   )r*   rL  r  r  r  s      @@r+   test_even_more_comparez%TestDateTimeTZ.test_even_more_compare,  s   
 ]]1a;tR+@]A]]7BBB"-eR"8  : 	R b!R R R  ]]1b"b"[B5G]H]]1aAr+i2L]MR  ]]1b"b"[B5G]HR  ]]1b"b"[B5G]HR  ]]1b"b"[B5G"#  %R  ]]1b"b"[B5G'(  *R  ]]B#R y) 	G		1F 	1]]1a57]3B#R  ]]1a#R 	/F 	/ ]]1a57]3]]1a;q"+=]>*&67+	 	s   "LLc           
      F   d} | j                   | }t        D ];  \  }}}|j                  ||      }|j                  |      }| j	                  ||       = | j	                  |j                         |j                  d             t        dd      } | j                   |i d|i}| j                  dddt        ddd      	      }t        D ]  \  }}}|j                  ||      }|j                  |      }| j	                  ||       | j                  |j                  t               | j	                  |j                         t        d
             | j	                  |j                         d        | j	                  |j                         |j                  d             y )NrF  rU   r   r   r   r   r   r   r   re   )r8  r   r   r   r)   r(  r)  r   rb   r   r   rv   r   ry   r  s	            r+   r  zTestDateTimeTZ.test_picklingq  sx   )t}}d#)7 	,%GYMM$.Eooe,GT7+	, 	*D,>,>q,AB %T84t}}d8x&78--1aAr10E-F)7 	9%GYMM$.Eooe,GT7+!!'..2FGW..0)D2IJW^^-x8	9 	*D,>,>q,ABr-   c                    g d}d}t        dd      } | j                  |i d|i}|D ]  }t        D ]  } ||d      }| j                  ||       | j	                  |j
                  t                | j                  |j                         t        d             | j                  |j                         d         y )	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
(JJ0 K tRU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieubtR.s   cdatetime
datetime
U
;@ctest.datetimetester
PicklableFixedOffset
)R}(U_FixedOffset__offsetcdatetime
timedelta
JJ0 K RU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieubR.)r+  r   r,  r7  r   r   rb  r   r   r   r-  r.  re   )	r   r8  r1  r)   r   r   rv   r   ry   )r*   r  r   r  r  r3  r   r   s           r+   r4  z#TestDateTimeTZ.test_compat_unpickle  s    
2 /$T84 4==$<8U*;< 	=D% =x8  (3%%gnn6JK  !2!2!4i6MN  !18<=	=r-   c                 0   | j                  dddt        dd            }t        |       | j                  t        dddddd	t        d
d            }t        |       | j                  dddt        dd            }| j	                  t
        t        |       y )Nr   r  r   r   r   r  r   r   r&  r  rR   r  )r8  rb   r  r   r   r   r  s     r+   test_extreme_hashesz"TestDateTimeTZ.test_extreme_hashes  s     MM!Q+dB*?M@QMM'2r2r2v!,UB!7  9Q MM!Q+eR*@MA*dA.r-   c                    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|      }| j                  |j                  |       | j                  |j                  |       | j                  |j                  |       | j                  |j	                         t        d             | j                  |j	                         t        d             | j                  |j	                         t        d             | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       | j                  t        |      t        |             | j                  t        |      t        |             | j                  t        |      t        |             | j                  ||       | j                  ||       | j                  ||       | j                  t        |      d       | j                  t        |      d       | j                  t        |      d       d}| j                  t        |      |dz          | j                  t        |      |dz          | j                  t        |      |dz          y )Nr   r   r   r   rS  r  rY  rQ   r  rT   r  r   r   r  re   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))
rb   r   r)   r   rv   r   ry   r  r   r   )r*   r  r1   r  r  r  r  r  s           r+   r  zTestDateTimeTZ.test_zones  s;   $&!U#"e$dArAr#6dAr2r#6dAr2r#6C(C(C(4)@A1)=>2)>?e,e,e,b48,b48,b48,R R R R"=>R"=>R"=>-b1';#;<b1'<#<=b1'<#<=r-   c                     t        dd      }t        ddd      }t        dddd|	      }t        j                  ||      }| j                  |t        ddddddd|	             y 
NrS  r  rY  rQ   rW   r"  r  r  r   )rb   r   r   r   r  r)   )r*   r  r  r   ru   s        r+   r  zTestDateTimeTZ.test_combine  sh    "e$q!"b!T#.a$XdAq"b!T/24 	5r-   c           
      X   t        dd      }| j                  ddddddd|	      }| j                  |j                         t        ddd             | j                  |j	                         t	        dddd             | j                  |j                         t	        dddd|	             y rX  )rb   r8  r)   r   r   r  )r*   r  ru   s      r+   r  zTestDateTimeTZ.test_extract  s    "e$]]4Ar2q$s]CDq!$45DRD$9:d2r1d3&GHr-   c                    | j                   j                         t        dd      }j                         j	                  |      }| j                   j                  j                         |      | j                  j                  |       | j                  j                         |       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  z
  t        d	             | j                  z
  t        d	             t        d
dd      z   | j                  j                  |       z   }| j                  |j                  |       | j                  |       z
  }| j                  |j                  |       | j                  |       | j                  t        fd       | j                  z
         t        t        j                  dd      d      }j	                  |      | j                  j                  |       z
  }j!                         j!                         z
  z
  }| j                  ||       | j                  d
d
d
t        dd            }| j                  t"        ddddddt        dd            }	|	|z
  }
| j                  |
| j                   j$                  | j                   j&                  z
  t        d      z          t)        t*        d      }t)        t*        d      }|j	                  |      |	j	                  |      z
  | j                  | j                   j&                  | j                   j$                  z
         y )Niz	west 5:30r   c                       z
  S r/   r!   r   nowawares   r+   r@  z9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>      S8^ r-   c                       z
  S r/   r!   r\  s   r+   r@  z9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>      X^ r-   c                       z   S r/   r!   r\  s   r+   r@  z9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>  r^  r-   c                       z   S r/   r!   r\  s   r+   r@  z9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>  r`  r-   c                        z   S r/   r!   )r]  s   r+   r@  z9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>  s    X-@ r-   r   r   r   i.  )rN  rf   r   c                       z
  S r/   r!   )r*  nowawarepluss   r+   r@  z9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>
  s    U\-A r-   r  r]  randomtimezoner  r   r  r   r   r&  r   i>  re   r  r  )r8  r   rb   r   r  r  r   r0   r   r)   r  r   r   r   r   	randrangerv   r   r   r   r   r  )r*   tz55	timeawarenowawareplus2r  tzrr[  r  r   r   maxdifftzatzbr*  r   r]  re  s                @@@@r+   test_tz_aware_arithmeticz'TestDateTimeTZ.test_tz_aware_arithmetic  s'   mm!4-HHJ&&d&3	==((Y?hoot,*I6 	)%;<)%;< 	)%;<)%;<)%@A 	sIaL1H,il; 2DA%'hoot,(m**D1}5 e#dkk4(4()%AB0%8 &**5$79IJ#++3+7l))3/%  ))+h.@.@.BBUJh' mmAq!Ke,DmEmmGRRR#.ue#<  >)$--"3"3dmm6G6G"G"+F";#< 	= tS!tS!3'#++S+*AA 1 1DMM4E4E EFr-   c                    | j                   j                  } |       }t        dd      } ||      } ||      }| j                  |j                  |j                         | j                  |j                         t        d             | j                  t        |d       | j                  t        |d       | j                  t        ||       | j                  t        |||       t        dd	d      }t        t        d
d      dd      t        t        d
d      d      fD ]  }t        d      D ]  }t        j                  |      }	| j                  |	j                  |       | j                  t              5  t        j                         j!                  |      }
d d d        
j#                  |      }t%        |	|z
        t        d      k  s  | j'                  d        y # 1 sw Y   MxY w)Nr}   42r  re   r   r   r  r   r1   r  r  r   weirdtzrQ   r  r   z0utcnow(), now(tz), or astimezone() may be broken)r8  r   rb   r0   r   r)   rv   r   r   r   r   rg  r   r[  r\  r  r  r  rf  fail)r*   methrX  off42anotheragainr1   rs  r  r   r  now2s               r+   test_tzinfo_nowzTestDateTimeTZ.test_tzinfo_now)  s   }}  vB%u+gnnell3**,i.CD)T2.)T"5)T7)T5%8
 !UA&#IB$CYPQR R!@)LO 	NGq Nll7+cjj'2%%&89 C%__.66c6BFC((1sTz?Yr%::N 		LM	N
C Cs   =%G..G7c                 j   dd l }| j                  j                  } |j                          } ||      }t        dd      } |||      } |||      }| j	                  |j
                  |j
                         | j                  |j                         t        d             | j                  t        ||d       | j                  t        ||d       | j                  t        |||       | j                  t        ||||       | j                  t        |       d	}| j                  t              5  t        j                  |      }	d d d        t        d
d      }
t        |
dd      }	|
z   }t        j                  ||      }| j                  ||j                  d              y # 1 sw Y   axY w)Nr   r}   rq  r  re   r   r   rr  r  i'   r   r   )r   r8  r  rb   r0   r   r)   rv   r   r   r   r[  r\  r   r]  r  )r*   r   ru  r  rX  rv  rw  rx  r  utcdatetimerv   r   r  r[  s                 r+   test_tzinfo_fromtimestampz(TestDateTimeTZ.test_tzinfo_fromtimestampO  sw   }}**TYY[BxB%r5/RE"gnnell3**,i.CD)T2r2)T2b9)T2U;)T2ue<)T* 	01 	?"33I>K	? C4	D!,*$$Y33;;d;#;<	? 	?s   3F))F2c                    | j                   j                  }| j                  t              5   |       }d d d        t	        dd      }| j                  t        ||       | j                  t        ||       y # 1 sw Y   ExY w)Nr}   rq  r   )r8  r  r[  r\  rb   r   r   )r*   ru  rX  rv  s       r+   test_tzinfo_utcnowz!TestDateTimeTZ.test_tzinfo_utcnows  sq    }}##01 	6D	 B%)T51)T%8	 	s   A88Bc                    dd l }| j                  j                  } |j                          }| j                  t              5   ||      }d d d        t        dd      }t        j                  t              5  t        j                  dt               | j                  t        |||       | j                  t        |||       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r}   rq  )categoryignorer   )r   r8  r]  r[  r\  rb   warningscatch_warningssimplefilterr   r   )r*   r   ru  r  rX  rv  s         r+   test_tzinfo_utcfromtimestampz+TestDateTimeTZ.test_tzinfo_utcfromtimestamp~  s    }}--TYY[01 	8D	 B%$$.@A 	A!!(5GHir59ir%@	A 	A	 	
	A 	As   	C8ACCC#c                     G d dt               }| j                  }dD ](  \  }} |ddddddd ||      	      }|j                         }| j                  d|j                         | j                  d|j
                         | j                  d|j                         | j                  d|j                         | j                  d|j                         | j                  d|j                         | j                  d
|j                         | j                  d|j                         | j                  ||j                         + | j                  t         |ddd |d      	      j                         | j                   |ddd |d      	      j                         j                  d       | j                   |ddd |d      	      j                         j                  d       | j                  t         |ddd |d      	      j                         | j                  t         |ddd |d      	      j                         y )Nc                       e Zd Zd Zd Zy)1TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DSTc                 J    t        |t              rt        |      }|| _        y rd   rg   rh   r   dstvaluer*   r  s     r+   ro   z:TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.__init__      h,(:H (r-   c                     | j                   S r/   r  rt   s     r+   r{   z5TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.dst      }}$r-   NrG   r_   r`   ro   r{   r!   r-   r+   DSTr    s    )%r-   r  ))r   )r  r   )r   r   )Nr
  r   r   r7  r  r  r   r   r  r  r  r]  r  )r   r8  r  r)   r  r  r  r  r  r   r!  r"  r#  r   r   r   )r*   r  rW  r  flagr  r   s          r+   test_tzinfo_timetuplez$TestDateTimeTZ.test_tzinfo_timetuple  s   	%& 	% mmC 	/NHdAq!RRCMBAAQ		*Q)Q		*R+R*R*Q		*Q		*T1::.	/ 	)SAqS%B%L%LM 	Qq3t95??AJJANQq3u:6@@BKKQO 	*c!AaD	&B&L&LM*c!AaE
&C&M&MNr-   c                 N	    G d dt               | j                  }| j                  t         |ddd d            j                          G fdd      }dD ]  } |dd	d
dddd |d|            }|j                         }| j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         | j                  d|j                         | j                  d|j                         | j                  |j                  |j                          | j                  |j#                         |j$                         | j                  |j'                         t)        ddd      j'                         z
  dz   |j*                         | j                  d|j,                           |dd	d
dddd      }|j                         }| j                  |d d |j/                         d d        | j                  d|j,                          G d d      } |dd	d
dddd |             }|j                         }| j                  |d d |j/                         d d        | j                  d|j,                          G d d      } |dd	d
dddd |             }| j                  t0        |j
                          |ddddddd      }t2        j4                  t2        j6                  t2        j8                  fD ]e  }|j;                  |      }	| j                  |	j                         d d |	j=                  t2        j6                        j/                         d d        g  |t>        ddddd |d            }
| j                  t@        |
j
                          |tB        ddd d!dd" |d#            }| j                  t@        |j
                         |j4                  j;                  t3        tD                    }
| j                  t@        |
j
                         |j8                  j;                  t3        tD                     }| j                  t@        |j
                         y )$Nc                       e Zd ZddZd Zy)-TestDateTimeTZ.test_utctimetuple.<locals>.DSTc                 J    t        |t              rt        |      }|| _        y rd   r  r  s     r+   ro   z6TestDateTimeTZ.test_utctimetuple.<locals>.DST.__init__  r  r-   c                     | j                   S r/   r  rt   s     r+   r{   z1TestDateTimeTZ.test_utctimetuple.<locals>.DST.dst  r  r-   N)r   r  r!   r-   r+   r  r    s    )%r-   r  r   r   r   c                        e Zd Zd fd	Zd Zy).TestDateTimeTZ.test_utctimetuple.<locals>.UOFSNc                 L    j                  | |       t        |      | _        y rd   )ro   r   uofs)r*   r  dofsr  s      r+   ro   z7TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.__init__  s    T4(%d3	r-   c                     | j                   S r/   )r  rt   s     r+   rv   z8TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.utcoffset  s    yy r-   r/   r  )r  s   r+   UOFSr    s    4!r-   r  )r  r  r   NrU   rQ   r   r7  r  r  ir   r  r
  c                       e Zd Zd Zy).TestDateTimeTZ.test_utctimetuple.<locals>.NOFSc                      y r/   r!   rt   s     r+   rv   z8TestDateTimeTZ.test_utctimetuple.<locals>.NOFS.utcoffset  s    r-   Nr   r!   r-   r+   NOFSr    s    r-   r  c                       e Zd Zd Zy).TestDateTimeTZ.test_utctimetuple.<locals>.BOFSc                      y)Nr   r!   rt   s     r+   rv   z8TestDateTimeTZ.test_utctimetuple.<locals>.BOFS.utcoffset  s    r-   Nr   r!   r-   r+   BOFSr    s    r-   r  r   r_  r  r   i+ r  r  r   r  r   r   r&  r  )#r   r8  r   r   rv   utctimetupler)   rZ  r  r[  r  r  r  r  r  r  r   r  r!  rc  r   r"  r#  r  r   r   r   r1   r   r  r  r   r  r   r  )r*   rW  r  r  r  r   r  r  r   dtzr  huger  s               @r+   test_utctimetuplez TestDateTimeTZ.test_utctimetuple  s   	%& 	% mm-aAc!f5??	A	!3 	! ) 	,HAq!RRDh4GHA AQVVQYY/QWWahh/QUUAII.R+R*QXXqxx0QYY[!))4Q[[]T!Q]-D-D-FFJYY( Q

+	," 1aRR(NN3Bs!34AJJ'	3 	 1aRR7NN3Bs!34AJJ'	3 	 1aRR7)Q^^4 b"b"b&1<<x||< 	LB))2)&CS--/4 ^^HLL9CCEcrJL	L 7Aq!Q4:>-):):;7BBBtE{K-):):;wwhv&67-):):;wwhw&78-):):;r-   c                    t        dd      }t        dd      }t        dd      }t        d d      }| j                  }d}d ||||fD ]  }d	D ]  } |d
ddddd||      }	d|xr dxs dz   }
|d uxr |	j                         xs d}|
|z   }|	j                         }| j	                  ||dz   |z          | j	                  ||	j                  d             | j	                  |	j                  d      |dz   |z          | j	                  |	j                  d      |dz   |z          | j	                  t        |	      |dz   |z            y )Nr   r	     z+03:40iz-03:51r   z
0001-02-03)r   iy r   rU   rQ   rW   rR   r   r   z04:05:59z.987001r  ku   ሴr  )rb   r8  ry   r  r)   r   )r*   rz  plusminusunknownrW  datestrofsrl  r  timestrofsstrtailstrisos                 r+   test_tzinfo_isoformatz$TestDateTimeTZ.test_tzinfo_isoformat  s[   1h'3)D(+dB'mmtUG3 	BC 
B1aAr2c:$(8y(>B?D7QXXZ=2!F*kkm  gmg&=>  akk#&67  S!17S=73JK  X!6(8JW8TU  Q3)@A
B	Br-   c           	      "   | j                   }t        dd      }t        t        d      d      }dddd	d
dd|g} || }| j                  ||j	                                d}dddddddd|ffD ]?  \  }}|d d  }	||	|<    ||	 }
 |j                  di ||i}| j                  |
|       |dz  }A | j                  |j                         d       |j	                  d       }| j                  |j                         | j                  |j                                |j	                  |      }| j                  ||       | j                  |j                  |j                          |ddd      }| j                  t        |j                  d       y )Nr  r  r   re   r  r   rU   rQ   rW   rR   rY   rT   r   rQ  rR  rS  r  r  r  r  r   r   rN  ry  r|  rT  r!   r  r  s                 r+   r\  zTestDateTimeTZ.test_replace  s   mm3'Id3V<1aAq!T*Dzt||~.()'(**/&.0 	LD& 1gGGAJG}H$,,0$0CXs+FA	  	/D)%,,'%,,.) T*u%dkk5<<0 4B*dll>r-   c                    t        d d      }t        dd      }t        t        d       d      }| j                  j                  |      }| j	                  |j
                  |       | j                  t        |j                  |       |j                  |j
                        }| j	                  |j
                  |       | j                  |j                         |j                                | j                  |j                         |j                                |j                  |      }| j	                  |j
                  |       | j                  |j                         t        d             ||j                         z
  }||j                  |      z  }|j                  |	      }| j                  |j                         |j                                | j                  |j                         |j                                | j                  |j                         |j                                | j	                  |j
                  |j
                         | j                  ||       y )
NNoner  44rR   r   m300r  r	  r   )rb   r   r8  r   r0   r   r   r   r  r)   r   r   rv   r  r  )r*   fnonef44mfm5hru   r  r[  r  s           r+   test_more_astimezonez#TestDateTimeTZ.test_more_astimezone=  s   D&)2t$IA..7]]$'bii&*bmmU;MM"))$ahh%2779-2779- mmD!cjj$')"*=>&DNN2&&##4#0X]]_5X]]_5x'89cjj(//2h'r-   r   c                     | j                   j                  t        j                        }| j	                  |j                  d       |       | j	                  |j                         |       y r/   )r8  r   r   r1   r)   r  rt   s     r+   test_astimezone_default_utcz*TestDateTimeTZ.test_astimezone_default_utcZ  sI    ]]x||,t,b1"-r-   r_  c                    | j                  dddddt        j                        }|j                         }| j	                  ||       | j	                  |j                  d      d       | j                  dddd	dt        j                        }|j                         }| j	                  ||       | j	                  |j                  d      d
       y )Nr`  r   rW   rY   r  r   r  z	-0500 ESTrR   z	-0400 EDT)r8  r   r1   r  r)   r  )r*   ru   r  s      r+   test_astimezone_default_easternz.TestDateTimeTZ.test_astimezone_default_easternb  s    ]]4Q2hll]CU#0+>]]4Q2hll]CU#0+>r-   c                     t        ddddt        j                        }|j                         }|j                         }| j	                  |j
                  |j
                         y )Nr+  r   r   rR   r   )r   r   r1   r  r)   r   )r*   r   r   r  s       r+   !test_astimezone_default_near_foldz0TestDateTimeTZ.test_astimezone_default_near_foldm  sH     T2q!HLL9LLNLLN188,r-   c                    | j                   } G d dt              } |ddddddd	 |       
      }|j                  d      }|j                  d      }|j                  d      }|||fD ]F  }|||fD ]<  }||z
  }	t        |j                  |j                  z
        }
| j                  |	|
       > H  |ddddddd	      }|j                  d |             }|j                  d |             }|j                  d |             }|||fD ]z  }|||fD ]p  }||z
  }	||u s||u r||u s||u rt        d      }
n;||cxu r|u rn nt        d      }
n#||u rt        d      }
n||u sJ t        d      }
| j                  |	|
       r | y )Nc                       e Zd Zd Zy)BTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffsetc                 d    |j                   dk  rt        |j                         S t        d      S r  r  r  s     r+   rv   zLTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffset.utcoffset{  r  r-   Nr   r!   r-   r+   r  r  z  r  r-   r  r  r  r   r   r   r  r_  r   rQ   rs  re   r  r   irI  )r8  r   r  r   r  r)   )r*   rW  r  rX  r  r  rk  r  rg  r[  r  s              r+   test_aware_subtractz"TestDateTimeTZ.test_aware_subtractu  s   mm	1V 	1 1aRR4J4LM\\\#\\\#\\\$R 	0ARZ 0!e$QXX-@A  h/0	0 1aRR,\\+A+C\D\\+A+C\D\\,B,D\ER 	0ARZ 0!eGqBwQ"WR(|H!\r\(|H"W(;H7N7(;H  h/0	0r-   c           	         t        ddddddd      }t        ddddddd      }| j                  ||       |j                  d       }| j                  ||       |j                  t        d d	            }| j                  ||       |j                  t        d
d	            }| j	                  ||        G d dt
              } |       }|j                  |      }|j                  |      }| j                  |j                         t        d             | j                  |j                         t        d             | j                  ||       |j                   |             }| j                  ||k         y )Nr   rU   rQ   rW   rR   rY   rT   r   r   r   c                       e Zd Zd Zd Zy)1TestDateTimeTZ.test_mixed_compare.<locals>.Variesc                 &    t        d      | _        y r  r  r2   s    r+   ro   z:TestDateTimeTZ.test_mixed_compare.<locals>.Varies.__init__  r  r-   c                 X    | xj                   t        d      z  c_         | j                   S r  r  r  s     r+   rv   z;TestDateTimeTZ.test_mixed_compare.<locals>.Varies.utcoffset  r  r-   Nr  r!   r-   r+   r  r    r  r-   r  r   re   r+  )	r   r)   r  rb   r   r   rv   r   r   r  s        r+   rI  z!TestDateTimeTZ.test_mixed_compare  sK   aAq!Q*aAq!Q*R ZZtZ$R ZZ{44Z5R ZZ{1b1Z2B#	#V 	# HZZqZ!ZZqZ!2)>?2)>?R  ZZvxZ(R r-   c                 
     G  fdd j                         }ddddddd	t        d
dd      f}  j                   | } ||i ddi} j                  |j                  |        j                  |j                  d        j                  |j
                  d        j                  |j                         |j                                 j                  |j                  d      |j                  |j                  z   dz
         y )Nc                   "    e Zd ZdZ fdZd Zy)2TestDateTimeTZ.test_subclass_datetimetz.<locals>.Cr}   c                     |j                         }|j                  d      } j                  j                  | g|i |}||_        |S rg  rh  rj  s         r+   r   z:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.__new__  rn  r-   c                 :    || j                   z   | j                  z   S r/   )ra  rZ  rp  s     r+   rr  z:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.newmeth  s    tyy(49944r-   Nrs  r2   s   r+   ru  r    s    I5r-   ru  rY  r   r  rW   rR   rY   rA  r   r   r   r   rT   r}   rV   )
r8  rb   r)   rF   rt  r   rv   rr  ra  rZ  rw  s   `    r+   test_subclass_datetimetzz'TestDateTimeTZ.test_subclass_datetimetz  s    	5 	5 RQ1c;tUA+FFdmmT"&'1&*+A&#--/:R#((SXX*=*ABr-   N)rG   r_   r`   r   r8  rF  rQ  r  r4  rU  r  r  r  ro  rz  r~  r  r  r  r  r  r\  r  r   r8  r  r  r  r  rI  r  r!   r-   r+   rD  rD    s    H	*C8JC.#=J/><5I?GB$NL"=H	9A"OHN<`B*%?N(: W.  . W34? 5? W34- 5-*0X!<Cr-   rD  c                 L    d| j                         z
  }|r| t        |      z  } | S )NrY   )r  r   )ru   
days_to_gos     r+   first_sunday_on_or_afterr    s)    RZZ\!J
i
##Ir-   re   r   rQ  rW   rU   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)
USTimeZonec                 P    t        |      | _        || _        || _        || _        y Nr   r   	stdoffsetreprnamestdnamedstnamer*   r   r  r  r  s        r+   ro   zUSTimeZone.__init__  #    "/ r-   c                     | j                   S r/   r  r2   s    r+   rr   zUSTimeZone.__repr__  rw   r-   c                 T    | j                  |      r| j                  S | j                  S r/   r{   r  r  rt   s     r+   ry   zUSTimeZone.tzname  !    88B<<<<<r-   c                 >    | j                   | j                  |      z   S r/   r  r{   rt   s     r+   rv   zUSTimeZone.utcoffset      ~~,,r-   c                    ||j                   t        S |j                   | u sJ t        t        j	                  |j
                              }|j                         dk(  r|j                  dk(  r|j                  dk  sJ t        t        j	                  |j
                              }|j                         dk(  r|j                  dk(  r|j                  dk\  sJ ||j	                  d       cxk  r
|k  rt        S  t        S t        S NrT  rY   rW   rT   r   r  r   )r   r   r  DSTSTARTr  rZ  r  r[  r  DSTENDr  r*   ru   rq  ends       r+   r{   zUSTimeZone.dst  s    :* KyyD    ))9)9rww)9)GH}}!#q(8UYY!^KK 'v~~277~'CD{{}!cii2o#''R-GG BJJdJ+1c1K 2 K4Kr-   NrG   r_   r`   ro   rr   ry   rv   r{   r!   r-   r+   r  r    s     -r-   r  r	  r  r   r  rZ   CentralCSTCDTrV   MountainMSTMDTiPacificPSTPDTr   i0UTCfakec                   f    e Zd Z edddd      Z edddd      ZeZd Zd	 Zd
 Z	d Z
d Zd Zd Zy)TestTimezoneConversionsrY  rW   rT   rU   r   r,  r   c                    | j                  |j                         t               | j                  |j                  |      |       |j                  |      }|j                  |      }|j	                         |j	                         k(  r}|j
                  dk(  rn| j                  |t        z   |       | j                  |j                         t               | j                  |j                  |      |j                  |             n| j                  ||       |t        z   }|j                  |      }	|j	                         |j	                         k(  rn|j
                  dk(  r_| j                  |	|j                  d             |t        z  }|j                  |      }	| j                  |	|j                  d             y | j                  |	|z
  t               y )NrU   r   r   rr  )r)   r{   r  r  r   ra  r   r  )
r*   ru   r   r1   dstondstoffasutcthere_and_backnexthour_utcnexthour_tzs
             r+   checkinsidez#TestTimezoneConversions.checkinside(  s|   4( 	r*B/c"))"- 779

$A ^d2B7 ^//148^66s;]]3/1 R0 t|"--b1779%"''Q, ["**!**<=D L&11"5K["**!**<=[2-t4r-   c                     | j                  |j                         t               | j                  |j                  |      |       |j                  |      }|j                  |      }| j                  ||       y r/   )r)   r{   r   r  )r*   ru   r   r1   r  r	  s         r+   checkoutsidez$TestTimezoneConversions.checkoutside\  sc    4( 	r*B/ c"))"-^,r-   c           	         | j                   j                  |      }| j                  j                  |      }t        d      t        t
        t        d      t        d      fD ]p  }| j                  |||||       ||z   ||z
  fD ]  }| j                  |||||        | j                  |||       ||z
  ||z   fD ]  }| j                  |||        r y )Nr   r  rR  r   re   r   )r  r  r  r   DAYr  r  r  )r*   r   r1   r  r  r*  duringoutsides           r+   convert_between_tz_and_utcz2TestTimezoneConversions.convert_between_tz_and_utcg  s    

""""- $$B$/b)*Q/	1 	4E UBUF;%-%7 A  S%@A fb#. 5=&5.8 4!!'2s34	4r-   c                 <   | j                  t        t               | j                  t        t               | j                  t        t               | j                  t        t               | j                  t        t               | j                  t        t               y r/   )r  r  utc_realr  utc_faker2   s    r+   	test_easyz!TestTimezoneConversions.test_easy}  sd    '':'':'':'': 	''9''9r-   c           	          | j                   t        d      z
  }t        ddd      }|j                  |      }| j                   j                  d      }|j	                  t
              j                  d       }| j                  ||       | j                   j                  d	t        
      }| j                   j                  d      }|j	                  t
              j                  d       }| j                  ||       t        t        fD ]  }t
        t        fD ]  }| j                  t        d      z
  }||j                  d       z  }||j                  d       z   }	|	j                  |      }
dD ]  }| j                  j                  |      }dD ]Y  }|j                  |      }|
j                  |      }	|	j	                  |      }| j                  |j                  d       |       [ |
t        z  }
   y )NrW   r   iz-0900r   r   rQ   rr  rY   ra  r   r   rU   )r   r   r   rU   r   r  r   rs  )r  r   rb   r  r  r  r)   r  r  r  r  rv   r  )r*   fourbackninewestr  r[  sixutcr1   r   first_std_hourr  	asutcbasetzhourexpectedbaser  astzs                  r+   test_trickyz#TestTimezoneConversions.test_tricky  s   ::	 22ugq1##8#4 ::%%1%-!!'*22$2?3' ##8#< ::%%1%-(000=3' X% 	&Cw& &!%yq/A!A",,t"44&t)<< "MMM5	* &F#';;#6#6F#6#CL"+ N#/#7#7v#7#F ) 1 1 1 @$//3((T)BHM	N
 %I&&	&r-   c                     G d dt               }| j                  j                         j                  t              }|j                   |               G d d|      }| j                  t        |j
                   |               G d d|      }| j                  dd	d	      j                  t              }| j                  t        |j
                   |              y )
Nc                       e Zd Zd Zd Zy)2TestTimezoneConversions.test_bogus_dst.<locals>.okc                     t         S r/   r  rt   s     r+   rv   z<TestTimezoneConversions.test_bogus_dst.<locals>.ok.utcoffset  s    D[r-   c                     t         S r/   r(  rt   s     r+   r{   z6TestTimezoneConversions.test_bogus_dst.<locals>.ok.dst  s    d{r-   Nr  r!   r-   r+   okr&    s    0*r-   r*  r   c                       e Zd Zd Zy)5TestTimezoneConversions.test_bogus_dst.<locals>.notokc                      y r/   r!   rt   s     r+   r{   z9TestTimezoneConversions.test_bogus_dst.<locals>.notok.dst  r  r-   NrG   r_   r`   r{   r!   r-   r+   notokr,    s    *r-   r/  c                       e Zd Zd Zy)<TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notokc                 4    |j                   dk(  ry dt        z  S )NrN  r   )rZ  r  rt   s     r+   r{   z@TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notok.dst  s    77d?d7Nr-   Nr.  r!   r-   r+   tricky_notokr1    s    #r-   r3  r|  r   )r   r8  r   r  r  r  r   r   )r*   r*  r   r/  r3  ru   s         r+   test_bogus_dstz&TestTimezoneConversions.test_bogus_dst  s    	+ 	+ mm!))):rt	+B 	+*cnneg>	#2 	# ]]4A&..h.?*bmm\^Dr-   c                 .   | j                  t        t        j                         t	        j
                  t              }| j                  t        t        j                  |       |j                  t              }t        j                  |      }| j                  |j                  t               | j                  t        t        j                  ||       | j                  t        t        j                  t        j                                 G d dt              } |dddd      }| j                  j                  d	t        
      }|j                  |      }dD ]  }|j                  |      }|dk(  r|t        d      z  }t        j                  |      }	| j                  ||	       ||j                   z   }|j                  |      }	| j                  ||	       |j                  t              j#                  |      }	| j                  ||	       |t$        z  }|t$        z  } | j&                  j                  d	t        
      }|j                  |      }dD ]  }|j                  |      }t        j                  |      }	| j                  ||	       ||j                   z   }|j                  |      }	| j                  ||	       |j                  t              j#                  |      }	| j                  ||	       |t$        z  }|t$        z  } y )Nr  r   c                       e Zd Zd Zy)<TestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZonec                      || j                   z   S r/   )r  rt   s     r+   r   zDTestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZone.fromutc  s    DNN**r-   NrG   r_   r`   r   r!   r-   r+   FauxUSTimeZoner7    s    +r-   r:  r	  FEasternFESTFEDTrW   r  )r   r   r   rQ   rW   rR   rr  r   r   rQ  )r   r   r   rU   rQ   rW   )r   r   r  r   r   r   r  r   r  r)   r   r   r]  r  r  r   r  r  r  r  )
r*   r   enowr:  r;  rq  fstartwallr  r[  s
             r+   r  z$TestTimezoneConversions.test_fromutc  s   )W__5llh'*goos;kkk)s#g.)W__c3?)W__djjlC	+Z 	+ #2zFFC 

""'":h/% 	D}}$}/HrzI1--//%(CXs+ 2 22H""6*CXs+ ...1<<XFCXs+TMEdNF!	& ##7#;h/$ 	D}}$}/H//%(CXs+ 2 22H""6*CXs+ ...1<<XFCXs+TMEdNF	r-   N)rG   r_   r`   r   r  r  r8  r  r  r  r  r#  r4  r  r!   r-   r+   r  r     sM    T1a#EdBA&FH15h	-4,
:00&fE6:r-   r  c                       e Zd Zd Zd Zd Zy)Oddballsc                    t        j                         t        j                  t	                     | j                  k7         | j                  k7         | j                  k(         | j                  k(         | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  j                        d	       j                  d
z   dz  d
z   }j                  |      }| j                  j                  |      d       t        j                  j                  j                        }| j                  |       | j                  |       t!        j                  j                  j                  ddd      }| j                  |       | j                  |       y )Nc                       k  S r/   r!   as_dateas_datetimes   r+   r@  z+Oddballs.test_bug_1028306.<locals>.<lambda>.      W{-B r-   c                       k  S r/   r!   rE  s   r+   r@  z+Oddballs.test_bug_1028306.<locals>.<lambda>/      [7-B r-   c                       k  S r/   r!   rE  s   r+   r@  z+Oddballs.test_bug_1028306.<locals>.<lambda>0      W-C r-   c                       k  S r/   r!   rE  s   r+   r@  z+Oddballs.test_bug_1028306.<locals>.<lambda>1      [G-C r-   c                       kD  S r/   r!   rE  s   r+   r@  z+Oddballs.test_bug_1028306.<locals>.<lambda>2  rH  r-   c                       kD  S r/   r!   rE  s   r+   r@  z+Oddballs.test_bug_1028306.<locals>.<lambda>3  rJ  r-   c                       k\  S r/   r!   rE  s   r+   r@  z+Oddballs.test_bug_1028306.<locals>.<lambda>4  rL  r-   c                       k\  S r/   r!   rE  s   r+   r@  z+Oddballs.test_bug_1028306.<locals>.<lambda>5  rN  r-   Tr   r7  )r  Fr   )r   r]  r   r  r   r   r   r   r   r)   __eq__r  r  rR  rZ  r[  r  )r*   different_dayas_differentdate_scdatetime_scrF  rG  s        @@r+   test_bug_1028306zOddballs.test_bug_1028306%  s    **,&&w7;./w./K/0/0)%BC)%BC)%CD)%CD)%BC)%BC)%CD)%CD 	4d; qB.2"***>5u= w||W]]GKKH'*'* '{'7'79J9J'.{{Aq!=k2k2r-   c           	      r   | j                  t              5  t        j                         }d d d        t	        j
                         t               t               t               t        t                     fD ]'  }| j                  t              5  d|_        d d d        ) y # 1 sw Y   wxY w# 1 sw Y   @xY wr  )r[  r\  r   r  r   r]  r   r   r   r   r   AttributeErrorr    )r*   r  r  s      r+   test_extra_attributeszOddballs.test_extra_attributesJ  s    01 	'__&F	'**,&+(9;') 	A "">2  		' 	' s   B!B-!B*-B6	c                     G d d      } G d dt               }d |d      t        j                  d      t        j                  d       |d       |d      d	fD ]  }| j                  t        t
        |dddddd	       | j                  t        t
        d|ddddd	       | j                  t        t
        dd|dddd	       | j                  t        t
        ddd|ddd	       | j                  t        t
        dddd|dd	       | j                  t        t
        ddddd|d	       | j                  t        t
        dddddd|	        y )
Nc                       e Zd Zd Zd Zy)-Oddballs.test_check_arg_types.<locals>.Numberc                     || _         y r/   value)r*   ra  s     r+   ro   z6Oddballs.test_check_arg_types.<locals>.Number.__init__X  s	    "
r-   c                     | j                   S r/   r`  r2   s    r+   __int__z5Oddballs.test_check_arg_types.<locals>.Number.__int__Z  s    zz!r-   N)rG   r_   r`   ro   rc  r!   r-   r+   Numberr^  W  s    #"r-   rd  c                       e Zd Zy),Oddballs.test_check_arg_types.<locals>.FloatNr  r!   r-   r+   Floatrf  ]  r  r-   rg  g      $@g%@r   z10.910)r(  decimalDecimalr   r   r   )r*   rd  rg  xxs       r+   test_check_arg_typeszOddballs.test_check_arg_typesV  s1   	" 	"	E 	 t??2&(?":vd| 
	OB i2r2r2r2Ni2r2r2r2Ni2r2r2r2Ni2r2r2r2Ni2r2r2r2Ni2r2r2r2Ni2r2r2r2N
	Or-   N)rG   r_   r`   rX  r[  rl  r!   r-   r+   rB  rB  #  s    #3J
Or-   rB  c                       e Zd Zd Zy)tzinfo2c                    t        |t              st        d      |j                  | urt	        d      |j                  d      j                         }|j                  d      j                         }|||j                         t        ||k(  r||z   }|j                         }||k(  r|S ||fD ]G  }||z   }|j                         |k(  r|c S |j                  d      }|j                         |k(  sE|c S  t	        d      )*datetime in UTC -> datetime in local time.&fromutc() requires a datetime argumentdt.tzinfo is not selfr   r3  r   zNo suitable local time found)rg   r   r   r   r   r  rv   r{   )r*   ru   off0off1ldtoffs         r+   r   ztzinfo2.fromutct  s	    "h'DEE99D 455 zzqz!++-zzqz!++-<4<2668+;4<t)C==?Dt|
 $< 	Cs(C}}#%
++1+%C}}#%
	 788r-   Nr9  r!   r-   r+   rn  rn  r  s    9r-   rn  c                   *    e Zd Zd Zd Zd Zd Zd Zy)USTimeZone2c                 P    t        |      | _        || _        || _        || _        y r  r  r  s        r+   ro   zUSTimeZone2.__init__  r  r-   c                     | j                   S r/   r  r2   s    r+   rr   zUSTimeZone2.__repr__  rw   r-   c                 T    | j                  |      r| j                  S | j                  S r/   r  rt   s     r+   ry   zUSTimeZone2.tzname  r  r-   c                 >    | j                   | j                  |      z   S r/   r  rt   s     r+   rv   zUSTimeZone2.utcoffset  r  r-   c                    ||j                   t        S |j                   | u sJ t        t        j	                  |j
                              }|j                         dk(  r|j                  dk(  r|j                  dk  sJ t        t        j	                  |j
                              }|j                         dk(  r|j                  dk(  r|j                  dk\  sJ |j	                  d       }|t        z   |cxk  r
|k  rt        S  ||cxk  r|t        z   k  rn n|j                  rt        S t        S ||cxk  r|t        z   k  r n t        S |j                  rt        S t        S t        S r  )r   r   r  r  r  rZ  r  r[  r  r  r  r4  r  s       r+   r{   zUSTimeZone2.dst  s6   :* KyyD    ))9)9rww)9)GH}}!#q(8UYY!^KK 'v~~277~'CD{{}!cii2o#''R-GG ZZtZ$4<2##K $ B#t#774,,b'54<'
 K 774,, Kr-   Nr  r!   r-   r+   rx  rx    s     -r-   rx  Eastern2Central2	Mountain2Pacific2c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)Europe_Vilnius_1941c                 B    t        dddd|       t        dddd|       gS )N  rY   r   r   r   r  r   r2   s    r+   	_utc_foldzEurope_Vilnius_1941._utc_fold  s,    q"b6q"b68 	8r-   c                 B    t        dddd|       t        dddd|       gS )Nr  rY   r   r   r+  r   r  r2   s    r+   	_loc_foldzEurope_Vilnius_1941._loc_fold  s,    q"b6q"a57 	7r-   c                     | j                         \  }}||k  r	dt        z  S ||k  r|j                  r	dt        z  S dt        z  S dt        z  S )NrQ   rU   r  r  r4  r*   ru   
fold_start	fold_stops       r+   rv   zEurope_Vilnius_1941.utcoffset  N     $ 0
I
?t8O	>A4//a4//4xr-   c                     | j                         \  }}||k  r	dt        z  S ||k  r|j                  r	dt        z  S dt        z  S dt        z  S )Nr   r   r  r  s       r+   r{   zEurope_Vilnius_1941.dst  r  r-   c                 ^    | j                         \  }}||k  ry||k  rd|j                     S y)NMSK)r  CESTr  )r  r4  r  s       r+   ry   zEurope_Vilnius_1941.tzname  s6     $ 0
I
?	>"277++r-   c                    |j                   dk(  sJ |j                  | u sJ |j                  dk7  rt        | j	                         \  }}||k  r|dt
        z  z   S ||k  r|dt
        z  z   j                  d      S |dt
        z  z   S )Nr   r  rQ   rU   r   r3  )r4  r   rZ  r   r  r  r  r  s       r+   r   zEurope_Vilnius_1941.fromutc  s    ww!||yyD   77d?%% $ 0
I
?D= 	>TM***22AH}r-   N)	rG   r_   r`   r  r  rv   r{   ry   r   r!   r-   r+   r  r    s     87r-   r  c                   b   e Zd Zd Zd Zd Zd Zd Zd Zd Z	 e
j                  d      d	        Z e
j                  d
      d        Zd Z e
j                  d      d        Z e
j                  d
      d        Z e
j                  d      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestLocalTimeDisambiguationc           	      ^   t               }t        ddddddt        j                        }|j	                  |      }| j                  |j                  d      d       | j                  |j                  d	       | j                  |j                                t        dddd
t        j                        }|j	                  |      }| j                  |j                  d      d       | j                  |j                  d       | j                  |j                                t        ddddt        j                        }|j	                  |      }| j                  |j                  d      d       | j                  |j                  d	       | j                  |j                                y )Nr  rY   r   r7  r   r   z%c %Z%zz!Mon Jun 23 23:59:59 1941 MSK+0300r   r   z"Mon Jun 23 23:00:00 1941 CEST+0200r   r  z"Tue Jun 24 00:00:00 1941 CEST+0200)r  r   r   r1   r  r)   r  r4  r   r{   r   )r*   Vilniusgdtru  s       r+   test_vilnius_1941_fromutcz5TestLocalTimeDisambiguation.test_vilnius_1941_fromutc  sB   %'tQBBx||DnnW%i0<	>1%#tQBx||<nnW%i0=	?1%	"tQBx||<nnW%i0=	?1%	"r-   c           
         t               }t        dddddd|      }|j                  t        j                        }| j                  |j                  d      d       t        dddddd|      }|j                  t        j                        }| j                  |j                  d      d	       t        dddddd|d
      }|j                  t        j                        }| j                  |j                  d      d       t        dddd|      }|j                  t        j                        }| j                  |j                  d      d       y )Nr  rY   r   r  r   r   z%c %ZzMon Jun 23 19:59:59 1941 UTCzMon Jun 23 20:59:59 1941 UTCr   )r   r4  zMon Jun 23 21:59:59 1941 UTCr+  r   zMon Jun 23 22:00:00 1941 UTC)r  r   r  r   r1   r)   r  )r*   r  ru  r  s       r+   test_vilnius_1941_toutcz3TestLocalTimeDisambiguation.test_vilnius_1941_toutc$  s   %'tQBBw?nnX\\*g.7	9 tQBBw?nnX\\*g.7	9 tQBBwQGnnX\\*g.7	9 tQAg6nnX\\*g.7	9r-   c           	          t        dd      }t        dddd      }| j                  |j                  d       | j                  |j                  d       | j	                  t
              5  t        ddddd d       d d d        y # 1 sw Y   y xY wNr   r   r3  )r   r   r)   r4  r   r   r*   r   ru   s      r+   test_constructorsz-TestLocalTimeDisambiguation.test_constructors;  sz    OaAA&#!$y) 	&Aq!T1%	& 	& 	&s   *BBc                     t        dddd      }|j                         }| j                  |j                  d       |j	                         }| j                  |j                  d       y )Nr   r3  )r   r   r)   r4  r  )r*   ru   r   s      r+   test_memberz'TestLocalTimeDisambiguation.test_memberC  sP    aAA&GGI#IIK#r-   c                    t        d      }t        ddd      }| j                  |j                  d      j                  d       | j                  |j                  d      j                  d       | j                  |j                  d      j                  d       | j                  |j                  d      j                  d       |j                  dt
              }|j                  dt
              }| j                  |j                  d       j                  d       | j                  |j                  d       j                  d       | j                  t              5  |j                  d       d d d        | j                  t              5  |j                  d       d d d        | j                  t              5  |j                  dddd d       d d d        | j                  t              5  |j                  dddddddd d	       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)Nr   r   r3  )r4  r   r   rU   )	r   r   r)   r  r4  r  r   r   r   r  s      r+   r\  z(TestLocalTimeDisambiguation.test_replaceJ  s   GaA*//3+00!4*//3+00!4II1WI-ZZQwZ/$/44a84055q9z* 	II1I	z* 	JJAJ	 y) 	(IIaAtQ'	(y) 	5JJq!Q1aD!4	5 	5	 		 		( 	(	5 	5s0   $HH&H27H>H#&H/2H;>Ic                     t        d      }t        ddd      }| j                  ||j                  d             | j                  ||j                  d             y r  )r   r   r)   r  r  s      r+   r  z+TestLocalTimeDisambiguation.test_comparisona  sO    GaAAII1I-.RZZQZ/0r-   c                    t        d      }t        ddd      }| j                  t        |      t        |j	                  d                   | j                  t        |      t        |j	                  d                   y r  )r   r   r)   r  r  r  s      r+   	test_hashz%TestLocalTimeDisambiguation.test_hashg  sa    GaAa$qyyay'8"9:b4


(:#;<r-   r_  c                     d}t        j                  |      }t        j                  |dz         }| j                  |j                  d       | j                  |j                  d       y )NiXUTr  r   r   )r   r  r)   r4  )r*   r  dt0r   s       r+   r  z.TestLocalTimeDisambiguation.test_fromtimestampm  sS    $$Q'$$QX.1%1%r-   zAustralia/Lord_Howec                 t   t        j                  d      }t        j                  d|      dk7  r| j                  d       d}t	        j
                  |      }t	        j
                  |dz         }| j                  ||       | j                  |j                  d       | j                  |j                  d       y )	N   A%Z%z	LHST+1030>Australia/Lord_Howe timezone is not supported on this platformiU  r   r   )r  rU  r  rH   r   r  r)   r4  )r*   tmr  rb  r  s        r+   test_fromtimestamp_lord_howez8TestLocalTimeDisambiguation.test_fromtimestamp_lord_howeu  s    __U#>>&"%4MMZ[
 ##A&##AH-R !$!$r-   c                 b    | j                  t        j                  d      j                  d       y rT  )r)   r   r  r4  r2   s    r+   %test_fromtimestamp_low_fold_detectionzATestLocalTimeDisambiguation.test_fromtimestamp_low_fold_detection  s%     	//277;r-   c                     t        ddddd      }|j                  d      }| j                  |j                         dz   |j                                y )Nr   r   rU   r   r  r3  r  )r   r  r)   r  )r*   r  r   s      r+   test_timestampz*TestLocalTimeDisambiguation.test_timestamp  sH    tRAr*kkqk!4/	*r-   c                 J   t        j                  d      }t        j                  d|      dk7  r| j                  d       t	        ddddd	      }|j                  d
      j                         }|j                  d      j                         }| j                  |dz   |       y )Nr  r  r  r  r+  rW   rR   r   r  r   r3  r  )r  rU  r  rH   r   r  r  r)   )r*   r  r   s0s1s        r+   test_timestamp_lord_howez4TestLocalTimeDisambiguation.test_timestamp_lord_howe  s    __U#>>&"%4MMZ[T1aB'YYAY((*YYAY((*dB'r-   c                    t        ddddd      }|j                  d      }|j                         }|j                         }| j                  |j	                         d       | j                  |j	                         d       | j                  |t
        z   |       | j                  |j                  d	       | j                  |j                  d	       y )
Nr   r   rU   r   r  r3  r  r   r   )r   r  r  r)   ry   r  r4  )r*   r  r   adt0adt1s        r+   r  z+TestLocalTimeDisambiguation.test_astimezone  s    tRAr*kkqk!~~~~..d+A&A&r-   c                 .   t        d      }t        dddd      }t        D ]q  \  }}}||fD ]d  }|j                  ||      }|j	                  |      }| j                  ||       | j                  |dk  rdn|j                  |j                         f s y )Nr   r3  rW   r   )r   r   r   r   r   r)   r4  )	r*   r   ru   r   r   r   r  r  rg  s	            r+   test_pickle_foldz,TestLocalTimeDisambiguation.test_pickle_fold  s    aLaAA&)7 	G%GYW GMM!U+OOA&  A&  uqy!affqvvF	G	Gr-   c                     t        d      }t        dddd      }| j                  t        |      d       | j                  t        |      d       y )Nr   r3  zdatetime.time(0, 0, fold=1)z(datetime.datetime(1, 1, 1, 0, 0, fold=1))r   r   r)   r   r  s      r+   r   z%TestLocalTimeDisambiguation.test_repr  sH    aLaAA&a"?@bC	Er-   c           	         t        ddddt              t        j                  z
  }t        ddddt              }| j	                  |j                         t               | j	                  |j                         t               | j	                  |j                  d      j                         t               | j	                  |j                  d      j                         t               dD ]o  }t        dddd|t              }| j	                  |j                         t               | j	                  |j                  d      j                         t               q dD ]o  }t        dd	d
d|t              }| j	                  |j                         t               | j	                  |j                  d      j                         t               q y )NrY  r   r,  r   r   rU   r3  r  rW   rT   )	r   r~  r   r  r)   r{   r  r   r  )r*   	dt_summer	dt_winterr  ru   s        r+   r  z$TestLocalTimeDisambiguation.test_dst  si   T2r1X>AUAUU	T2r1X>	$/$/***2668$?***2668$? " 	=F$B6(CBRVVXt,RZZQZ/335t<	= " 	=F$1aABRVVXt,RZZQZ/335t<	=r-   c                    t        ddddt              t        j                  z
  }t        ddddt              }| j	                  |j                         dt        z         | j	                  |j                         dt        z         | j	                  |j                  d	      j                         dt        z         | j	                  |j                  d	      j                         dt        z         y )
NrY  r   r,  r   r   rU   rX   r	  r3  )r   r~  r   r  r)   rv   r  r  )r*   r  r  s      r+   r  z*TestLocalTimeDisambiguation.test_utcoffset  s    T2r1X>AUAUU	T2r1X>	,,.T	:,,.T	:***2<<>T	J***2<<>T	Jr-   c                    t        ddddt              t        j                  z
  }t        ddddt              }t        j	                  |      }t        j	                  |      }| j                  ||dt        z  z
         | j                  ||dt        z  z
         | j                  |j                  d	       | j                  |j                  d	       t        ddddd
t              }t        j	                  |      }|t        z  }t        j	                  |      }| j                  ||       | j                  |j                  d	       | j                  |j                  d       t        ddddd
t              }t        j	                  |      }| j                  |j                  |j                  fd       t        ddddd
t              }t        j	                  |      }| j                  |j                  |j                  fd       t        ddddd	t              }t        j	                  |      }| j                  |j                  |j                  fd       y )NrY  r   r,  rY   r   rT   rW   rR   r   r  r   )r   r   )r,  r   rU   )rY   r   )
r   r~  r   r  r   r)   r  r4  r  ra  )	r*   u_summeru_wintert_summert_winterr   rb  r  r   s	            r+   r  z(TestLocalTimeDisambiguation.test_fromutc  s   D"b!H=	@T@TTD"b!H=##H-##H-8a$h#678a$h#67** T2r1b:a 	T	a R !$!$T2r1b:Q!%%(3T2r1b:Q!%%'2 T1aAh7Q!%%'2r-   c                    t        dddt              }| j                  ||j                  t        j
                               t        dddt              }| j                  ||j                  t        j
                               y )NrN  r   r   rY   )r   r~  r)   r  r   r1   r  s     r+   test_mixed_compare_regularz6TestLocalTimeDisambiguation.test_mixed_compare_regular  s\    T1a1ALL67T1a1ALL67r-   c                     t        dddddt              }|j                  t        j                        }| j                  ||       | j                  ||       y )NrY  r   r,  r   r  r   r   r~  r  r   r1   r   )r*   t_fold
t_fold_utcs      r+   test_mixed_compare_foldz3TestLocalTimeDisambiguation.test_mixed_compare_fold  sJ    $B2h?&&x||4
FJ/J/r-   c                     t        dddddt              }|j                  t        j                        }| j                  ||       | j                  ||       y )NrY  rW   rT   rU   r  r   r  )r*   t_gap	t_gap_utcs      r+   test_mixed_compare_gapz2TestLocalTimeDisambiguation.test_mixed_compare_gap  sJ    q!Q8<$$X\\2	E9-Iu-r-   c                    t        dddt              }| j                  t        |      t        |j	                  d                   t        dddddt              }t        dd	d
ddt              }| j                  t        |      t        |j	                  d                   | j                  t        |      t        |j	                  d                   y )NrN  r   r   r3  rY  r   r,  r  rW   rT   rU   )r   r~  r)   r  r  )r*   r   r  r  s       r+   test_hash_awarez+TestLocalTimeDisambiguation.test_hash_aware  s    T1a1a$qyyay'8"9:$B2h?q!Q8<ftFNNN,B'CDed5==a=+@&ABr-   N)rG   r_   r`   r  r  r  r  r\  r  r  r   r8  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r!   r-   r+   r  r  
  s   #09.&$5.1= W34& 5& W./% 0%<
 W34* 5* W./( 0( W34' 5'GE=6K3B80.Cr-   r  c                 b    t        j                  |       \  }}t        |d        t        ||      S r/   )r  teenextrf  )iterableri  rj  s      r+   pairsr    s)    =="DAqDMq!9r-   c                       e Zd ZdZd Zed        Zed        Zed        Z	 e
ddd      j                         Zd Zd	 Zd
 Zd Zd Zedd       Zedd       Zd Zd Zedd       Zd Zd Zd Zy)ZoneInfoz/usr/share/zoneinfoc                 N    || _         || _        | j                  ||      | _        y)z

        :param ut: array
            Array of transition point timestamps
        :param ti: list
            A list of (offset, isdst, abbr) tuples
        :return: None
        N)uttiinvertr   )r*   r  r  s      r+   ro   zZoneInfo.__init__$  s$     ++b"%r-   c                 F   t        d|       t        d|       f}| r|d   d   t        z  }|d   dxx   |z  cc<   |d   dxx   |z  cc<   t        dt        |             D ]?  }|d   |xx   ||dz
     d   t        z  z  cc<   |d   |xx   ||   d   t        z  z  cc<   A |S )Nr  r   r   )r   SECrg  r  )r  r  r   rm   rm  s        r+   r  zZoneInfo.invert1  s    CneCn-U1X_FqE!HHqE!HH1c"g& ,1aBqsGAJ#--1aBqE!HO+, 	r-   c           	         |j                  d      j                         dk7  rt        d      |j                  d       t	        d      }|j                  |d       t        j                  dk7  r|j                          t	        d      }|j                  ||d          t        j                  dk7  r|j                          t	        d	      }|j                  ||d          g }t        |d
         D ]6  }|j                  t        j                  d|j                  d                   8 |j                  |d         }t        |      D ]>  \  }\  }}	}
||
|j                  d|
       j                         }t        d|      |	|f||<   @ d gt!        |      z  }t        |      D ]  \  }}||   ||<     | ||      }|S )NrW   TZifznot a zoneinfo filer   rm  rQ   r  r   r  r   z>lbbrY   rU   )readdecoder   seekr   fromfilerE   	byteorderbyteswaprg  r  structunpackr  findr   r  )rW  fileobjcountsr  type_indicesttisrm  abbrsgmtoffisdstabbrindabbrr  idxr*   s                  r+   r  zZoneInfo.fromfile=  s   <<?!!#v-233Rs#==E!OO3Z
GVAY'==E!KKMSzgvay1vay! 	@AKKfgll1o>?	@ VAY' ,5T? 	:'A'wAw!78??AD F+UD9DG	: Vc"g- 	FAsIBqE	 2r{r-   c                     t         j                  j                  | j                  |      }t	        |d      5 }| j                  |      cd d d        S # 1 sw Y   y xY w)Nrb)ospathjoinzonerootopenr  )rW  rB   r  r  s       r+   fromnamezZoneInfo.fromnameb  sF    ww||CLL$/$ 	#<<?	# 	# 	#s   AAr   r   c                    t        |t              st        d      |j                  | urt	        d      |j                         | j                  z
  dz  |j                  dz  z   |j                  dz  z   |j                  z   }|| j                  d   k  r| j                  d   }d}nt        j                  | j                  |      }| j                  |dz
     |k  sJ |t        | j                        k(  s|| j                  |   k  sJ | j                  |dz
  | \  }}|d   |d   z
  }|t        d|| j                  |dz
     z
        kD  }||d   z  }|r|j!                  d	      S |S )
rp  rq  rr  rZ  r  rS  r   r   rU   r3  )rg   r   r   r   r   rc  EPOCHORDINALra  r  r  r  r  bisectbisect_rightr  r   r  )r*   ru   r  ttir4  r  tti_prevshifts           r+   r   zZoneInfo.fromutcj  sf    "h'DEE99D 455llnt'8'88EAww~&yy2~& yy!	
 twwqz!''!*CD%%dggy9C773q5>Y...#dgg,&)dggcl*BBB GGCE#.MHcQK#a&(EIaTWWSU^)CDDD
c!f::1:%%Ir-   c                 8   |j                         | j                  z
  dz  |j                  dz  z   |j                  dz  z   |j                  z   }| j
                  |j                     }t        j                  ||      }| j                  t        d|dz
           |   S )NrZ  r  rS  r   r   )rc  r   ra  r  r  r   r4  r  r  r  r   )r*   ru   rm  r  r   r  s         r+   _find_tizZoneInfo._find_ti  s    llnt'8'88EAww~yy2~ yy	 WWRWW!!"i0wws1cAg'**r-   c                 &    | j                  |d      S rT  r  rt   s     r+   rv   zZoneInfo.utcoffset      }}R##r-   c                 B    | j                  |d      }|rt        S t        S r  )r  r   r  )r*   ru   r  s      r+   r{   zZoneInfo.dst  s!    b!$
 t&$&r-   c                 &    | j                  |d      S )NrU   r	  rt   s     r+   ry   zZoneInfo.tzname  r
  r-   Nc              #   P  K   || j                   }t        j                  j                  |d      }	 t	        |      }|5  |D ]<  }|j                         }|s|j                  d      r(|j                         d    > 	 d d d        y # t
        $ r Y y w xY w# 1 sw Y   y xY ww)Nzzone.tab#rU   )	r  r  r  r  r  rh  stripr?   r  )rW  zonedirzone_tabr  lines        r+   	zonenameszZoneInfo.zonenames  s     ?llG77<<4	XA  	* *zz| 4**,q/)*	* 	*  			* 	*sJ   /B&B B&BB*B	B&	BB&BB&B#B&c                    dx}x}x}}t         j                  x}}t        x}}	t        j                  x}
}d x}}t        j                  x}}d x}}t        |dd      }| j                         D ]  }|dz  }| j                  |      }|j                         D ]  \  }}||k  r|t        kD  rG|dz  }||f||fkD  r|}|}|}|t        j                  |z
  f|t        j                  |
z
  fk  sU|}|}|}
\|t        k  rJ|dz  }| }||f|	|fkD  r|}	|}|}|t        j                  |z
  f|t        j                  |z
  fk  s|}|}|}|dz  }  |||f}t        d|z         t        dt        |      f|z   z         t        d|dd|
d|       t        d	|dd|d|       t        d
|dd|d|       t        d|	dd|d|       y )Nr   r   zNumber of zones:       %5dz@Number of transitions: %5d = %d (gaps) + %d (folds) + %d (zeros)zMin gap:         z>16z at z in zMax gap:         zMin fold:        zMax fold:        )
r   r   r   r   r   r  r  transitionsprintr  )rW  
start_yearcount	gap_count
fold_countzeros_countmin_gapmin_foldmax_gapmax_foldmin_gap_datetimemax_gap_datetimemin_gap_zonemax_gap_zonemin_fold_datetimemax_fold_datetimemin_fold_zonemax_fold_zonestats_sincezonenamer   ru   r  trans_countss                           r+   statszZoneInfo.stats  s    7888	8J&]]*(!!(.6ll:+&**|08<-(,,z1a0 	%HQJEh'B^^- %	E#4<NIr{g/?%@@"''/+-(x||b01WhllM]>]4^^"''/+-(T\!OJ"FEr{h0A%BB#((0,.)x||b01Xx||N_?_4``#((0,.)1$K3%	%: ":{;*U23PL!#l24 	5W>NP\]^W>NP\]^X?PR_`aX?PR_`ar-   c              #      K   t        t        | j                  | j                              D ]-  \  \  }}\  }}|d   |d   z
  }t        t        |      z   |f / y w)Nr   r   )r  rf  r  r  EPOCH_NAIVEr   r*   _prev_tir   r  r  s         r+   r  zZoneInfo.transitions  s]     %*3tww+@%A 	>!LQ'1bqEGAJ&E1!55==	>s   AAc              #      K   t        t        | j                  | j                              D ]I  \  \  }}\  }}|d   |d   z
  }|t        k  s!|d   |d   k(  s-t        t        |      | |d   |d   f K yw)zLFind all folds with the same value of isdst on both sides of the transition.r   r   rU   N)r  rf  r  r  r   _utcfromtimestampr   r.  s         r+   nondst_foldszZoneInfo.nondst_folds  s     %*3tww+@%A 	Q!LQ'1bqEGAJ&Et|1 3'!5vwqz2a5PP	Qs   A
A9A9 A9c                     d}| j                         D ]]  }| j                  |      }|j                         D ]7  \  }}}}	|j                  |k  s|r||	k7  r|dz  }t	        d||||||	fz         9 _ y )Nr   r   z%3d) %-30s %s %10s %5s -> %s)r  r  r3  rZ  r  )
rW  	same_abbrr  r  r)  r   ru   r  	prev_abbrr  s
             r+   print_all_nondst_foldszZoneInfo.print_all_nondst_folds  s     	EHh'B.0oo.? E*E9d77Z'9d9J
4hE9dCD E	E	Er-   c              #   ^   K   | j                         D ]  \  }}|t        k  s|| f  y wr/   r  r   r*   r   r  s      r+   foldszZoneInfo.folds  s4     ((* 	 HAut|%i	 s    -
-c              #   \   K   | j                         D ]  \  }}|t        kD  s||f  y wr/   r9  r:  s      r+   gapszZoneInfo.gaps  s2     ((* 	HAut|h	s    ,	,c              #   J   K   | j                         D ]  \  }}|r	|  y wr/   )r  r:  s      r+   zeroszZoneInfo.zeros  s*     ((* 	HAu	s   ##r/   )r   )Fr   )rG   r_   r`   r  ro   r  r  classmethodr  r  r   rc  r   r   r  rv   r{   ry   r  r+  r  r3  r7  r;  r=  r?  r!   r-   r+   r  r  "  s    $H& 	 	 " "H # #
 a#--/L<+$'$ * * -b -b`>
Q 	E 	E 

r-   r  c                   h    e Zd ZdZd Zd Zd Zd Z ej                   e
ed      d      d        Zy	)
ZoneInfoTestzAmerica/New_Yorkc                 L   t         j                  dk(  r| j                  d       t         j                  dk(  r| j                  d       	 t        j	                  | j
                        | _        y # t        $ r+}| j                  d| j
                  d|       Y d }~y d }~ww xY w)Nvxworksz"Skipping zoneinfo tests on VxWorksr  z"Skipping zoneinfo tests on Windowsz	Skipping z: )rE   r;  rH   r  r  r)  r   FileNotFoundError)r*   errs     r+   r   zZoneInfoTest.setUp  sz    <<9$MM>?<<7"MM>?	D''6DG  	DMMt}}cBCC	Ds   
$A/ /	B#8!BB#c                     | j                  |j                  d       |j                  t        |j                        f|j                  d       |j                  t        |j                        f       y )Nr   )r)   r  r4  idr   )r*   ri  rj  s      r+   assertEquivDatetimesz!ZoneInfoTest.assertEquivDatetimes  sR    !))4)0!&&"QXX,G))4)0!&&"QXX,G	Ir-   c                 X   | j                   }|j                         D ]  \  }}d|z  d|z  |t        j                  z
  fD ]  }||z   }|j	                  |j                  |            }| j                  |j                  d       |j                  t        j                        j                  |      }| j                  ||       |j                         }| j                  |j                  d       ||z          | j                  |j                  t        j                        |j                  t        j                                t        j                   |fD ]F  }||z   }|j                  |      }|j	                  |      }| j                  |j                  d       H  y )Nr   r^  r   r   )r   r;  r   r  r   r  r)   r4  r   r1   r  rI  rv   	r*   r   ru   r  r  udtru  adtrv   s	            r+   
test_foldszZoneInfoTest.test_folds  sg   WW 	.IB%iuei6J6J.JK 
L1fjjB!78  1-kkk6AA"E))#s3MMO	  D!93?K))#..*F*-++X\\+*JL
L !+++U3 .1fkkk,jjo  1-	.	.r-   c                    | j                   }|j                         D ]  \  }}d|z  d|z  |t        j                  z
  fD ]F  }||z   }|j	                  |      }|j                  |      }| j                  |j                  d       |j	                  t        j                        j                  |      }| j                  ||       |j                         }| j                  |j	                  d       |j	                  d       |z          |j                  |j	                  |            |z
  |z   }| j                  |j	                  d      j                         |j	                  d      j                         d|z         I t        j                   |fD ]D  }||z   }|j                  |j	                  |            }| j                  |j                  d       F  y )Nr   r^  r   r   r3  zAt %s.)r   r=  r   r  r  r   r)   r4  r   r1   r  rI  rv   
assertLessrK  s	            r+   	test_gapszZoneInfoTest.test_gaps/  s   WW 	.IB%iuei6J6J.JK 01fkkk,jjo  1-kkk6AA"E))#s3MMO	  D!93;;d;;SV_;_`jj2!67%?!C 3 = = ? # 3 = = ? (300 !+++U3 .1fjjB!78  1-.!	.r-   tzsetz"time module has no attribute tzsetc           	         d| j                   v s| j                   j                  d      r| j                  d| j                   z         | j                  }t        j
                  j                  d      }| j                   t        j
                  d<   	 t        j                          |j                         D ]  \  }}|j                  dk\  r n|t        ddd      z
  t        z  }|t        z  }dd	d
d|dz
  |dz   |dz   fD ]v  }||z   }t        j                  |      }	t        j                  ||      j                  d       }
| j                  |	|
       |	j!                         }| j#                  ||       x |dkD  st        j                  |      |dz  z
  }|j!                         }|j                  d      j!                         }| j#                  |||dz  z          | j#                  |||dz  z
         |j%                  t&        j(                        }|j                  d      j%                  t&        j(                        }| j#                  ||t+        d|      z           |t        j
                  d= n|t        j
                  d<   t        j                          y # |t        j
                  d= n|t        j
                  d<   t        j                          w xY w)NRiyadh8zright/zSkipping %sTZi  r   r   iir
  r   i@ i2 r   rU   r3  )r)  r?   rH   r   r  environgetr  rR  r  rZ  r   r  r  r  rI  r  r)   r  r   r1   r   )r*   r   rU  rL  r  r  r  r  r  sdttzdtr  ru   ts0ts1utc0utc1s                    r+   test_system_transitionsz$ZoneInfoTest.test_system_transitionsF  sm    & ((2MM-$--78WWZZ^^D!==

4!	KKM nn. D
U88t# HT1a00S8c\$hAq&"y."y.B ,AQA"003C#11!R8@@@MD--c48B$$Q+, 6!//3eai?B,,.C**!*,668C$$S"rAv+6$$S"rAv+6==6D::1:-88FD$$T4)Ar2B+BC3D6 zJJt$#%

4 KKM	 zJJt$#%

4 KKMs   C-J& ?C+J& &=K#N)rG   r_   r`   r)  r   rI  rN  rQ  r9  
skipUnlessr   r  r^  r!   r-   r+   rB  rB    sK    !HDI.,.. Xw!E..r-   rB  c                        e Zd Z fdZ xZS )ZoneInfoCompleteTestc                    g }t        d      rnt        j                         D ]W  }t        d|z  t        fi       }||_        t        |      D ]+  }|j                  d      s|j                   ||             - Y t        | )  |       y )NtzdatazZoneInfoTest[%s]test_)r   r  r  r   rB  r)  r5   r?   r  superro   )r*   r  rB   TestmethodrF   s        r+   ro   zZoneInfoCompleteTest.__init__{  s    x( **, 3.5K $!$i 3F((1T&\233 	r-   )rG   r_   r`   ro   __classcell__)rF   s   @r+   ra  ra  z  s    	  	 r-   ra  c                       e Zd ZdZy)IranTestzAsia/TehranN)rG   r_   r`   r)  r!   r-   r+   rj  rj    s    Hr-   rj  zneed _testcapi modulec                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)CapiTestc                     | j                   j                  j                  d      r| j                  d       t	        j
                          y )NPurezNot relevant in pure Python)rF   rG   r@   rH   	_testcapitest_datetime_capir2   s    r+   r   zCapiTest.setUp  s5    >>""++F3MM78 	$$&r-   c                     dD ]R  }t        j                  |      }| j                  |      5  | j                  |t        j
                         d d d        T y # 1 sw Y   _xY w)NTF)	use_macro)ro  get_timezone_utc_capir.  r0   r   r1   )r*   rs  capi_utcs      r+   test_utc_capizCapiTest.test_utc_capi  s[    & 	6I 66yAH	2 6h56 6	66 6s   !AA"	c           	         t        j                         \  }}}t        t        d      d      }t        t        d            }d||fd||fd||fg}|D ]  \  }}}	| j	                  |      5  | j                  ||	       t        dd	d
|      }
t        dd	d
|	      }| j                  |
|       | j                  |
j                         |j                                t        dd	d
dt        j                        }| j                  |
j                  t        j                        |       d d d         y # 1 sw Y   xY w)Nr	  r   r   est_capi	est_macroest_macro_nn)rB   rN  rU   rW   r   rR   )
ro  make_timezones_capir   r   r.  r)   r   ry   r1   r  )r*   rx  ry  rz  	exp_namedexp_unnamedcasesrB   tz_acttz_expr   rO  r  s                r+   test_timezones_capizCapiTest.test_timezones_capi  s4   ,5,I,I,K))\YR0%8	yr23 9-)Y/\;7
 %* 	G D&&4( G  0tQ&9tQ&9  c*  szz|<!$1aE  !=vFG G	GG Gs   -B>D66D?	c                 ~    G d dt               }t         |fD ]  }dD ]  } || }| j                  ||      5  t        j                  |      \  }}}| j	                  ||j
                         | j	                  ||j                         | j	                  ||j                         d d d          y # 1 sw Y   xY w)Nc                       e Zd Zy)=CapiTest.test_PyDateTime_DELTA_GET.<locals>.TimeDeltaSubclassNr  r!   r-   r+   TimeDeltaSubclassr    r  r-   r  )r   7   韆 r  rW  r   )r   r.  ro  PyDateTime_DELTA_GETr)   rO  r   r   )r*   r  klassr   r  rO  r   r   s           r+   test_PyDateTime_DELTA_GETz"CapiTest.test_PyDateTime_DELTA_GET  s    		 	  !23 	CE: C4L\\e$\7 C2;2P2PQR2S/D'<$$T1662$$Waii8$$\1>>BC CC	CC C   A.B33B<c                 ~    G d dt               }t         |fD ]  }dD ]  } || }| j                  ||      5  t        j                  |      \  }}}| j	                  ||j
                         | j	                  ||j                         | j	                  ||j                         d d d          y # 1 sw Y   xY w)Nc                       e Zd Zy)2CapiTest.test_PyDateTime_GET.<locals>.DateSubclassNr  r!   r-   r+   r  r    r  r-   r  ))rN  r   rU   )r`  rU   ry  r  )r   r.  ro  PyDateTime_GETr)   rZ  r[  r  )r*   r  r  r   r  rZ  r[  r  s           r+   test_PyDateTime_GETzCapiTest.test_PyDateTime_GET  s    	4 	 L) 	1E5 14L\\e$\7 1'0'?'?'B$D%$$T1662$$UAGG4$$S!%%01 11	11 1r  c           
      "    G d dt               }t         |fD ]  }ddddddd	d
t        j                  ffD ]  } || }| j                  ||      5  t	        j
                  |      \  }}}}}	| j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  |	|j                         d d d          y # 1 sw Y   xY w)Nc                       e Zd Zy);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   r1   r.  ro  PyDateTime_DATE_GETr)   ra  r  r  re  r0   r   )
r*   r
  r  r   r  ra  r  r  re  r   s
             r+   test_PyDateTime_DATE_GETz!CapiTest.test_PyDateTime_DATE_GET  s
   	x 	  01 	4E92r2r5",,() 4 4L\\e$\7 4,5,I,I!,L >D&&+v $$T1662$$VQXX6$$VQXX6$$[!--@MM&!((34 4	4	4
4 4s   B(DDc                     G d dt               }t         |fD ]  }dddddt        j                  ffD ]  } || }| j                  ||      5  t	        j
                  |      \  }}}}}	| j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  |	|j                         d d d          y # 1 sw Y   xY w)	Nc                       e Zd Zy)7CapiTest.test_PyDateTime_TIME_GET.<locals>.TimeSubclassNr  r!   r-   r+   rw  r    r  r-   rw  )r   r  r7  r   r   r  r7  r   r  )r   r   r1   r.  ro  PyDateTime_TIME_GETr)   ra  r  r  re  r0   r   )
r*   rw  r  r   r  ra  r  r  re  r   s
             r+   test_PyDateTime_TIME_GETz!CapiTest.test_PyDateTime_TIME_GET  s    	4 	 L) 	4E)b"b(,,79 44L\\e$\7 4.7.K.KA.N >D&&+v $$T1662$$VQXX6$$VQXX6$$[!--@MM&!((34 44	44 4s   B(DDc                    t        j                         \  }}}| j                  d      5  | j                  |t        j
                         d d d        | j                  d      5  | j                  |t        j
                         d d d        | j                  d      5  | j                  |t        j
                         t	        t        d      d      }| j                  ||       t        dd	d
|      }t        dd	d
|      }| j                  ||       | j                  |j                         |j                                d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr\  )testnamer]  non_utcr   r   r   rN  rU   rW   r   )ro  get_timezones_offset_zeror.  r0   r   r1   r   r   r)   r   ry   )r*   r\  r]  r  non_utc_expr   rO  s          r+   test_timezones_offset_zeroz#CapiTest.test_timezones_offset_zero  s.   'AACdG\\6\* 	.MM$-	. \\6\* 	.MM$-	. \\9\- 	9Whll3"91#5r:KWk24Ag6C4Ak:CS#&SZZ\3::<8	9 	9	. 	.	. 	.	9 	9s$   !E&!E!B'E*EE'*E3c           
          G d dt               }t        ddd      } |ddd      }t        ddd      }t        j                  }| j	                   ||             | j	                   ||             | j	                   ||             | j	                   ||d             | j                   ||d             | j                   ||d             t               t               ddt        d      t        j                  t        dd      g}|D ]=  }d	D ]6  }| j                  ||
      5  | j                   |||             d d d        8 ? y # 1 sw Y   ExY w)Nc                       e Zd Zy).CapiTest.test_check_date.<locals>.DateSubclassNr  r!   r-   r+   r  r    r  r-   r    r   T
2011-01-01r   r   rr  argexact)r   r   ro  datetime_check_dater   r   r  r  r   r   r1   r   r.  )	r*   r  r  dsru   is_dater   r  r  s	            r+   test_check_datezCapiTest.test_check_date  s>   	4 	 q!$1%dAq!// 	
#$$4() 	T*+T*+ L!hllDRL: 	:C& :\\c\7 :$$WS%%89: ::	:: :s   (EEc                 :    G d dt               }t        dd      } |dd      }t        j                  }| j                   ||             | j                   ||             | j                   ||d             | j	                   ||d             t               t               ddt        d      t        j                  t        ddd      g}|D ]=  }d	D ]6  }| j                  ||
      5  | j	                   |||             d d d        8 ? y # 1 sw Y   ExY w)Nc                       e Zd Zy).CapiTest.test_check_time.<locals>.TimeSubclassNr  r!   r-   r+   rw  r  +  r  r-   rw  r   r  Tr   r  r  rr  r  )r   ro  datetime_check_timer   r   r  r  r   r   r1   r   r.  )r*   rw  r   r  is_timer   r  r  s           r+   test_check_timezCapiTest.test_check_time*  s   	4 	 RL"b!// 	
#$4() 	T*+ L!hllDq!,<>  	:C& :\\c\7 :$$WS%%89: ::	:: :   +DDc                 F    G d dt               }t        ddddd      } |ddddd      }t        j                  }| j                   ||             | j                   ||             | j                   ||d             | j	                   ||d             t               t               ddt        d      t        j                  t        ddd      g}|D ]=  }d	D ]6  }| j                  ||
      5  | j	                   |||             d d d        8 ? y # 1 sw Y   ExY w)Nc                       e Zd Zy)6CapiTest.test_check_datetime.<locals>.DateTimeSubclassNr  r!   r-   r+   r
  r  E  r  r-   r
  r  r   r   r  Tr  rr  r  )r   ro  datetime_check_datetimer   r   r  r  r   r   r1   r   r.  )r*   r
  ru   r  is_datetimer   r  r  s           r+   test_check_datetimezCapiTest.test_check_datetimeD  s   	x 	 dAq"b)tQ2r277 	B(C()B-. 	S$/0 L!hllDq!,<>  	>C& >\\c\7 >$$[e%<=> >>	>> >s   1DD c                 :    G d dt               }t        d      } |d      }t        j                  }| j                   ||             | j                   ||             | j                   ||d             | j	                   ||d             t               t               ddt        j                  t        ddd      t        ddd      g}|D ]=  }dD ]6  }| j                  ||      5  | j	                   |||             d d d        8 ? y # 1 sw Y   ExY w)	Nc                       e Zd Zy)4CapiTest.test_check_delta.<locals>.TimeDeltaSubclassNr  r!   r-   r+   r  r  _  r  r-   r  r   Tr  r  rr  r  )r   ro  datetime_check_deltar   r   r  r  r   r1   r   r   r.  )r*   r  rV  tdsis_timedeltar   r  r  s           r+   test_check_deltazCapiTest.test_check_delta^  s   		 	 q\" 55 	R()S)*R./ 	c401 Ld4A.q!0DF  	?C& ?\\c\7 ?$$\#u%=>? ??	?? ?r  c           
          G d dt               }t               } |       }t        t        d            }t        j                  }| j                   ||             | j                   ||             | j                   ||             | j                   ||d             | j                   ||d             | j                   ||d             t               t               ddt        ddd      t        ddd      g}|D ]=  }d	D ]6  }| j                  ||
      5  | j                   |||             d d d        8 ? y # 1 sw Y   ExY w)Nc                       e Zd Zy)2CapiTest.test_check_tzinfo.<locals>.TZInfoSubclassNr  r!   r-   r+   TZInfoSubclassr  y  r  r-   r  r	  r   Tr   r  r  rr  r  )r   r   r   ro  datetime_check_tzinfor   r   r  r  r   r   r.  )	r*   r  r  tzisr   	is_tzinfor   r  r  s	            r+   test_check_tzinfozCapiTest.test_check_tzinfox  s6   	V 	 hib)*33	 		#'	"&	$(	#t,- 	2t,-4./ LT1a (4A"68  	<C& <\\c\7 <$$YsE%:;< <<	<< <s   EEc                 
   t        ddd      }dD ]e  }| j                  |      5  t        j                  ||j                  |j
                  |j                        }| j                  ||       d d d        g y # 1 sw Y   rxY w)Nr  r  r   FTmacro)r   r.  ro  get_date_fromdaterZ  r[  r  r)   r*   exp_dater  
c_api_dates       r+   test_date_from_datezCapiTest.test_date_from_date  s    a$  	7EE* 7&88MMNNLL	"
   X67 7	77 7   A	A99B	c                 j   t        ddddddd      }dD ]  }| j                  |	      5  t        j                  ||j                  |j
                  |j                  |j                  |j                  |j                  |j                        }| j                  ||       d d d         y # 1 sw Y   xY w)
Nr  r  r   r  r   r  r  r  r  )r   r.  ro  get_datetime_fromdateandtimerZ  r[  r  ra  r  r  re  r)   r  s       r+   test_datetime_from_dateandtimez'CapiTest.test_datetime_from_dateandtime  s    D!RRU;  	7EE* 7&CCMMNNLLMMOOOO((*
   X67 7	77 7s   A5B))B2	c                    t        ddddddd      }dD ]  }d	D ]  }| j                  ||
      5  t        j                  ||j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  	      }| j                  ||       | j                  |j                  |j                         d d d          y # 1 sw Y   xY w)Nr  r  r   r  r   r  r  r   r   r  r  r4  )r   r.  ro  #get_datetime_fromdateandtimeandfoldrZ  r[  r  ra  r  r  re  r4  r)   )r*   r  r4  r  r  s        r+   %test_datetime_from_dateandtimeandfoldz.CapiTest.test_datetime_from_dateandtimeandfold  s    D!RRU; 	ED$ E\\D\9 E!*!N!N       ,, 	"'J $$Z:$$Z__hmmDE EE	EE Es   B&C""C+c           	      "   t        dddd      }dD ]p  }| j                  |      5  t        j                  ||j                  |j
                  |j                  |j                        }| j                  ||       d d d        r y # 1 sw Y   }xY w)Nr  r   r  r  r  r  )	r   r.  ro  get_time_fromtimera  r  r  re  r)   )r*   exp_timer  
c_api_times       r+   test_time_from_timezCapiTest.test_time_from_time  s    BE*  		7EE* 7&88MMOOOO((*
   X67 7		77 7s   ABB	c                    t        dddd      }dD ]  }dD ]  }| j                  ||      5  t        j                  ||j                  |j
                  |j                  |j                  |j                        }| j                  ||       | j                  |j                  |j                         d d d          y # 1 sw Y   xY w)Nr  r   r  r  r  r  r  )
r   r.  ro  get_time_fromtimeandfoldra  r  r  re  r4  r)   )r*   r  r4  r  r  s        r+   test_time_from_timeandfoldz#CapiTest.test_time_from_timeandfold  s    BE* 	ED$ E\\D\9 
E!*!C!C    ,, "'J $$Z:$$Z__hmmD
E 
EE	E
E 
Es   BB>>Cc                 
   t        ddd      }dD ]e  }| j                  |      5  t        j                  ||j                  |j
                  |j                        }| j                  ||       d d d        g y # 1 sw Y   rxY w)Nr   r  r  r  r  )r   r.  ro  get_delta_fromdsurO  r   r   r)   )r*   	exp_deltar  c_api_deltas       r+   test_delta_from_dsuzCapiTest.test_delta_from_dsu  s    b"e,	  	9EE* 9'99NN%%**	,   i89 9	99 9r  c           
         t        ddd      j                         }dD ]Y  }| j                  |      5  t        j                  t        |      |      }| j                  |t        ddd             d d d        [ y # 1 sw Y   fxY w)N  rW   r   r  r  )r   r  r.  ro  get_date_fromtimestamprh   r)   r   )r*   r  r  r  s       r+   test_date_from_timestampz!CapiTest.test_date_from_timestamp  s    dAr",,.  	7EE* 744SWeD  Dq"$567 7	77 7s   =A;;B	c                    dddt        t        d            dfddd	t        t        d            dfg}t        j                  }|D ]l  }d
D ]e  }| j	                  ||      5  |\  }}}t        |d|i}t        |j                               }	 ||	|||      }
| j                  ||
       d d d        g n y # 1 sw Y   txY w)N)r  rW   r   NF)r  NTr  r   r   T)r  rW   r   r_  r  NF)r  NTr  r  )caser  r   )	r   r   ro  get_datetime_fromtimestampr.  r   rh   r  r)   )r*   r~  r  r  r  dtupr   usetzdt_origr  r  s              r+   test_datetime_from_timestampz%CapiTest.test_datetime_from_timestamp  s    ('HYQ%78$?0/"HYQ-?$@$G
 #== 		5D$ 5\\t5\9 5*.'D&%&<V<GW..01B*2vueDE$$We45 55		55 5s   "AB77C N)rG   r_   r`   r   rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!   r-   r+   rl  rl    so    '6G4C14&4$9,:8:4>4?4<:77"E(7E"975r-   rl  c                 8    |j                  t                      |S r/   )addTestra  )loaderstandard_testspatterns      r+   
load_testsr    s    /12r-   __main__)tr   r  r  ri  r  r  r  r  r   r0  r  rE   r9  r  r   operatorr   r   r   r   r   r	   r
   r   r   testr   test.supportr   r   r   r   r   r(   r   r   r   r   r   r   r   r   r  ro  ImportErrorr  r[   r   _loadsr1  rg  rJ  r   r  r-  r  r(  r  r  TestCaser%   rb   r   r   r   r   r   r5  rL  rL  rR  rW  r  r  r=  rA  rC  r  r  rD  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  rB  rn  rx  r~  r  r  r  r  r  r  r  r  rB  	TestSuitera  rj  r:  rl  r  rG   main)r   s   0r+   <module>r	     s      	  	   	  
    C C C  J J " %      # 
 	
 fmm,  %V%<%<q%@AC 65) C
>f5599 99tQ1a( $r2r*
 ElEl5)"" 5)v &  &<; <
E$8 Ef ^/"" ^/B{D8$$ {DB.7 .7fs+X->-> sr)8$$ )B4 A;&(9(9 A;Nx j78 j7Z)< 4 J9&(9(9 J9^]4 ]4BWE:x'8'8 WExy
C\:x/@/@ y
Cz |	1	qQAq!Q
 
!RQ	( (T b)eU3b)eU3b*eU3b)eU3q%# vy!,}h// }FGOx   GO^9f 9D1' 1f J6J6K6	J6/& /dOC("3"3 OCb 1o
cv cLo8$$ od
 8-- 
 |  d"$;<D5x   D5 =D5N
 zHMMO eO  I  		Cs*   P %P P!PPPP