§
    ¸)ýfl(  ã                   ó.  — d Z ddlmZmZ g d¢Z G d„ de¬¦  «        Z G d„ de¦  «        Ze                     e¦  «          G d	„ d
e¦  «        Z	e	                     e
¦  «          G d„ de	¦  «        Z G d„ de¦  «        Ze                     e¦  «         dS )z~Abstract Base Classes (ABCs) for numbers, according to PEP 3141.

TODO: Fill out more detailed documentation on the operators.é    )ÚABCMetaÚabstractmethod)ÚNumberÚComplexÚRealÚRationalÚIntegralc                   ó   — e Zd ZdZdZdZdS )r   zŸAll numbers inherit from this class.

    If you just want to check if an argument x is a number, without
    caring what kind, use isinstance(x, Number).
    © N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__Ú__hash__r   ó    úS/home/blender/git/blender-v430/install_release/4.3/python/lib/python3.11/numbers.pyr   r      s&   € € € € € ðð ð
 €Ið €H€H€Hr   r   )Ú	metaclassc                   ó¨  — e Zd ZdZdZed„ ¦   «         Zd„ Zeed„ ¦   «         ¦   «         Z	eed„ ¦   «         ¦   «         Z
ed„ ¦   «         Zed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )r   af  Complex defines the operations that work on the builtin complex type.

    In short, those are: a conversion to complex, .real, .imag, +, -,
    *, /, **, abs(), .conjugate, ==, and !=.

    If it is given heterogeneous arguments, and doesn't have special
    knowledge about them, it should fall back to the builtin complex
    type as described below.
    r   c                 ó   — dS )z<Return a builtin complex instance. Called for complex(self).Nr   ©Úselfs    r   Ú__complex__zComplex.__complex__-   s   € € € r   c                 ó   — | dk    S )z)True if self != 0. Called for bool(self).r   r   r   s    r   Ú__bool__zComplex.__bool__1   s   € à�qŠyÐr   c                 ó   — t           ‚)zXRetrieve the real component of this number.

        This should subclass Real.
        ©ÚNotImplementedErrorr   s    r   ÚrealzComplex.real5   ó
   € õ "Ð!r   c                 ó   — t           ‚)z]Retrieve the imaginary component of this number.

        This should subclass Real.
        r   r   s    r   ÚimagzComplex.imag>   r    r   c                 ó   — t           ‚)zself + otherr   ©r   Úothers     r   Ú__add__zComplex.__add__G   ó
   € õ "Ð!r   c                 ó   — t           ‚)zother + selfr   r$   s     r   Ú__radd__zComplex.__radd__L   r'   r   c                 ó   — t           ‚)z-selfr   r   s    r   Ú__neg__zComplex.__neg__Q   r'   r   c                 ó   — t           ‚)z+selfr   r   s    r   Ú__pos__zComplex.__pos__V   r'   r   c                 ó   — | | z   S )zself - otherr   r$   s     r   Ú__sub__zComplex.__sub__[   s   € à�u�f‰}Ðr   c                 ó   — |  |z   S )zother - selfr   r$   s     r   Ú__rsub__zComplex.__rsub___   s   € àˆu�u‰}Ðr   c                 ó   — t           ‚)zself * otherr   r$   s     r   Ú__mul__zComplex.__mul__c   r'   r   c                 ó   — t           ‚)zother * selfr   r$   s     r   Ú__rmul__zComplex.__rmul__h   r'   r   c                 ó   — t           ‚)z5self / other: Should promote to float when necessary.r   r$   s     r   Ú__truediv__zComplex.__truediv__m   r'   r   c                 ó   — t           ‚)zother / selfr   r$   s     r   Ú__rtruediv__zComplex.__rtruediv__r   r'   r   c                 ó   — t           ‚)zBself**exponent; should promote to float or complex when necessary.r   )r   Úexponents     r   Ú__pow__zComplex.__pow__w   r'   r   c                 ó   — t           ‚)zbase ** selfr   )r   Úbases     r   Ú__rpow__zComplex.__rpow__|   r'   r   c                 ó   — t           ‚)z7Returns the Real distance from 0. Called for abs(self).r   r   s    r   Ú__abs__zComplex.__abs__�   r'   r   c                 ó   — t           ‚)z$(x+y*i).conjugate() returns (x-y*i).r   r   s    r   Ú	conjugatezComplex.conjugate†   r'   r   c                 ó   — t           ‚)zself == otherr   r$   s     r   Ú__eq__zComplex.__eq__‹   r'   r   N)r   r   r   r   r   r   r   r   Úpropertyr   r"   r&   r)   r+   r-   r/   r1   r3   r5   r7   r9   r<   r?   rA   rC   rE   r   r   r   r   r       s  € € € € € ðð ð €IàðKð Kñ „^ðKðð ð ð Øð"ð "ñ „^ñ „Xð"ð Øð"ð "ñ „^ñ „Xð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ðð ð ðð ð ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð "ð "r   r   c                   óN  — e Zd ZdZdZed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	edd„¦   «         Z
d	„ Zd
„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ ZdS )r   zÜTo Complex, Real adds the operations that work on real numbers.

    In short, those are: a conversion to float, trunc(), divmod,
    %, <, <=, >, and >=.

    Real also provides defaults for the derived operations.
    r   c                 ó   — t           ‚)zTAny Real can be converted to a native float object.

        Called for float(self).r   r   s    r   Ú	__float__zReal.__float__ž   ó
   € õ
 "Ð!r   c                 ó   — t           ‚)aG  trunc(self): Truncates self to an Integral.

        Returns an Integral i such that:
          * i>0 iff self>0;
          * abs(i) <= abs(self);
          * for any Integral j satisfying the first two conditions,
            abs(i) >= abs(j) [i.e. i has "maximal" abs among those].
        i.e. "truncate towards 0".
        r   r   s    r   Ú	__trunc__zReal.__trunc__¥   s
   € õ "Ð!r   c                 ó   — t           ‚)z$Finds the greatest Integral <= self.r   r   s    r   Ú	__floor__zReal.__floor__²   r'   r   c                 ó   — t           ‚)z!Finds the least Integral >= self.r   r   s    r   Ú__ceil__zReal.__ceil__·   r'   r   Nc                 ó   — t           ‚)z¸Rounds self to ndigits decimal places, defaulting to 0.

        If ndigits is omitted or None, returns an Integral, otherwise
        returns a Real. Rounds half toward even.
        r   )r   Úndigitss     r   Ú	__round__zReal.__round__¼   r    r   c                 ó   — | |z  | |z  fS )z™divmod(self, other): The pair (self // other, self % other).

        Sometimes this can be computed faster than the pair of
        operations.
        r   r$   s     r   Ú
__divmod__zReal.__divmod__Å   s   € ð ˜‘˜t e™|Ð,Ð,r   c                 ó   — || z  || z  fS )z™divmod(other, self): The pair (self // other, self % other).

        Sometimes this can be computed faster than the pair of
        operations.
        r   r$   s     r   Ú__rdivmod__zReal.__rdivmod__Í   s   € ð ˜‘˜u t™|Ð,Ð,r   c                 ó   — t           ‚)z)self // other: The floor() of self/other.r   r$   s     r   Ú__floordiv__zReal.__floordiv__Õ   r'   r   c                 ó   — t           ‚)z)other // self: The floor() of other/self.r   r$   s     r   Ú__rfloordiv__zReal.__rfloordiv__Ú   r'   r   c                 ó   — t           ‚)zself % otherr   r$   s     r   Ú__mod__zReal.__mod__ß   r'   r   c                 ó   — t           ‚)zother % selfr   r$   s     r   Ú__rmod__zReal.__rmod__ä   r'   r   c                 ó   — t           ‚)zRself < other

        < on Reals defines a total ordering, except perhaps for NaN.r   r$   s     r   Ú__lt__zReal.__lt__é   rJ   r   c                 ó   — t           ‚)zself <= otherr   r$   s     r   Ú__le__zReal.__le__ð   r'   r   c                 ó:   — t          t          | ¦  «        ¦  «        S )z(complex(self) == complex(float(self), 0))ÚcomplexÚfloatr   s    r   r   zReal.__complex__ö   s   € å•u˜T‘{”{Ñ#Ô#Ð#r   c                 ó   — | 
 S )z&Real numbers are their real component.r   r   s    r   r   z	Real.realú   ó   € ð ˆuˆr   c                 ó   — dS )z)Real numbers have no imaginary component.r   r   r   s    r   r"   z	Real.imagÿ   ó	   € ð ˆqr   c                 ó   — | 
 S )zConjugate is a no-op for Reals.r   r   s    r   rC   zReal.conjugate  s	   € àˆuˆr   ©N)r   r   r   r   r   r   rI   rL   rN   rP   rS   rU   rW   rY   r[   r]   r_   ra   rc   r   rF   r   r"   rC   r   r   r   r   r   “   sÃ  € € € € € ðð ð €Iàð"ð "ñ „^ð"ð ð
"ð 
"ñ „^ð
"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ð "ñ „^ð"ð-ð -ð -ð-ð -ð -ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð
$ð $ð $ð ðð ñ „Xðð ðð ñ „Xððð ð ð ð r   r   c                   óh   — e Zd ZdZdZeed„ ¦   «         ¦   «         Zeed„ ¦   «         ¦   «         Zd„ Z	dS )r   z6.numerator and .denominator should be in lowest terms.r   c                 ó   — t           ‚rl   r   r   s    r   Ú	numeratorzRational.numerator  r'   r   c                 ó   — t           ‚rl   r   r   s    r   ÚdenominatorzRational.denominator  r'   r   c                 óT   — t          | j        ¦  «        t          | j        ¦  «        z  S )a  float(self) = self.numerator / self.denominator

        It's important that this conversion use the integer's "true"
        division rather than casting one side to float before dividing
        so that ratios of huge integers convert without overflowing.

        )Úintro   rq   r   s    r   rI   zRational.__float__  s$   € õ �4”>Ñ"Ô"¥S¨Ô)9Ñ%:Ô%:Ñ:Ð:r   N)
r   r   r   r   r   rF   r   ro   rq   rI   r   r   r   r   r     sv   € € € € € Ø@Ð@à€IàØð"ð "ñ „^ñ „Xð"ð Øð"ð "ñ „^ñ „Xð"ð;ð ;ð ;ð ;ð ;r   r   c                   ón  — e Zd ZdZdZed„ ¦   «         Zd„ Zedd„¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         ZdS )r	   zšIntegral adds methods that work on integral numbers.

    In short, these are conversion to int, pow with modulus, and the
    bit-string operations.
    r   c                 ó   — t           ‚)z	int(self)r   r   s    r   Ú__int__zIntegral.__int__/  r'   r   c                 ó    — t          | ¦  «        S )z6Called whenever an index is needed, such as in slicing)rs   r   s    r   Ú	__index__zIntegral.__index__4  s   € å�4‰yŒyÐr   Nc                 ó   — t           ‚)a4  self ** exponent % modulus, but maybe faster.

        Accept the modulus argument if you want to support the
        3-argument version of pow(). Raise a TypeError if exponent < 0
        or any argument isn't Integral. Otherwise, just implement the
        2-argument version described in Complex.
        r   )r   r;   Úmoduluss      r   r<   zIntegral.__pow__8  s
   € õ "Ð!r   c                 ó   — t           ‚)zself << otherr   r$   s     r   Ú
__lshift__zIntegral.__lshift__C  r'   r   c                 ó   — t           ‚)zother << selfr   r$   s     r   Ú__rlshift__zIntegral.__rlshift__H  r'   r   c                 ó   — t           ‚)zself >> otherr   r$   s     r   Ú
__rshift__zIntegral.__rshift__M  r'   r   c                 ó   — t           ‚)zother >> selfr   r$   s     r   Ú__rrshift__zIntegral.__rrshift__R  r'   r   c                 ó   — t           ‚)zself & otherr   r$   s     r   Ú__and__zIntegral.__and__W  r'   r   c                 ó   — t           ‚)zother & selfr   r$   s     r   Ú__rand__zIntegral.__rand__\  r'   r   c                 ó   — t           ‚)zself ^ otherr   r$   s     r   Ú__xor__zIntegral.__xor__a  r'   r   c                 ó   — t           ‚)zother ^ selfr   r$   s     r   Ú__rxor__zIntegral.__rxor__f  r'   r   c                 ó   — t           ‚)zself | otherr   r$   s     r   Ú__or__zIntegral.__or__k  r'   r   c                 ó   — t           ‚)zother | selfr   r$   s     r   Ú__ror__zIntegral.__ror__p  r'   r   c                 ó   — t           ‚)z~selfr   r   s    r   Ú
__invert__zIntegral.__invert__u  r'   r   c                 ó:   — t          t          | ¦  «        ¦  «        S )zfloat(self) == float(int(self)))rf   rs   r   s    r   rI   zIntegral.__float__{  s   € å•S˜‘Y”YÑÔÐr   c                 ó   — | 
 S )z"Integers are their own numerators.r   r   s    r   ro   zIntegral.numerator  rh   r   c                 ó   — dS )z!Integers have a denominator of 1.é   r   r   s    r   rq   zIntegral.denominator„  rj   r   rl   )r   r   r   r   r   r   rv   rx   r<   r|   r~   r€   r‚   r„   r†   rˆ   rŠ   rŒ   rŽ   r�   rI   rF   ro   rq   r   r   r   r	   r	   &  sÛ  € € € € € ðð ð €Iàð"ð "ñ „^ð"ðð ð ð ð"ð "ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð ð"ð "ñ „^ð"ð
 ð  ð  ð ðð ñ „Xðð ðð ñ „Xðð ð r   r	   N)r   Úabcr   r   Ú__all__r   r   Úregisterre   r   rf   r   r	   rs   r   r   r   ú<module>r˜      sn  ðð@ð @ð (Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à
?Ð
?Ð
?€ð	ð 	ð 	ð 	ð 	�wð 	ñ 	ô 	ð 	ð(n"ð n"ð n"ð n"ð n"ˆfñ n"ô n"ð n"ð` × Ò �Ñ Ô Ð ðsð sð sð sð sˆ7ñ sô sð sðj ‡‚ˆeÑ Ô Ð ð;ð ;ð ;ð ;ð ;ˆtñ ;ô ;ð ;ð6að að að að aˆxñ aô að aðF 	× Ò �#Ñ Ô Ð Ð Ð r   