add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
B

�/g^Rc
@sVddlZddlZddlZdd�ZdZdZdZddd	dd
dd
ddd
dd
dg
Z	dgZ
dZx&e	dd�D]Ze
�
e�ee7ZqbW[[dd�Zd
d�Zdd�Zdd�Zdd�Zed�Zed�Zed�Zdd�Zdddddddd d!d"d#d$d%g
Zdd&d'd(d)d*d+d,gZd-d.�Zdhd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Z d>d?�Z!d@dA�Z"dBdC�Z#dDdE�Z$dFdG�Z%dHdI�Z&dJdK�Z'GdLdM�dM�Z(e(dN�e(_)e(dOdPdQdQdRdS�e(_*e(ddT�e(_+GdUdV�dV�Z,e,Z-e,ddd�e,_)e,ddWd�e,_*e(ddX�e,_+GdYdZ�dZ�Z.e.Z/Gd[d\�d\�ZeZ0eddd�e_)edPdQdQdR�e_*e(ddT�e_+Gd]d^�d^e,�Z1e1ddd�e1_)e1ddWddPdQdQdR�e1_*e(ddT�e1_+d_d`�Z2Gdadb�dbe.�Z3e3�4e(d��e3_5e3�4e(dPdQdc��e3_)e3�4e(dPdQdc��e3_*e1dddde3j5de�Z6yddfl7TWne8k
�r�YnXX[[
[	[[[[6[[[[#["[$[%[ [![[&[-[[[[[[[2[[[[0[/[[['[[[ddgl7m9Z9dS)i�NcCs||krdS||krdSdS)Nr���������x�yrr� /usr/lib64/python3.7/datetime.py�_cmp�rri'i۹7r�iicCs$|ddko"|ddkp"|ddkS)N�r�d�r)�yearrrr�_is_leap%�rcCs(|d}|d|d|d|dS)Nr�mrrr
r)rrrrr�_days_before_year)�rcCs|dkrt|�rdSt|S)N�i)r�_DAYS_IN_MONTH�r�monthrrr�_days_in_month.srcCst||dkot|�S�Nr)�_DAYS_BEFORE_MONTHrrrrr�_days_before_month5�rcCs t||�}t|�t||�|S�N)rrr�rr�day�dimrrr�_ymd2ord:s
r!i�ie�c	Cs�|d8}t|t�\}}|dd}t|t�\}}t|t�\}}t|d�\}}||d|d|7}|dkst|dkr�|dddfS|dko�|d	kp�|dk}|d
d?}t||dko�|}||kr�|d8}|t||dko�|8}||8}|||dfS)
Nrr
rrr�r
��i2r"r)�divmod�_DI400Y�_DI100Y�_DI4Yrr)	�nZn400rZn100Zn4Zn1ZleapyearrZ	precedingrrr�_ord2ymdSs"r+ZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecZMonZTueZWedZThuZFriZSatZSunc	Cs>t|||�dd}t||�|}t�|||||||||f	�S�N��)r!r�_timeZstruct_time)	r�m�d�hh�mm�ssZdstflagZwdayZdnumrrr�_build_struct_time�sr5�autocCstdddddd�}|dkr&|r dnd	}n|d
kr6|d}y||}Wntk
r^td��YnX|�||||�SdS)
Nz{:02d}z
{:02d}:{:02d}z{:02d}:{:02d}:{:02d}z{:02d}:{:02d}:{:02d}.{:03d}z{:02d}:{:02d}:{:02d}.{:06d})�hours�minutes�seconds�milliseconds�microsecondsr6r;r9r:��zUnknown timespec value)ZKeyError�
ValueError�format)r2r3r4�us�timespecZspecs�fmtrrr�_format_time�srBcCs�d}|dk	r�|jdkr"d}|}nd}t|tdd��\}}t|tdd��\}}|d|||f7}|sj|jr�|d	|j7}|jr�|d
|j7}|S)N�r�-�+r�r7�r8z%s%02d:%02dz:%02d�.%06d)�daysr&�	timedeltar;r9)�off�s�signr2r3r4rrr�_format_offset�s

rNcCs�d}d}d}g}|j}dt|�}}	�x�||	k�r�||}
|d7}|
dk�r�||	k�r�||}
|d7}|
dkr�|dkr�dt|dd�}|�|��q�|
dk�rb|dk�rVd}t|d	��rV|��}|dk	�rVd
}|jdkr�|}d}t|tdd��\}
}t|tdd
��\}}|j}|j	}|�r0d||
|||f}n&|�rHd||
||f}nd||
|f}|�|�n^|
dk�r�|dk�r�d}t|d��r�|�
�}|dk	�r�|�dd�}|�|�n|d�||
�n|d�q(||
�q(Wd�|�}t
�||�S)Nrrz%Zfz%06d�microsecondZzrC�	utcoffsetrErDrFrGz%c%02d%02d%02d.%06dz%c%02d%02d%02dz
%c%02d%02dZZ�tznamez%%)�append�len�getattrZhasattrrPrIr&rJr9r;rQ�replace�joinr/�strftime)�objectr>�	timetupleZfreplaceZzreplaceZZreplaceZ	newformatZpushZir*Zch�offsetrM�h�restr0rL�urrr�_wrap_strftime�sh












r^cCsjt|dd��}|ddkr,td|d��t|dd��}|ddkrPtd��t|dd	��}|||gS)
NrrrDzInvalid date separator: %sr"r.zInvalid date separator��
)�intr=)Zdtstrrrrrrr�_parse_isoformat_datesrbcCst|�}ddddg}d}x�tdd�D]r}||dkr<td��t|||d��||<|d7}|||d�}|rx|dkrzP|dkr�td|��|d7}q$W||k�r||dkr�td	��nN|d7}||}|d
kr�td	��t||d��|d<|dk�r|dd9<|S)Nrr$rzIncomplete time componentr�:zInvalid time separator: %c�.zInvalid microsecond component)r$r-r<)rSZranger=ra)�tstr�len_str�
time_compsZposZcompZ	next_charZ
len_remainderrrr�_parse_hh_mm_ss_ffs2


rhc
Cs�t|�}|dkrtd��|�d�dp2|�d�d}|dkrL|d|d�n|}t|�}d}|dkr�||d�}t|�dkr�td��t|�}td	d
�|D��r�tj}nD||ddkr�dnd}t|d|d|d|dd
�}	t||	�}|�|�|S)NrzIsoformat time too shortrDrrEr)r"r_izMalformed time zone stringcss|]}|dkVqdS)rNr)Z.0rrrrz	<genexpr>Tsz(_parse_isoformat_time.<locals>.<genexpr>rr$�r7r8r9r;)	rSr=ZfindrhZall�timezone�utcrJrR)
rerfZtz_posZtimestrrgZtziZtzstrZtz_compsZtzsignZtdrrr�_parse_isoformat_time;s(
rlcCs&|dk	r"t|t�s"tdt|���dS)Nz4tzinfo.tzname() must return None or string, not '%s')�
isinstance�str�	TypeError�type)�namerrr�
_check_tznamed�rrcCs^|dkrdSt|t�s*td|t|�f��td�|krHtd�ksZntd||f��dS)Nz3tzinfo.%s() must return None or timedelta, not '%s'rzN%s()=%s, must be strictly between -timedelta(hours=24) and timedelta(hours=24))rmrJrorpr=)rqrZrrr�_check_utc_offsetos
 rtcCsxt|t�r|St|t�sly|��}Wntk
r8Yn"Xt|t�rH|Stdt|�j��tdt|�j��td��dS)Nz"__int__ returned non-int (type %s)z$an integer is required (got type %s)z$integer argument expected, got float)rmra�floatZ__int__�AttributeErrorrorp�__name__)Zvaluerrr�_check_int_field{s


rxcCs�t|�}t|�}t|�}t|kr,tks@ntdttf|��d|krTdks`ntd|��t||�}d|kr~|ks�ntd||��|||fS)Nzyear must be in %d..%drr#zmonth must be in 1..12zday must be in 1..%d)rx�MINYEAR�MAXYEARr=rrrrr�_check_date_fields�s

r{cCs�t|�}t|�}t|�}t|�}d|kr4dks@ntd|��d|krTdks`ntd|��d|krtdks�ntd|��d|kr�dks�ntd|��|d	kr�td
|��|||||fS)Nr�zhour must be in 0..23�;zminute must be in 0..59zsecond must be in 0..59�?Bz microsecond must be in 0..999999)rrzfold must be either 0 or 1)rxr=)�hour�minute�secondrO�foldrrr�_check_time_fields�s




r�cCs|dk	rt|t�std��dS)Nz4tzinfo argument must be None or of a tzinfo subclass)rm�tzinforo)�tzrrr�_check_tzinfo_arg��r�cCs tdt|�jt|�jf��dS)Nzcan't compare '%s' to '%s')rorprwrrrr�	_cmperror�sr�cCsRt||�\}}|d9}|dkr&||kn||k}|sF||krN|ddkrN|d7}|S)Nrrr)r&)�a�b�q�rZgreater_than_halfrrr�_divide_and_round�sr�c@seZdZdZd>dd�Zdd�Zdd�Zd	d
�Zedd��Z	ed
d��Z
edd��Zdd�ZeZ
dd�Zdd�Zdd�Zdd�Zdd�Zdd�ZeZdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Z d7d8�Z!d9d:�Z"d;d<�Z#d=S)?rJ)�_days�_seconds�
_microseconds�	_hashcodercCs�d}}	}
||d7}||d|d7}||d7}t|t�rtt�|�\}}t�|d�\}}
t|
�}	t|�}nd}|}t|t�r�t�|�\}}t|�}||7}n|}t|d�\}}||7}|	t|�7}	|d	}t|t��rt||�}t|d
�\}}t|d�\}}||7}|	|7}	n@t|�}t|d
�\}}t|d�\}}||7}|	|7}	t||�}t|d
�\}}
|	|7}	t|	d�\}}	||7}t|�dk�r�td|��t	�
|�}||_|	|_|
|_
d
|_|S)Nrr.�<�r<g�@g�Q���.A�@B��ɚ;z$timedelta # of days is too large: %dr)rmru�_math�modfrar&�round�abs�
OverflowErrorrX�__new__r�r�r�r�)�clsrIr9r;r:r8r7Zweeksr1rLr?ZdayfracZdaysecondsfracZdaysecondswholeZsecondsfracZusdouble�selfrrrr��sZ




ztimedelta.__new__cCspg}|jr|�d|j�|jr0|�d|j�|jrF|�d|j�|sT|�d�d|jj|jjd�|�fS)Nzdays=%dz
seconds=%dzmicroseconds=%dZ0�	%s.%s(%s)�, )r�rRr�r��	__class__�
__module__�__qualname__rV)r��argsrrr�__repr__>s
ztimedelta.__repr__cCsdt|jd�\}}t|d�\}}d|||f}|jrLdd�}d||j�|}|jr`|d|j}|S)Nr�z%d:%02d:%02dcSs|t|�dkrdpdfS)NrrLrC)r�)r*rrr�pluralQr	z!timedelta.__str__.<locals>.pluralz
%d day%s, rH)r&r�r�r�)r�r3r4r2rLr�rrr�__str__Lsztimedelta.__str__cCs|jd|jd|jdS�Nr�r�)rIr9r;�r�rrr�
total_secondsX�ztimedelta.total_secondscC�|jSr�r�r�rrrrI^rztimedelta.dayscCr�r)r�r�rrrr9crztimedelta.secondscCr�r)r�r�rrrr;hrztimedelta.microsecondscCs2t|t�r.t|j|j|j|j|j|j�StSr�rmrJr�r�r��NotImplemented�r��otherrrr�__add__m�


ztimedelta.__add__cCs2t|t�r.t|j|j|j|j|j|j�StSrr�r�rrr�__sub__xr�ztimedelta.__sub__cCst|t�r||StSr)rmrJr�r�rrr�__rsub__��

ztimedelta.__rsub__cCst|j|j|j�Sr)rJr�r�r�r�rrr�__neg__�sztimedelta.__neg__cCs|Srrr�rrr�__pos__�r	ztimedelta.__pos__cCs|jdkr|S|SdS�Nrr�r�rrr�__abs__�s
ztimedelta.__abs__cCs`t|t�r(t|j||j||j|�St|t�r\|��}|��\}}tddt	|||��St
Sr�)rmrarJr�r�r�ru�_to_microseconds�as_integer_ratior�r��r�r��usecr�r�rrr�__mul__�s


ztimedelta.__mul__cCs|jd|jd|jSr��r�r�r�r�rrrr��r�ztimedelta._to_microsecondscCsNt|ttf�stS|��}t|t�r0||��St|t�rJtdd||�SdSr�)rmrarJr�r�)r�r�r�rrr�__floordiv__�s

ztimedelta.__floordiv__cCs~t|tttf�stS|��}t|t�r2||��St|t�rNtddt||��St|t�rz|��\}}tddt|||��SdSr�)rmrarurJr�r�r�r�r�rrr�__truediv__�s


ztimedelta.__truediv__cCs*t|t�r&|��|��}tdd|�StSr�)rmrJr�r�)r�r�r�rrr�__mod__�s
ztimedelta.__mod__cCs4t|t�r0t|��|���\}}|tdd|�fStSr�)rmrJr&r�r�)r�r�r�r�rrr�
__divmod__�s

ztimedelta.__divmod__cCs t|t�r|�|�dkStSdSr��rmrJrr�r�rrr�__eq__��
ztimedelta.__eq__cC� t|t�r|�|�dkStSdSr�r�r�rrr�__le__�r�ztimedelta.__le__cC� t|t�r|�|�dkStSdSr�r�r�rrr�__lt__�r�ztimedelta.__lt__cC� t|t�r|�|�dkStSdSr�r�r�rrr�__ge__�r�ztimedelta.__ge__cC� t|t�r|�|�dkStSdSr�r�r�rrr�__gt__�r�ztimedelta.__gt__cCst|��|���Sr)r�	_getstater�rrrr�rztimedelta._cmpcC�|jdkrt|���|_|jS�Nr�r��hashr�r�rrr�__hash__��
ztimedelta.__hash__cCs|jdkp|jdkp|jdkSr�r�r�rrr�__bool__�r�ztimedelta.__bool__cCs|j|j|jfSrr�r�rrrr��r	ztimedelta._getstatecC�|j|��fSr�r�r�r�rrr�
__reduce__�r	ztimedelta.__reduce__N)rrrrrrr)$rwr�r��	__slots__r�r�r�r��propertyrIr9r;r��__radd__r�r�r�r�r�r�Z__rmul__r�r�r�r�r�r�r�r�r�r�rr�r�r�r�rrrrrJ�sB
d		
		rJi6e�r�r|r}r~)rIr7r8r9r;)r;c@s0eZdZdZdAdd�Zedd��Zedd��Zed	d
��Zedd��Z	d
d�Z
dd�Zdd�Zdd�Z
dd�ZeZedd��Zedd��Zedd��Zdd�Zdd �ZdBd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�ZeZd3d4�Z d5d6�Z!d7d8�Z"d9d:�Z#d;d<�Z$d=d>�Z%d?d@�Z&dS)C�date)�_year�_month�_dayr�NcCs�|dkr�t|ttf�r�t|�dkr�dt|dd��krBdkr�nnTt|t�r|y|�d�}Wntk
rztd��YnXt�	|�}|�
|�d|_|St|||�\}}}t�	|�}||_
||_||_d|_|S)	Nrrrr$r#�latin1znFailed to encode latin1 string when unpickling a date object. pickle.load(data, encoding='latin1') is assumed.r)rm�bytesrnrS�ord�encode�UnicodeEncodeErrorr=rXr��_date__setstater�r{r�r�r�)r�rrrr�rrrr�$s($



zdate.__new__c	Cs(t�|�\	}}}}}}}}	}
||||�Sr)r/�	localtime)r��trr0r1r2r3r4�weekday�jday�dstrrr�
fromtimestampFszdate.fromtimestampcC�t��}|�|�Sr�r/�timer��r�r�rrr�todayL�z
date.todaycCst|�\}}}||||�Sr)r+)r�r*rr0r1rrr�fromordinalRszdate.fromordinalcC�Ft|t�std��y|t|��Stk
r@td|����YnXdS�N�#fromisoformat: argument must be str�Invalid isoformat string: )rmrnrorb�	Exceptionr=)r��date_stringrrr�
fromisoformat\s
zdate.fromisoformatcCs d|jj|jj|j|j|jfS)Nz%s.%s(%d, %d, %d))r�r�r�r�r�r�r�rrrr�ks
z
date.__repr__cCs.|��dpd}dt|t|j|j|jfS)Nr.z%s %s %2d 00:00:00 %04d)�	toordinal�	_DAYNAMES�_MONTHNAMESr�r�r��r�r�rrr�ctime�s
z
date.ctimecCst|||���Sr)r^rY�r�rArrrrW�rz
date.strftimecC�:t|t�stdt|�j��t|�dkr2|�|�St|�S�Nzmust be str, not %sr�rmrnrorprwrSrWrrrr�
__format__��


zdate.__format__cCsd|j|j|jfS)Nz%04d-%02d-%02d)r�r�r�r�rrr�	isoformat�s	zdate.isoformatcCr�r)r�r�rrrr�rz	date.yearcCr�r)r�r�rrrr�rz
date.monthcCr�r)r�r�rrrr�rzdate.daycCst|j|j|jdddd�S)Nrr)r5r�r�r�r�rrrrY�szdate.timetuplecC�t|j|j|j�Sr)r!r�r�r�r�rrrr���zdate.toordinalcCs:|dkr|j}|dkr|j}|dkr*|j}t|�|||�Sr)r�r�r�rp)r�rrrrrrrU�szdate.replacecCst|t�r|�|�dkStSr��rmr�rr�r�rrrr��r�zdate.__eq__cCst|t�r|�|�dkStSr�rr�rrrr��r�zdate.__le__cCst|t�r|�|�dkStSr�rr�rrrr��r�zdate.__lt__cCst|t�r|�|�dkStSr�rr�rrrr��r�zdate.__ge__cCst|t�r|�|�dkStSr�rr�rrrr��r�zdate.__gt__cCsB|j|j|j}}}|j|j|j}}}t|||f|||f�Sr)r�r�r�r)r�r�rr0r1Zy2Zm2Zd2rrrr�sz	date._cmpcCr�r�r�r�rrrr��s
z
date.__hash__cCsFt|t�rB|��|j}d|kr,tkr:nn
t�|�Std��tS)Nr�result out of range)	rmrJr�rI�_MAXORDINALr�r�r�r�)r�r�Zorrrr��s

zdate.__add__cCsDt|t�r|t|j�St|t�r@|��}|��}t||�StSr)rmrJrIr�r�r�)r�r��days1�days2rrrr��s

zdate.__sub__cCs|��ddSr,�r�r�rrrr�	rzdate.weekdaycCs|��dpdS)Nr.rr�rrr�
isoweekdayrzdate.isoweekdaycCs�|j}t|�}t|j|j|j�}t||d�\}}|dkr^|d8}t|�}t||d�\}}n$|dkr�|t|d�kr�|d7}d}||d|dfS)Nr.rri4)r��_isoweek1mondayr!r�r�r&)r�r�week1mondayr�Zweekrrrr�isocalendars
zdate.isocalendarcCs&t|jd�\}}t|||j|jg�fS�N�)r&r�r�r�r�)r��yhi�ylorrrr�2�zdate._getstatecCs"|\}}|_|_|d||_dSr)r�r�r�)r��stringrrrrr�
__setstate6rzdate.__setstatecCr�rr�r�rrrr�:r	zdate.__reduce__)NN)NNN)'rwr�r�r�r��classmethodr�r�r�r�r�rrWrrr�r�rrrrYr�rUr�r�r�r�r�rr�r�r�r�r�rrr�r�r�rrrrr�sD
"

	
r�r#)rIc@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
r�rcC�td��dS)Nz&tzinfo subclass must override tzname()�ZNotImplementedError�r��dtrrrrQKrz
tzinfo.tznamecCr)Nz)tzinfo subclass must override utcoffset()rrrrrrPOrztzinfo.utcoffsetcCr)Nz#tzinfo subclass must override dst()rrrrrr�Sr
z
tzinfo.dstcCs�t|t�std��|j|k	r$td��|��}|dkr<td��|��}|dkrTtd��||}|r�||7}|��}|dkr�td��||S)Nz&fromutc() requires a datetime argumentzdt.tzinfo is not selfz0fromutc() requires a non-None utcoffset() resultz*fromutc() requires a non-None dst() resultz;fromutc(): dt.dst gave inconsistent results; cannot convert)rm�datetimeror�r=rPr�)r�r ZdtoffZdtdst�deltarrr�fromutc[s"

ztzinfo.fromutccCsft|dd�}|r|�}nd}t|dd�}|r4|�}nt|dd�pBd}|dkrV|j|fS|j||fSdS)N�__getinitargs__rZ__getstate__Z__dict__)rTr�)r�Zgetinitargsr�ZgetstateZstaterrrr�xs
ztzinfo.__reduce__N)	rwr�r�r�rQrPr�r#r�rrrrr�Dsr�c@s&eZdZdZdAdd�dd�Zedd��Zed	d
��Zedd��Zed
d��Z	edd��Z
edd��Zdd�Zdd�Z
dd�Zdd�Zdd�ZdBdd�Zd d!�Zd"d#�Zd$d%�ZdCd'd(�ZeZed)d*��Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�ZdDdd�d6d7�ZdEd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dS)Fr�)�_hour�_minute�_second�_microsecond�_tzinfor��_foldrN�r�cCs�t|ttf�r�t|�dkr�t|dd��d@dkr�t|t�rhy|�d�}Wntk
rftd��YnXt�	|�}|�
||p~d�d|_|St|||||�\}}}}}t
|�t�	|�}||_||_||_||_||_d|_||_|S)	Nr-rr�r%r�znFailed to encode latin1 string when unpickling a time object. pickle.load(data, encoding='latin1') is assumed.r)rmr�rnrSr�r�r�r=rXr��_time__setstater�r�r�r%r&r'r(r)r*)r�rr�r�rOr�r�r�rrrr��s0



ztime.__new__cCr�r�r%r�rrrr�rz	time.hourcCr�r�r&r�rrrr��rztime.minutecCr�r�r'r�rrrr��rztime.secondcCr�r�r(r�rrrrO�rztime.microsecondcCr�r�r)r�rrrr��rztime.tzinfocCr�r�r*r�rrrr��rz	time.foldcCs$t|t�r|j|dd�dkStSdS)NT��allow_mixedr�rmr�rr�r�rrrr��s
ztime.__eq__cCr�r�r6r�rrrr��r�ztime.__le__cCr�r�r6r�rrrr��r�ztime.__lt__cCr�r�r6r�rrrr��r�ztime.__ge__cCr�r�r6r�rrrr�r�ztime.__gt__Fc
Cs�|j}|j}d}}||kr"d}n|��}|��}||k}|rht|j|j|j|jf|j|j|j|jf�S|dksx|dkr�|r�dStd��|jd|j|tdd�}|jd|j|tdd�}	t||j|jf|	|j|jf�S)NTrz$cannot compare naive and aware timesr�rrG)	r)rPrr%r&r'r(rorJ)
r�r�r5�mytz�ottz�myoff�otoff�base_compareZmyhhmmZothhmmrrrr
s*
z	time._cmpcCs�|jdkr�|jr|jdd�}n|}|��}|sBt|��d�|_nztt|j|j	d�|tdd��\}}|tdd�}d|kr�dkr�nntt
|||j|j��|_nt|||j|jf�|_|jS)	Nrrr+�r7r8rrFrGr%)
r�r�rUrPr�r�r&rJrr�r�r�rO)r�r��tzoffr[r0rrrr�&s
z
time.__hash__cCs|��}t|�Sr)rPrN)r�rKrrr�_tzstr=rztime._tzstrcCs�|jdkrd|j|jf}n|jdkr2d|j}nd}d|jj|jj|j|j|f}|jdk	rx|dd�d|jd}|jr�|dd�d	}|S)
Nrz, %d, %dz, %drCz%s.%s(%d, %d%s)r�, tzinfo=%r�)�	, fold=1))	r(r'r�r�r�r%r&r)r*�r�rLrrrr�Bs


z
time.__repr__r6cCs0t|j|j|j|j|�}|��}|r,||7}|Sr)rBr%r&r'r(r>)r�r@rLr�rrrrUs	
ztime.isoformatcCr�r�)rmrnrorlr�r=)r�Ztime_stringrrrr�gs
ztime.fromisoformatc	Cs(ddd|j|j|jdddf	}t|||�S)Nilrrr)r%r&r'r^)r�rArYrrrrWss
z
time.strftimecCrrrrrrrr~rztime.__format__cC�(|jdkrdS|j�d�}td|�|S�NrP�r)rPrt�r�rZrrrrP��


ztime.utcoffsetcCs&|jdkrdS|j�d�}t|�|Sr�r)rQrr�r�rqrrrrQ��

ztime.tznamecCrC�Nr��r)r�rtrFrrrr���
	

ztime.dstTcCsl|dkr|j}|dkr|j}|dkr*|j}|dkr8|j}|dkrF|j}|dkrT|j}t|�||||||d�S�NTr+)rr�r�rOr�r*rp)r�rr�r�rOr�r�rrrrU�sztime.replacer$cCspt|jd�\}}t|d�\}}|j}|jr:|dkr:|d7}t||j|j|||g�}|jdkrb|fS||jfSdS�Nrr$�)r&r(r%r*r�r&r'r))r��protocol�us2�us3�us1r[�	basestaterrrr��s
ztime._getstatecCst|dk	rt|t�std��|\}|_|_}}}|dkrHd|_|d|_nd|_||_|d>|Bd>|B|_||_dS)N�bad tzinfo state argr,rrPrr_)	rm�
_tzinfo_classror&r'r*r%r(r))r�rr�r[rTrRrSrrrr�sztime.__setstatecCst|�|�fSr)r�r��r�rQrrr�
__reduce_ex__�r	ztime.__reduce_ex__cC�
|�d�Sr�rYr�rrrr��r	ztime.__reduce__)rrrrN�F�r6)NNNNT�r$)#rwr�r�r�r�r�rr�r�rOr�r�r�r�r�r�r�rr�r>r�rr�rr�rWrrPrQr�rUr�r-rYr�rrrrr��s>(

		



r�c@s�eZdZejejZdcdd�dd�Zedd��Zedd	��Z	ed
d��Z
edd
��Zedd��Zedd��Z
edd��Zedddd��Zedd��Zededd��Zedd��Zedfdd��Zedd ��Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zdgdd�d/d0�Zd1d2�Zdhd3d4�Zd5d6�Zdid9d:�Zd;d<�Z d=d>�Z!ed?d@��Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*djdRdS�Z+dTdU�Z,e,Z-dVdW�Z.dXdY�Z/dkd[d\�Z0d]d^�Z1d_d`�Z2dadb�Z3dS)lr!Nrr+c	Cst|ttf�r�t|�dkr�dt|dd��d@kr>dkr�nnVt|t�rxyt|d�}Wntk
rvtd��YnXt�|�}
|
�	||�d	|
_
|
St|||�\}}}t|||||	�\}}}}}	t
|�t�|�}
||
_||
_||
_||
_||
_||
_||
_||
_d	|
_
|	|
_|
S)
Nr`rrr$r,r#r�zrFailed to encode latin1 string when unpickling a datetime object. pickle.load(data, encoding='latin1') is assumed.r)rmr�rnrSr�r�r=rXr��_datetime__setstater�r{r�r�r�r�r�r%r&r'r(r)r*)r�rrrrr�r�rOr�r�r�rrrr��s8(


zdatetime.__new__cCr�rr.r�rrrrrz
datetime.hourcCr�rr/r�rrrr�rzdatetime.minutecCr�rr0r�rrrr�rzdatetime.secondcCr�rr1r�rrrrO rzdatetime.microsecondcCr�rr2r�rrrr�%rzdatetime.tzinfocCr�rr3r�rrrr�*rz
datetime.foldc	Cspt�|�\}}t|d�}|dkr4|d7}|d8}n|dkrL|d8}|d7}|rVtjntj}||�\	}}}	}
}}}
}}t|d�}||||	|
||||�}|dk�rbd}||kr�tj�	d�r�|S|||�dd�\}}}	}
}}||||	|
||||�}||t
d|�}|jdk�rl|||t
dd��dd�\}}}	}
}}||||	|
||||�}||k�rld|_n
|�
|�}|S)	Nr�r�rrr}r�Zwinr-)r�r�r�r/�gmtimer��min�sysZplatformZ
startswithrJrIr*r#)r�r�rkr�Zfracr?Z	converterrr0r1r2r3r4r�r�r�Zresult�max_fold_secondsZprobe1ZtransZprobe2rrr�_fromtimestamp.s4


 *

zdatetime._fromtimestampcCst|�|�||dk	|�Sr)r�rd)r�r�r�rrrr�Zszdatetime.fromtimestampcCs|�|dd�S)NT)rdr�rrr�utcfromtimestampdrzdatetime.utcfromtimestampcCst��}|�||�Srr�)r�r�r�rrr�nowir�zdatetime.nowcCr�r)r/r�rer�rrr�utcnowor�zdatetime.utcnowTcCs\t|t�std��t|t�s$td��|dkr2|j}||j|j|j|j|j	|j
|j||jd�	S)Nz%date argument must be a date instancez%time argument must be a time instanceTr+)
rm�_date_classro�_time_classr�rrrrr�r�rOr�)r�r�r�r�rrr�combineus

zdatetime.combinecCs�t|t�std��|dd�}|dd�}yt|�}Wn"tk
rXtd|����YnX|r�yt|�}Wq�tk
r�td|����Yq�Xndddddg}|||�S)Nr�rr`ir�)rmrnrorbr=rl)r�r�ZdstrreZdate_componentsZtime_componentsrrrr��s
zdatetime.fromisoformatcCsD|��}|dkrd}n|r d}nd}t|j|j|j|j|j|j|�S)Nrrr)r�r5rrrrr�r�)r�r�rrrrY�szdatetime.timetuplec
s�tddd��d}|�tdd�}�fdd�}||�|}||}||�}||kr�|||f|j}||�|}||kr�|Sn||}||}||�}	|	|kr�|S||kr�|Sttf|j||�S)N�rr�rcs>t�|�dd�\}}}}}}t||||||��tdd�S)Nr-rr)r/r�r!rJ)r]rr0r1r2r3r4�Zepochrr�local�szdatetime._mktime.<locals>.local)r!rJr��maxra)
r�rcr�rmr�Zu1Zt1Zu2r�Zt2rrlr�_mktime�s(zdatetime._mktimecCs0|jdkr |��}||jdS|t��SdS)Nr�)r)rorO�_EPOCHr�rBrrr�	timestamp�s
zdatetime.timestampcCsT|��}|r||8}|j|j|j}}}|j|j|j}}}t||||||d�Sr�)rPrrrrr�r�r5)r�rZrr0r1r2r3r4rrr�utctimetuple�szdatetime.utctimetuplecCr	r)r�r�r�r�r�rrrr��rz
datetime.datecCst|j|j|j|j|jd�S�Nr+)r�rr�r�rOr�r�rrrr��rz
datetime.timecCs t|j|j|j|j|j|jd�Srs)r�rr�r�rOr)r�r�rrr�timetz�r�zdatetime.timetzc	
Cs�|dkr|j}|dkr|j}|dkr*|j}|dkr8|j}|dkrF|j}|dkrT|j}|dkrb|j}|dkrp|j}|	dkr~|j}	t	|�|||||||||	d�	SrN)
rrrrr�r�rOr�r�rp)
r�rrrrr�r�rOr�r�rrrrU�s(zdatetime.replacecCs�|jdkr|��}n|ttdd�}t�|�}t|dd��}y|j}|j}WnDt	k
r�|tt�
|�dd��}t�d|�}t||�}YnXtt|d�|�}|S)Nr)r9r-z%Z)
r�rorprJr/r�r!Z	tm_gmtoffZtm_zonervr`rWrj)r�ZtsZlocaltmrmZgmtoffZzoner"r�rrr�_local_timezones



zdatetime._local_timezonecCs�|dkr|��}nt|t�s$td��|j}|dkrF|��}|�|�}n,|�|�}|dkrr|jdd���}|�|�}||kr~|S||j|d�}|�|�S)Nz)tz argument must be an instance of tzinfo�r�)rurmr�rorPrUr#)r�r�r7Zmyoffsetrkrrr�
astimezones 



zdatetime.astimezonecCs:|��dpd}dt|t|j|j|j|j|j|jfS)Nr.z%s %s %2d %02d:%02d:%02d %04d)	r�r�r�r�r�r%r&r'r�rrrrr0szdatetime.ctime�Tr6cCsNd|j|j|j|ft|j|j|j|j|�}|��}t	|�}|rJ||7}|S)Nz%04d-%02d-%02d%c)
r�r�r�rBr%r&r'r(rPrN)r��sepr@rLrKr�rrrr:szdatetime.isoformatcCs�|j|j|j|j|j|j|jg}|ddkr2|d=|ddkrD|d=d|jj|jj	d�
tt|��f}|j
dk	r�|dd�d|j
d}|jr�|dd�d}|S)Nrrr�r�r?r@rA)r�r�r�r%r&r'r(r�r�r�rVZmaprnr)r*)r�ZLrLrrrr�Ts
zdatetime.__repr__cCs|jdd�S)Nz )ry)rr�rrrr�grzdatetime.__str__cCsddl}|�|||�Sr�)�	_strptimeZ_strptime_datetime)r�r�r>rzrrr�strptimekr�zdatetime.strptimecC�(|jdkrdS|j�|�}td|�|SrDrErFrrrrPqrGzdatetime.utcoffsetcCs&|jdkrdS|j�|�}t|�|SrrHrIrrrrQzrJzdatetime.tznamecCr|rKrLrFrrrr��rMzdatetime.dstcCs2t|t�r|j|dd�dkSt|t�s*tSdSdS)NTr4rF)rmr!rr�r�r�rrrr��s


zdatetime.__eq__cCs4t|t�r|�|�dkSt|t�s&tSt||�dSr��rmr!rr�r�r�r�rrrr���


zdatetime.__le__cCs4t|t�r|�|�dkSt|t�s&tSt||�dSr�r}r�rrrr��r~zdatetime.__lt__cCs4t|t�r|�|�dkSt|t�s&tSt||�dSr�r}r�rrrr��r~zdatetime.__ge__cCs4t|t�r|�|�dkSt|t�s&tSt||�dSr�r}r�rrrr��r~zdatetime.__gt__Fc		Cs�|j}|j}d}}||kr"d}nT|��}|��}|rn||j|jd���krRdS||j|jd���krndS||k}|r�t|j|j|j|j|j	|j
|jf|j|j|j|j|j	|j
|jf�S|dks�|dkr�|r�dStd��||}|j
dkr�dS|r�dp�dS)NTr+rz(cannot compare naive and aware datetimesrrr)r)rPrUr�rr�r�r�r%r&r'r(rorI)	r�r�r5r7r8r9r:r;Zdiffrrrr�s8

z
datetime._cmpc
Cs�t|t�stSt|��|j|j|j|jd�}||7}t|j	d�\}}t|d�\}}d|j
krhtkr�nn&t�
t�|j
�t||||j|jd��Std��dS)Nrir�r�rrvr)rmrJr�r�r%r&r'r(r&r9rIr
r!rjr�r�r�r;r)r�)r�r�r"rZremr�r�rrrr��s 

zdatetime.__add__c	Cs�t|t�s"t|t�r||StS|��}|��}|j|jd|jd}|j|jd|jd}t|||||j|j�}|j	|j	kr�|S|�
�}|�
�}||kr�|S|dks�|dkr�td��|||S)Nr�r�z(cannot mix naive and timezone-aware time)rmr!rJr�r�r'r&r%r(r)rPro)	r�r�rrZsecs1Zsecs2Zbaser9r:rrrr��s(


zdatetime.__sub__cCs�|jdkr�|jr|jdd�}n|}|��}|dkrFt|��d�|_nDt|j|j|j	�}|j
d|jd|j}tt
|||j�|�|_|jS)Nrrr+r�r�)r�r�rUrPr�r�r!rrrrr�r�rJrO)r�r�r=rIr9rrrr�s
zdatetime.__hash__r$c	Cs�t|jd�\}}t|jd�\}}t|d�\}}|j}|jrJ|dkrJ|d7}t||||j|j|j|j	|||g
�}|j
dkr~|fS||j
fSdSrO)r&r�r(r�r*r�r�r%r&r'r))	r�rQrrrRrSrTr0rUrrrr�#s
zdatetime._getstatec	
Cs�|dk	rt|t�std��|\
}}}|_|_|_|_}}}|dkrTd|_|d|_nd|_||_|d||_	|d>|Bd>|B|_
||_dS)NrVr,rrPrrr_)rmrWror�r%r&r'r*r�r�r(r))	r�rr�rrr0rTrRrSrrrr2s zdatetime.__setstatecCs|j|�|�fSrr�rXrrrrYAr	zdatetime.__reduce_ex__cCrZrr[r�rrrr�Dr	zdatetime.__reduce__)NNrrrrNrr)T)NNNNNNNTr)rxr6r\r^)4rwr�r�r�r�r�r�r�rr�r�rOr�r�rrdr�rerfrgrjr�rYrorqrrrtrUrurwrrr�r�r{rPrQr�r�r�r�r�r�rr�r�r�r�r�r_rYr�rrrrr!�sj#,	
#	


	

%
r!cCs8d}t|dd�}|dd}||}||kr4|d7}|S)Nr$rr-r.)r!)rZTHURSDAYZfirstdayZfirstweekdayrrrrrMsrc@s�eZdZdZe�Zefdd�Zeddd��Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�Zeddd�ZeZedd��ZdS)rj)�_offset�_namecCslt|t�std��||jkr,|s&|jSd}nt|t�s>td��|j|krV|jks`ntd��|�	||�S)Nzoffset must be a timedeltazname must be a stringzYoffset must be a timedelta strictly between -timedelta(hours=24) and timedelta(hours=24).)
rmrJro�_Omittedrkrn�
_minoffset�
_maxoffsetr=�_create)r�rZrqrrrr�]s


ztimezone.__new__NcCst�|�}||_||_|Sr)r�r�rr�)r�rZrqr�rrrr�ls
ztimezone._createcCs|jdkr|jfS|j|jfSr)r�rr�rrrr$ss
ztimezone.__getinitargs__cCst|t�r|j|jkStSr)rmrjrr�r�rrrr�ys
ztimezone.__eq__cCs
t|j�Sr)r�rr�rrrr�~r	ztimezone.__hash__cCsL||jkrdS|jdkr0d|jj|jj|jfSd|jj|jj|j|jfS)Nzdatetime.timezone.utcz	%s.%s(%r)z
%s.%s(%r, %r))rkr�r�r�r�rr�rrrr��s



ztimezone.__repr__cCs
|�d�Sr)rQr�rrrr��r	ztimezone.__str__cCs$t|t�s|dkr|jStd��dS)Nz8utcoffset() argument must be a datetime instance or None)rmr!rrorrrrrP�sztimezone.utcoffsetcCs:t|t�s|dkr.|jdkr(|�|j�S|jStd��dS)Nz5tzname() argument must be a datetime instance or None)rmr!r��_name_from_offsetrrorrrrrQ�s

ztimezone.tznamecCs"t|t�s|dkrdStd��dS)Nz2dst() argument must be a datetime instance or None)rmr!rorrrrr��rsztimezone.dstcCs2t|t�r&|j|k	rtd��||jStd��dS)Nzfromutc: dt.tzinfo is not selfz6fromutc() argument must be a datetime instance or None)rmr!r�r=rrorrrrr#�s



ztimezone.fromutcr%r)r7r;c
Cs�|sdS|td�kr d}|}nd}t|tdd��\}}t|tdd��\}}|j}|j}|r�d|�|d�d	|d�d	|d�d
|d��	S|r�d|�|d�d	|d�d	|d��Sd|�|d�d	|d��S)NZUTCrrDrErrFrGZ02drcrdZ06d)rJr&r9r;)r"rMr7r\r8r9r;rrrr��s( ztimezone._name_from_offsetr)rwr�r�r�rXr�r�rr�r$r�r�r�r�rPrQr�r#rJr�r�Zstaticmethodr�rrrrrjXs"	rjr<rkrv)Z*)�__doc__r]):r�r/Zmathr�rbrryrzr
rrZdbmr rRrrrrr!r'r(r)r+r�r�r5rBrNr^rbrhrlrrrtrxr{r�r�r�r�rJrarnZ
resolutionr�rhr�rWrir!rrjr�rkrpZ	_datetimeZImportErrorr�rrrrZ<module>s�
	?
@')
=


9DWgtG