add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
B

�/g^�\c@s�ddlmZddlZddlZddlZddlZddlZddgZdd�Zdd�Z	ej
jZej
j
Ze�dejejB�ZGd	d�dej�ZdS)
���DecimalN�Fraction�gcdcCsfddl}|�dtd�t|�tkr2t|�kr\nn&|p<|dkrPt�||�St�||�St||�S)Nrz6fractions.gcd() is deprecated. Use math.gcd() instead.�)�warningsZwarnZDeprecationWarning�type�int�mathr�_gcd)�a�br�r
�!/usr/lib64/python3.7/fractions.pyrs cCsx|r|||}}qW|S�Nr
�rrr
r
rr
 sr
aC
    \A\s*                      # optional whitespace at the start, then
    (?P<sign>[-+]?)            # an optional sign, then
    (?=\d|\.\d)                # lookahead for digit or .digit
    (?P<num>\d*)               # numerator (possibly empty)
    (?:                        # followed by
       (?:/(?P<denom>\d+))?    # an optional denominator
    |                          # or
       (?:\.(?P<decimal>\d*))? # an optional fractional part
       (?:E(?P<exp>[-+]?\d+))? # and optional exponent
    )
    \s*\Z                      # and optional whitespace to finish
cs�eZdZdZdQdd��fdd�Zedd	��Zed
d��ZdRd
d�Ze	dd��Z
e	dd��Zdd�Zdd�Z
dd�Zdd�Zeeej�\ZZdd�Zeeej�\ZZdd�Zeeej�\ZZdd �Zeeej�\ZZd!d"�Z d#d$�Z!d%d&�Z"d'd(�Z#d)d*�Z$d+d,�Z%d-d.�Z&d/d0�Z'd1d2�Z(d3d4�Z)d5d6�Z*d7d8�Z+dSd9d:�Z,d;d<�Z-d=d>�Z.d?d@�Z/dAdB�Z0dCdD�Z1dEdF�Z2dGdH�Z3dIdJ�Z4dKdL�Z5dMdN�Z6dOdP�Z7�Z8S)Tr��
_numerator�_denominatorrNT��
_normalizecsRtt|��|�}|dk�rdt|�tkr6||_d|_|St|tj	�rV|j
|_|j|_|St|tt
f�rx|��\|_|_|St|t��rZt�|�}|dkr�td|��t|�d�p�d�}|�d�}|r�t|�}nvd}|�d�}|�rdt|�}||t|�}||9}|�d�}	|	�rBt|	�}	|	d	k�r4|d|	9}n|d|	9}|�d
�dk�rb|}ntd��nft|�tk�r�t|�k�r�nnn@t|tj	��r�t|tj	��r�|j
|j|j
|j}}ntd
��|d	k�r�td|��|�rBt|�tk�rt|�k�r(nnt�||�}
|d	k�r2|
}
n
t||�}
||
}||
}||_||_|S)N�z Invalid literal for Fraction: %rZnumZ0�denom�decimal�
�exprZsignz-z2argument should be a string or a Rational instancez+both arguments should be Rational instanceszFraction(%s, 0))Zsuperr�__new__rrrr�
isinstance�numbers�Rational�	numerator�denominator�floatr�as_integer_ratio�str�_RATIONAL_FORMATZmatch�
ValueErrorZgroupZlen�	TypeErrorZZeroDivisionErrorr	rr
)�clsrr r�selfZmrrZscalerZg��	__class__r
rrTsr







$

$

zFraction.__new__cCsDt|tj�r||�St|t�s8td|j|t|�jf��||���S)Nz.%s.from_float() only takes floats, not %r (%s))rr�Integralr!r&�__name__rr")r'Zfr
r
r�
from_float�s
zFraction.from_floatcCsVddlm}t|tj�r&|t|��}n$t||�sJtd|j|t|�jf��||�	��S)Nrrz2%s.from_decimal() only takes Decimals, not %r (%s))
rrrrr+rr&r,rr")r'Zdecrr
r
r�from_decimal�s
zFraction.from_decimal�@Bc
Cs�|dkrtd��|j|kr"t|�Sd\}}}}|j|j}}xP||}|||}	|	|kr\P||||||	f\}}}}||||}}q>W|||}
t||
|||
|�}t||�}t||�t||�kr�|S|SdS)Nrz$max_denominator should be at least 1)rrrr)r%rrr�abs)
r(Zmax_denominatorZp0Zq0Zp1Zq1ZnZdrZq2ZkZbound1Zbound2r
r
r�limit_denominator�s& 

zFraction.limit_denominatorcC�|jSr)r�rr
r
rr�zFraction.numeratorcCr2r)rr3r
r
rr r4zFraction.denominatorcCsd|jj|j|jfS)Nz
%s(%s, %s))r*r,rr�r(r
r
r�__repr__�zFraction.__repr__cCs(|jdkrt|j�Sd|j|jfSdS)Nrz%s/%s)rr#rr5r
r
r�__str__s

zFraction.__str__csT��fdd�}d�jd|_�j|_��fdd�}d�jd|_�j|_||fS)NcsPt|ttf�r�||�St|t�r0�t|�|�St|t�rH�t|�|�StSdSr)rrrr!�complex�NotImplementedr��fallback_operator�monomorphic_operatorr
r�forwardvs


z-Fraction._operator_fallbacks.<locals>.forwardZ__csZt|tj�r�||�St|tj�r4�t|�t|��St|tj�rR�t|�t|��StSdSr)rrrZRealr!�Complexr9r:�rrr;r
r�reverse�s
z-Fraction._operator_fallbacks.<locals>.reverseZ__r)r,Z__doc__)r=r<r>rAr
r;r�_operator_fallbacks&sP	
zFraction._operator_fallbackscCs,|j|j}}t|j||j|||�Sr�r rr�rrZdaZdbr
r
r�_add��z
Fraction._addcCs,|j|j}}t|j||j|||�SrrCrDr
r
r�_sub�rFz
Fraction._subcCst|j|j|j|j�Sr�rrr rr
r
r�_mul�r4z
Fraction._mulcCst|j|j|j|j�SrrHrr
r
r�_div�sz
Fraction._divcCst�||�Sr�r	�floorrr
r
r�__floordiv__�r4zFraction.__floordiv__cCst�||�SrrKr@r
r
r�
__rfloordiv__�r4zFraction.__rfloordiv__cCs||}|||Srr
)rr�divr
r
r�__mod__�r7zFraction.__mod__cCs||}|||Srr
)rrrOr
r
r�__rmod__�r7zFraction.__rmod__cCs�t|tj�r�|jdkr�|j}|dkr>t|j||j|dd�S|jdkrft|j||j|dd�St|j||j|dd�Sq�t|�t|�Snt|�|SdS)NrrFr)	rrrr rrrrr!)rrZpowerr
r
r�__pow__�s 




zFraction.__pow__cCs\|jdkr|jdkr||jSt|tj�r<t|j|j�|S|jdkrP||jS|t|�S)Nrr)	rrrrrrrr r!r@r
r
r�__rpow__�s


zFraction.__rpow__cCst|j|jdd�S�NFr�rrrr3r
r
r�__pos__�r4zFraction.__pos__cCst|j|jdd�SrTrUr3r
r
r�__neg__�r4zFraction.__neg__cCstt|j�|jdd�SrT)rr0rrr3r
r
r�__abs__�r4zFraction.__abs__cCs*|jdkr|j|jS|j|jSdS)Nrrr3r
r
r�	__trunc__�s
zFraction.__trunc__cCs|j|jSr�rr r3r
r
r�	__floor__�r4zFraction.__floor__cCs|j|jSrrZr3r
r
r�__ceil__szFraction.__ceil__cCs�|dkrZt|j|j�\}}|d|jkr,|S|d|jkrB|dS|ddkrR|S|dSdt|�}|dkr�tt||�|�Stt||�|�SdS)Nrrrr)Zdivmodrr r0rZround)r(ZndigitsrLZ	remainderZshiftr
r
r�	__round__szFraction.__round__cCsPt|jtdt�}|st}nt|j�|t}|dkr:|n|}|dkrLdS|S)Nrri����i����)Zpowr�_PyHASH_MODULUS�_PyHASH_INFr0r)r(ZdinvZhash_Zresultr
r
r�__hash__!szFraction.__hash__cCs�t|�tkr |j|ko|jdkSt|tj�rD|j|jkoB|j|jkSt|tj	�r`|j
dkr`|j}t|t�r�t
�|�s~t
�|�r�d|kS||�|�kSntSdS)Nrr�)rrrrrrrrr r?ZimagZrealr!r	�isnan�isinfr-r:rr
r
r�__eq__7s
zFraction.__eq__cCsht|tj�r&||j|j|j|j�St|t�r`t�	|�sDt�
|�rN|d|�S|||�|��SntSdS)Nra)
rrrrr rrr!r	rbrcr-r:)r(ZotherZopr
r
r�_richcmpLs

zFraction._richcmpcC�|�|tj�Sr)re�operatorZltrr
r
r�__lt__br4zFraction.__lt__cCrfr)rergZgtrr
r
r�__gt__fr4zFraction.__gt__cCrfr)rergZlerr
r
r�__le__jr4zFraction.__le__cCrfr)rergZgerr
r
r�__ge__nr4zFraction.__ge__cCs
t|j�Sr)Zboolrr3r
r
r�__bool__rszFraction.__bool__cCs|jt|�ffSr)r*r#r5r
r
r�
__reduce__zszFraction.__reduce__cC� t|�tkr|S|�|j|j�Sr�rrr*rrr5r
r
r�__copy__}�zFraction.__copy__cCrnrro)r(Zmemor
r
r�__deepcopy__�rqzFraction.__deepcopy__)rN)r/r)9r,Z
__module__Z__qualname__Z	__slots__rZclassmethodr-r.r1Zpropertyrr r6r8rBrErgZaddZ__add__Z__radd__rGZsubZ__sub__Z__rsub__rIZmulZ__mul__Z__rmul__rJZtruedivZ__truediv__Z__rtruediv__rMrNrPrQrRrSrVrWrXrYr[r\r]r`rdrerhrirjrkrlrmrprrZ
__classcell__r
r
r)rr<sTm
7k
)rrr	rrgZreZsysZ__all__rr
Z	hash_infoZmodulusr^Zinfr_ZcompileZVERBOSEZ
IGNORECASEr$rrr
r
r
rZ<module>s