Edit File: fractions.cpython-36.opt-2.pyc
3 � \W\������������������@���s����d�dl�mZ�d�dlZd�dlZd�dlZd�dlZd�dlZddgZdd��Zdd��Z ej jZej j ZejdejejB��ZG�d d��dej�ZdS�) �����)�DecimalN�Fraction�gcdc�������������C���sf���dd�l�}|jdtd��t|��t��ko0t|�kn��r\|p<|�dk�rPtj|�|��S�tj|�|�S�t|�|�S�)Nr���z6fractions.gcd() is deprecated. Use math.gcd() instead.����)�warnings�warn�DeprecationWarning�type�int�mathr����_gcd)�a�br�����r����!/usr/lib64/python3.6/fractions.pyr������s���� c�������������C���s���x|r||�|��}�}qW�|�S�)Nr���)r ���r���r���r���r���r��� ���s����r���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 c�������������������s���e�Zd�ZdRZdSdd���fdd�Zed d ���Zedd���ZdTdd�Ze dd���Z e dd���Zdd��Zdd��Z dd��Zdd��Zeeej�\ZZdd��Zeeej�\ZZdd��Zeeej�\ZZd d!��Zeeej�\ZZd"d#��Z d$d%��Z!d&d'��Z"d(d)��Z#d*d+��Z$d,d-��Z%d.d/��Z&d0d1��Z'd2d3��Z(d4d5��Z)d6d7��Z*d8d9��Z+dUd:d;�Z,d<d=��Z-d>d?��Z.d@dA��Z/dBdC��Z0dDdE��Z1dFdG��Z2dHdI��Z3dJdK��Z4dLdM��Z5dNdO��Z6dPdQ��Z7���Z8S�)Vr���� _numerator�_denominatorr���NT)� _normalizec���������������sR��t�t|��j|��}|d�k�rdt|�tkr6||_d|_|S�t|tj �rV|j |_|j|_|S�t|tt f�rx|j��\|_|_|S�t|t��rZtj|�}|d�kr�td|���t|jd�p�d�}|jd�}|r�t|�}nvd}|jd�}|�rdt|��}||�t|��}||9�}|jd�} | �rBt| �} | d k�r4|d| �9�}n|d| ��9�}|jd �dk�rb|�}ntd��nft|�t��k�o�t|�kn���r�n@t|tj ��r�t|tj ��r�|j |j�|j |j��}}ntd ��|d k�r�td|���|�rBt|�t��k�ot|�kn���r(tj||�} |d k��r2| �} n t||�} || �}|| �}||_||_|S�)N����z Invalid literal for Fraction: %rZnum�0�denom�decimal� ����expr���Zsign�-z2argument should be a string or a Rational instancez+both arguments should be Rational instanceszFraction(%s, 0))�superr����__new__r ���r ���r���r���� isinstance�numbers�Rational� numerator�denominator�floatr����as_integer_ratio�str�_RATIONAL_FORMAT�match� ValueError�group�len� TypeError�ZeroDivisionErrorr���r���r���)�clsr ���r!���r����self�mr���r���Zscaler����g)� __class__r���r���r���T���sr���� $ $ zFraction.__new__c�������������C���sD���t�|tj�r|�|�S�t�|t�s8td|�j|t|�jf���|�|j����S�)Nz.%s.from_float() only takes floats, not %r (%s))r���r����Integralr"���r*����__name__r ���r#���)r,����fr���r���r���� from_float����s���� zFraction.from_floatc�������������C���sV���ddl�m}�t|tj�r&|t|��}n$t||�sJtd|�j|t|�jf���|�|j ����S�)Nr���)r���z2%s.from_decimal() only takes Decimals, not %r (%s)) r���r���r���r���r1���r ���r*���r2���r ���r#���)r,���Zdecr���r���r���r����from_decimal����s���� zFraction.from_decimal�@B�c������� ������C���s����|dk�rt�d��|�j|kr"t|��S�d\}}}}|�j|�j�}}xP||�}|||��} | |kr\P�|||||��| f\}}}}||||���}}q>W�||�|�} t|| |��|| |���}t||�}t||���t||���kr�|S�|S�d�S�)Nr���z$max_denominator should be at least 1r���)r���r���r���r���)r'���r���r���r����abs) r-���Zmax_denominatorZp0Zq0Zp1Zq1�n�dr ���Zq2�kZbound1Zbound2r���r���r����limit_denominator����s&���� zFraction.limit_denominatorc�������������C���s���|�j�S�)N)r���)r ���r���r���r���r �����s����zFraction.numeratorc�������������C���s���|�j�S�)N)r���)r ���r���r���r���r!�����s����zFraction.denominatorc�������������C���s���d|�j�j|�j|�jf�S�)Nz %s(%s, %s))r0���r2���r���r���)r-���r���r���r����__repr__��s����zFraction.__repr__c�������������C���s(���|�j�dkrt|�j�S�d|�j|�j�f�S�d�S�)Nr���z%s/%s)r���r$���r���)r-���r���r���r����__str__��s���� zFraction.__str__c����������������sT������fdd�}d��j��d�|_��j|_���fdd�}d��j��d�|_��j|_||fS�)Nc����������������sP���t�|ttf�r�|�|�S�t�|t�r0��t|��|�S�t�|t�rH��t|��|�S�tS�d�S�)N)r���r ���r���r"����complex�NotImplemented)r ���r���)�fallback_operator�monomorphic_operatorr���r����forwardv��s���� z-Fraction._operator_fallbacks.<locals>.forward�__c����������������sZ���t�|tj�r�||��S�t�|tj�r4��t|�t|���S�t�|tj�rR��t|�t|���S�tS�d�S�)N)r���r���r���ZRealr"����Complexr>���r?���)r���r ���)r@���rA���r���r����reverse���s���� z-Fraction._operator_fallbacks.<locals>.reverseZ__r)r2����__doc__)rA���r@���rB���rE���r���)r@���rA���r����_operator_fallbacks&��s����P zFraction._operator_fallbacksc�������������C���s,���|�j�|j��}}t|�j|�|j|��||��S�)N)r!���r���r ���)r ���r����da�dbr���r���r����_add���s����z Fraction._addc�������������C���s,���|�j�|j��}}t|�j|�|j|��||��S�)N)r!���r���r ���)r ���r���rH���rI���r���r���r����_sub���s����z Fraction._subc�������������C���s���t�|�j|j�|�j|j��S�)N)r���r ���r!���)r ���r���r���r���r����_mul���s����z Fraction._mulc�������������C���s���t�|�j|j�|�j|j��S�)N)r���r ���r!���)r ���r���r���r���r����_div���s����z Fraction._divc�������������C���s���t�j|�|��S�)N)r����floor)r ���r���r���r���r����__floordiv__���s����zFraction.__floordiv__c�������������C���s���t�j||���S�)N)r���rN���)r���r ���r���r���r���� __rfloordiv__���s����zFraction.__rfloordiv__c�������������C���s���|�|�}|�||��S�)Nr���)r ���r����divr���r���r����__mod__���s����zFraction.__mod__c�������������C���s���||��}||�|��S�)Nr���)r���r ���rQ���r���r���r����__rmod__���s����zFraction.__rmod__c�������������C���s����t�|tj�r�|jdkr�|j}|dkr>t|�j|�|�j|�dd�S�|�jdkrft|�j|��|�j|��dd�S�t|�j�|��|�j�|��dd�S�q�t|��t|��S�nt|��|�S�d�S�)Nr���r���F)r���) r���r���r���r!���r ���r���r���r���r"���)r ���r���Zpowerr���r���r����__pow__���s ���� zFraction.__pow__c�������������C���s\���|�j�dkr|�jdkr||�j�S�t|tj�r<t|j|j�|��S�|�j�dkrP||�j�S�|t|���S�)Nr���r���) r���r���r���r���r���r���r ���r!���r"���)r���r ���r���r���r����__rpow__���s���� zFraction.__rpow__c�������������C���s���t�|�j|�jdd�S�)NF)r���)r���r���r���)r ���r���r���r����__pos__���s����zFraction.__pos__c�������������C���s���t�|�j�|�jdd�S�)NF)r���)r���r���r���)r ���r���r���r����__neg__���s����zFraction.__neg__c�������������C���s���t�t|�j�|�jdd�S�)NF)r���)r���r7���r���r���)r ���r���r���r����__abs__���s����zFraction.__abs__c�������������C���s*���|�j�dk�r|�j��|�j��S�|�j�|�j�S�d�S�)Nr���)r���r���)r ���r���r���r���� __trunc__���s���� zFraction.__trunc__c�������������C���s���|�j�|�j�S�)N)r ���r!���)r ���r���r���r���� __floor__���s����zFraction.__floor__c�������������C���s���|�j��|�j��S�)N)r ���r!���)r ���r���r���r����__ceil__��s����zFraction.__ceil__c�������������C���s����|d�krZt�|�j|�j�\}}|d�|�jk�r,|S�|d�|�jkrB|d�S�|d�dkrR|S�|d�S�dt|��}|dkr�tt|�|��|�S�tt|�|��|��S�d�S�)Nr���r���r���r���)�divmodr ���r!���r7���r����round)r-���ZndigitsrN���Z remainderZshiftr���r���r���� __round__��s����zFraction.__round__c�������������C���sP���t�|�jtd�t�}|st}nt|�j�|�t�}|�dkr:|n|�}|dkrLdS�|S�)Nr���r���r���������)�powr����_PyHASH_MODULUS�_PyHASH_INFr7���r���)r-���ZdinvZhash_�resultr���r���r����__hash__!��s����zFraction.__hash__c�������������C���s����t�|�tkr |�j|ko|�jdkS�t|tj�rD|�j|jkoB|�j|jkS�t|tj �r`|j dkr`|j}t|t�r�t j|�s~t j|�r�d|kS�|�|�j|�kS�ntS�d�S�)Nr���r���g��������)r ���r ���r���r���r���r���r���r ���r!���rD����imag�realr"���r����isnan�isinfr4���r?���)r ���r���r���r���r����__eq__7��s���� zFraction.__eq__c�������������C���sh���t�|tj�r&||�j|j�|�j|j��S�t�|t�r`tj |�sDtj |�rN|d|�S�||�|�j|��S�ntS�d�S�)Ng��������) r���r���r���r���r!���r���r ���r"���r���rh���ri���r4���r?���)r-����other�opr���r���r����_richcmpL��s���� zFraction._richcmpc�������������C���s���|�j�|tj�S�)N)rm����operator�lt)r ���r���r���r���r����__lt__b��s����zFraction.__lt__c�������������C���s���|�j�|tj�S�)N)rm���rn����gt)r ���r���r���r���r����__gt__f��s����zFraction.__gt__c�������������C���s���|�j�|tj�S�)N)rm���rn����le)r ���r���r���r���r����__le__j��s����zFraction.__le__c�������������C���s���|�j�|tj�S�)N)rm���rn����ge)r ���r���r���r���r����__ge__n��s����zFraction.__ge__c�������������C���s ���|�j�dkS�)Nr���)r���)r ���r���r���r����__bool__r��s����zFraction.__bool__c�������������C���s���|�j�t|��ffS�)N)r0���r$���)r-���r���r���r���� __reduce__x��s����zFraction.__reduce__c�������������C���s ���t�|��tkr|�S�|�j|�j|�j�S�)N)r ���r���r0���r���r���)r-���r���r���r����__copy__{��s����zFraction.__copy__c�������������C���s ���t�|��tkr|�S�|�j|�j|�j�S�)N)r ���r���r0���r���r���)r-����memor���r���r����__deepcopy__���s����zFraction.__deepcopy__)r���r���)r���N)r6���)N)9r2���� __module__�__qualname__� __slots__r����classmethodr4���r5���r;����propertyr ���r!���r<���r=���rG���rJ���rn����add�__add__�__radd__rK����sub�__sub__�__rsub__rL����mul�__mul__�__rmul__rM����truediv�__truediv__�__rtruediv__rO���rP���rR���rS���rT���rU���rV���rW���rX���rY���rZ���r[���r^���re���rj���rm���rp���rr���rt���rv���rw���rx���ry���r{���� __classcell__r���r���)r0���r���r���<���sT���m 7k )r���r���r���r���rn����re�sys�__all__r���r���� hash_info�modulusrb����infrc����compile�VERBOSE� IGNORECASEr%���r���r���r���r���r���r����<module>���s���