grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026B Vk ²¢kWã@s†ddlmZddlZddlZddlZddlZddlZddgZdd„Zdd„Z ej j Z 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.é)ÚwarningsÚwarnÚDeprecationWarningÚtypeÚintÚmathrÚ_gcd)ÚaÚbr©rú./opt/alt/python37/lib64/python3.7/fractions.pyrs   cCsx|r|||}}qW|S)Nr)r rrrrr sr aC \A\s* # optional whitespace at the start, then (?P[-+]?) # an optional sign, then (?=\d|\.\d) # lookahead for digit or .digit (?P\d*) # numerator (possibly empty) (?: # followed by (?:/(?P\d+))? # an optional denominator | # or (?:\.(?P\d*))? # an optional fractional part (?:E(?P[-+]?\d+))? # and optional exponent ) \s*\Z # and optional whitespace to finish csœeZdZdZdQddœ‡fdd„ Zedd „ƒZed d „ƒZdRd d„Ze dd„ƒZ e dd„ƒZ dd„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)Ú _normalizec sRtt|ƒ |¡}|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 ¡d k�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: %rZnumÚ0ÚdenomÚdecimalé ÚexprÚsignú-z2argument should be a string or a Rational instancez+both arguments should be Rational instanceszFraction(%s, 0))ÚsuperrÚ__new__r r rrÚ isinstanceÚnumbersÚRationalÚ numeratorÚ denominatorÚfloatrÚas_integer_ratioÚstrÚ_RATIONAL_FORMATÚmatchÚ ValueErrorÚgroupÚlenÚ TypeErrorÚZeroDivisionErrorr rr ) Úclsr!r"rÚselfÚmrrZscalerÚg)Ú __class__rrrTsr            $   $   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__r r$)r-ÚfrrrÚ from_floatÁs   zFraction.from_floatcCsVddlm}t|tjƒr&|t|ƒƒ}n$t||ƒsJtd|j|t|ƒjfƒ‚||  ¡ŽS)Nr)rz2%s.from_decimal() only takes Decimals, not %r (%s)) rrrrr2r r+r3r r$)r-ZdecrrrrÚ 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_denominatorZp0Zq0Zp1Zq1ÚnÚdr Zq2ÚkZbound1Zbound2rrrÚlimit_denominatorÛs&      zFraction.limit_denominatorcCs|jS)N)r)r rrrr!szFraction.numeratorcCs|jS)N)r)r rrrr"szFraction.denominatorcCsd|jj|j|jfS)Nz %s(%s, %s))r1r3rr)r.rrrÚ__repr__szFraction.__repr__cCs(|jdkrt|jƒSd|j|jfSdS)Nrz%s/%s)rr%r)r.rrrÚ__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|ƒ|ƒStSdS)N)rr rr#ÚcomplexÚNotImplemented)r r)Úfallback_operatorÚmonomorphic_operatorrrÚforwardvs   z-Fraction._operator_fallbacks..forwardÚ__csZt|tjƒrˆ||ƒSt|tjƒr4ˆt|ƒt|ƒƒSt|tjƒrRˆt|ƒt|ƒƒStSdS)N)rrr ZRealr#ÚComplexr?r@)rr )rArBrrÚreverse‚s    z-Fraction._operator_fallbacks..reverseZ__r)r3Ú__doc__)rBrArCrFr)rArBrÚ_operator_fallbacks&sP  zFraction._operator_fallbackscCs,|j|j}}t|j||j|||ƒS)N)r"rr!)r rÚdaÚdbrrrÚ_add‘sz Fraction._addcCs,|j|j}}t|j||j|||ƒS)N)r"rr!)r rrIrJrrrÚ_sub™sz Fraction._subcCst|j|j|j|jƒS)N)rr!r")r rrrrÚ_mul¡sz Fraction._mulcCst|j|j|j|jƒS)N)rr!r")r rrrrÚ_div§s z Fraction._divcCst ||¡S)N)r Úfloor)r rrrrÚ __floordiv__®szFraction.__floordiv__cCst ||¡S)N)r rO)rr rrrÚ __rfloordiv__²szFraction.__rfloordiv__cCs||}|||S)Nr)r rÚdivrrrÚ__mod__¶szFraction.__mod__cCs||}|||S)Nr)rr rRrrrÚ__rmod__»szFraction.__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)NrrF)r) rrr r"r!rrrr#)r rZpowerrrrÚ__pow__Às         zFraction.__pow__cCs\|jdkr|jdkr||jSt|tjƒrrHrKrpÚaddÚ__add__Ú__radd__rLÚsubÚ__sub__Ú__rsub__rMÚmulÚ__mul__Ú__rmul__rNÚtruedivÚ __truediv__Ú __rtruediv__rPrQrSrTrUrVrWrXrYrZr[r\r`rgrlrorrrtrvrxrzr{r|r}Ú __classcell__rr)r1rr<sTm  7  k )rrr rrpÚreÚsysÚ__all__rr Ú hash_infoÚmodulusrdÚinfreÚcompileÚVERBOSEÚ IGNORECASEr&r rrrrrÚs