mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-09 05:24:52 +08:00
Reverts https://github.com/python/typeshed/pull/8465 Fixes https://github.com/python/typeshed/issues/10424 Closes https://github.com/python/typeshed/pull/10425 https://github.com/python/typeshed/pull/8465 caused regressions: see https://github.com/python/typeshed/issues/10424 and https://github.com/python/mypy/issues/13800. Since it didn't fix any known problems (just some stylistic nits that we had), let's just revert the PR.
282 lines
14 KiB
Python
282 lines
14 KiB
Python
import numbers
|
|
import sys
|
|
from collections.abc import Container, Sequence
|
|
from types import TracebackType
|
|
from typing import Any, ClassVar, NamedTuple, overload
|
|
from typing_extensions import Final, Literal, Self, TypeAlias
|
|
|
|
_Decimal: TypeAlias = Decimal | int
|
|
_DecimalNew: TypeAlias = Decimal | float | str | tuple[int, Sequence[int], int]
|
|
_ComparableNum: TypeAlias = Decimal | float | numbers.Rational
|
|
|
|
__version__: Final[str]
|
|
__libmpdec_version__: Final[str]
|
|
|
|
class DecimalTuple(NamedTuple):
|
|
sign: int
|
|
digits: tuple[int, ...]
|
|
exponent: int | Literal["n", "N", "F"]
|
|
|
|
ROUND_DOWN: str
|
|
ROUND_HALF_UP: str
|
|
ROUND_HALF_EVEN: str
|
|
ROUND_CEILING: str
|
|
ROUND_FLOOR: str
|
|
ROUND_UP: str
|
|
ROUND_HALF_DOWN: str
|
|
ROUND_05UP: str
|
|
HAVE_CONTEXTVAR: bool
|
|
HAVE_THREADS: bool
|
|
MAX_EMAX: int
|
|
MAX_PREC: int
|
|
MIN_EMIN: int
|
|
MIN_ETINY: int
|
|
|
|
class DecimalException(ArithmeticError): ...
|
|
class Clamped(DecimalException): ...
|
|
class InvalidOperation(DecimalException): ...
|
|
class ConversionSyntax(InvalidOperation): ...
|
|
class DivisionByZero(DecimalException, ZeroDivisionError): ...
|
|
class DivisionImpossible(InvalidOperation): ...
|
|
class DivisionUndefined(InvalidOperation, ZeroDivisionError): ...
|
|
class Inexact(DecimalException): ...
|
|
class InvalidContext(InvalidOperation): ...
|
|
class Rounded(DecimalException): ...
|
|
class Subnormal(DecimalException): ...
|
|
class Overflow(Inexact, Rounded): ...
|
|
class Underflow(Inexact, Rounded, Subnormal): ...
|
|
class FloatOperation(DecimalException, TypeError): ...
|
|
|
|
def setcontext(__context: Context) -> None: ...
|
|
def getcontext() -> Context: ...
|
|
|
|
if sys.version_info >= (3, 11):
|
|
def localcontext(
|
|
ctx: Context | None = None,
|
|
*,
|
|
prec: int | None = ...,
|
|
rounding: str | None = ...,
|
|
Emin: int | None = ...,
|
|
Emax: int | None = ...,
|
|
capitals: int | None = ...,
|
|
clamp: int | None = ...,
|
|
traps: dict[_TrapType, bool] | None = ...,
|
|
flags: dict[_TrapType, bool] | None = ...,
|
|
) -> _ContextManager: ...
|
|
|
|
else:
|
|
def localcontext(ctx: Context | None = None) -> _ContextManager: ...
|
|
|
|
class Decimal:
|
|
def __new__(cls, value: _DecimalNew = ..., context: Context | None = ...) -> Self: ...
|
|
@classmethod
|
|
def from_float(cls, __f: float) -> Self: ...
|
|
def __bool__(self) -> bool: ...
|
|
def compare(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def __hash__(self) -> int: ...
|
|
def as_tuple(self) -> DecimalTuple: ...
|
|
def as_integer_ratio(self) -> tuple[int, int]: ...
|
|
def to_eng_string(self, context: Context | None = None) -> str: ...
|
|
def __abs__(self) -> Decimal: ...
|
|
def __add__(self, __value: _Decimal) -> Decimal: ...
|
|
def __divmod__(self, __value: _Decimal) -> tuple[Decimal, Decimal]: ...
|
|
def __eq__(self, __value: object) -> bool: ...
|
|
def __floordiv__(self, __value: _Decimal) -> Decimal: ...
|
|
def __ge__(self, __value: _ComparableNum) -> bool: ...
|
|
def __gt__(self, __value: _ComparableNum) -> bool: ...
|
|
def __le__(self, __value: _ComparableNum) -> bool: ...
|
|
def __lt__(self, __value: _ComparableNum) -> bool: ...
|
|
def __mod__(self, __value: _Decimal) -> Decimal: ...
|
|
def __mul__(self, __value: _Decimal) -> Decimal: ...
|
|
def __neg__(self) -> Decimal: ...
|
|
def __pos__(self) -> Decimal: ...
|
|
def __pow__(self, __value: _Decimal, __mod: _Decimal | None = None) -> Decimal: ...
|
|
def __radd__(self, __value: _Decimal) -> Decimal: ...
|
|
def __rdivmod__(self, __value: _Decimal) -> tuple[Decimal, Decimal]: ...
|
|
def __rfloordiv__(self, __value: _Decimal) -> Decimal: ...
|
|
def __rmod__(self, __value: _Decimal) -> Decimal: ...
|
|
def __rmul__(self, __value: _Decimal) -> Decimal: ...
|
|
def __rsub__(self, __value: _Decimal) -> Decimal: ...
|
|
def __rtruediv__(self, __value: _Decimal) -> Decimal: ...
|
|
def __sub__(self, __value: _Decimal) -> Decimal: ...
|
|
def __truediv__(self, __value: _Decimal) -> Decimal: ...
|
|
def remainder_near(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def __float__(self) -> float: ...
|
|
def __int__(self) -> int: ...
|
|
def __trunc__(self) -> int: ...
|
|
@property
|
|
def real(self) -> Decimal: ...
|
|
@property
|
|
def imag(self) -> Decimal: ...
|
|
def conjugate(self) -> Decimal: ...
|
|
def __complex__(self) -> complex: ...
|
|
@overload
|
|
def __round__(self) -> int: ...
|
|
@overload
|
|
def __round__(self, __ndigits: int) -> Decimal: ...
|
|
def __floor__(self) -> int: ...
|
|
def __ceil__(self) -> int: ...
|
|
def fma(self, other: _Decimal, third: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def __rpow__(self, __value: _Decimal, __mod: Context | None = None) -> Decimal: ...
|
|
def normalize(self, context: Context | None = None) -> Decimal: ...
|
|
def quantize(self, exp: _Decimal, rounding: str | None = None, context: Context | None = None) -> Decimal: ...
|
|
def same_quantum(self, other: _Decimal, context: Context | None = None) -> bool: ...
|
|
def to_integral_exact(self, rounding: str | None = None, context: Context | None = None) -> Decimal: ...
|
|
def to_integral_value(self, rounding: str | None = None, context: Context | None = None) -> Decimal: ...
|
|
def to_integral(self, rounding: str | None = None, context: Context | None = None) -> Decimal: ...
|
|
def sqrt(self, context: Context | None = None) -> Decimal: ...
|
|
def max(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def min(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def adjusted(self) -> int: ...
|
|
def canonical(self) -> Decimal: ...
|
|
def compare_signal(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def compare_total(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def compare_total_mag(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def copy_abs(self) -> Decimal: ...
|
|
def copy_negate(self) -> Decimal: ...
|
|
def copy_sign(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def exp(self, context: Context | None = None) -> Decimal: ...
|
|
def is_canonical(self) -> bool: ...
|
|
def is_finite(self) -> bool: ...
|
|
def is_infinite(self) -> bool: ...
|
|
def is_nan(self) -> bool: ...
|
|
def is_normal(self, context: Context | None = None) -> bool: ...
|
|
def is_qnan(self) -> bool: ...
|
|
def is_signed(self) -> bool: ...
|
|
def is_snan(self) -> bool: ...
|
|
def is_subnormal(self, context: Context | None = None) -> bool: ...
|
|
def is_zero(self) -> bool: ...
|
|
def ln(self, context: Context | None = None) -> Decimal: ...
|
|
def log10(self, context: Context | None = None) -> Decimal: ...
|
|
def logb(self, context: Context | None = None) -> Decimal: ...
|
|
def logical_and(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def logical_invert(self, context: Context | None = None) -> Decimal: ...
|
|
def logical_or(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def logical_xor(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def max_mag(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def min_mag(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def next_minus(self, context: Context | None = None) -> Decimal: ...
|
|
def next_plus(self, context: Context | None = None) -> Decimal: ...
|
|
def next_toward(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def number_class(self, context: Context | None = None) -> str: ...
|
|
def radix(self) -> Decimal: ...
|
|
def rotate(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def scaleb(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def shift(self, other: _Decimal, context: Context | None = None) -> Decimal: ...
|
|
def __reduce__(self) -> tuple[type[Self], tuple[str]]: ...
|
|
def __copy__(self) -> Self: ...
|
|
def __deepcopy__(self, __memo: Any) -> Self: ...
|
|
def __format__(self, __specifier: str, __context: Context | None = ...) -> str: ...
|
|
|
|
class _ContextManager:
|
|
new_context: Context
|
|
saved_context: Context
|
|
def __init__(self, new_context: Context) -> None: ...
|
|
def __enter__(self) -> Context: ...
|
|
def __exit__(self, t: type[BaseException] | None, v: BaseException | None, tb: TracebackType | None) -> None: ...
|
|
|
|
_TrapType: TypeAlias = type[DecimalException]
|
|
|
|
class Context:
|
|
# TODO: Context doesn't allow you to delete *any* attributes from instances of the class at runtime,
|
|
# even settable attributes like `prec` and `rounding`,
|
|
# but that's inexpressable in the stub.
|
|
# Type checkers either ignore it or misinterpret it
|
|
# if you add a `def __delattr__(self, __name: str) -> NoReturn` method to the stub
|
|
prec: int
|
|
rounding: str
|
|
Emin: int
|
|
Emax: int
|
|
capitals: int
|
|
clamp: int
|
|
traps: dict[_TrapType, bool]
|
|
flags: dict[_TrapType, bool]
|
|
def __init__(
|
|
self,
|
|
prec: int | None = ...,
|
|
rounding: str | None = ...,
|
|
Emin: int | None = ...,
|
|
Emax: int | None = ...,
|
|
capitals: int | None = ...,
|
|
clamp: int | None = ...,
|
|
flags: None | dict[_TrapType, bool] | Container[_TrapType] = ...,
|
|
traps: None | dict[_TrapType, bool] | Container[_TrapType] = ...,
|
|
_ignored_flags: list[_TrapType] | None = ...,
|
|
) -> None: ...
|
|
def __reduce__(self) -> tuple[type[Self], tuple[Any, ...]]: ...
|
|
def clear_flags(self) -> None: ...
|
|
def clear_traps(self) -> None: ...
|
|
def copy(self) -> Context: ...
|
|
def __copy__(self) -> Context: ...
|
|
# see https://github.com/python/cpython/issues/94107
|
|
__hash__: ClassVar[None] # type: ignore[assignment]
|
|
def Etiny(self) -> int: ...
|
|
def Etop(self) -> int: ...
|
|
def create_decimal(self, __num: _DecimalNew = "0") -> Decimal: ...
|
|
def create_decimal_from_float(self, __f: float) -> Decimal: ...
|
|
def abs(self, __x: _Decimal) -> Decimal: ...
|
|
def add(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def canonical(self, __x: Decimal) -> Decimal: ...
|
|
def compare(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def compare_signal(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def compare_total(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def compare_total_mag(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def copy_abs(self, __x: _Decimal) -> Decimal: ...
|
|
def copy_decimal(self, __x: _Decimal) -> Decimal: ...
|
|
def copy_negate(self, __x: _Decimal) -> Decimal: ...
|
|
def copy_sign(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def divide(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def divide_int(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def divmod(self, __x: _Decimal, __y: _Decimal) -> tuple[Decimal, Decimal]: ...
|
|
def exp(self, __x: _Decimal) -> Decimal: ...
|
|
def fma(self, __x: _Decimal, __y: _Decimal, __z: _Decimal) -> Decimal: ...
|
|
def is_canonical(self, __x: _Decimal) -> bool: ...
|
|
def is_finite(self, __x: _Decimal) -> bool: ...
|
|
def is_infinite(self, __x: _Decimal) -> bool: ...
|
|
def is_nan(self, __x: _Decimal) -> bool: ...
|
|
def is_normal(self, __x: _Decimal) -> bool: ...
|
|
def is_qnan(self, __x: _Decimal) -> bool: ...
|
|
def is_signed(self, __x: _Decimal) -> bool: ...
|
|
def is_snan(self, __x: _Decimal) -> bool: ...
|
|
def is_subnormal(self, __x: _Decimal) -> bool: ...
|
|
def is_zero(self, __x: _Decimal) -> bool: ...
|
|
def ln(self, __x: _Decimal) -> Decimal: ...
|
|
def log10(self, __x: _Decimal) -> Decimal: ...
|
|
def logb(self, __x: _Decimal) -> Decimal: ...
|
|
def logical_and(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def logical_invert(self, __x: _Decimal) -> Decimal: ...
|
|
def logical_or(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def logical_xor(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def max(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def max_mag(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def min(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def min_mag(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def minus(self, __x: _Decimal) -> Decimal: ...
|
|
def multiply(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def next_minus(self, __x: _Decimal) -> Decimal: ...
|
|
def next_plus(self, __x: _Decimal) -> Decimal: ...
|
|
def next_toward(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def normalize(self, __x: _Decimal) -> Decimal: ...
|
|
def number_class(self, __x: _Decimal) -> str: ...
|
|
def plus(self, __x: _Decimal) -> Decimal: ...
|
|
def power(self, a: _Decimal, b: _Decimal, modulo: _Decimal | None = None) -> Decimal: ...
|
|
def quantize(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def radix(self) -> Decimal: ...
|
|
def remainder(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def remainder_near(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def rotate(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def same_quantum(self, __x: _Decimal, __y: _Decimal) -> bool: ...
|
|
def scaleb(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def shift(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def sqrt(self, __x: _Decimal) -> Decimal: ...
|
|
def subtract(self, __x: _Decimal, __y: _Decimal) -> Decimal: ...
|
|
def to_eng_string(self, __x: _Decimal) -> str: ...
|
|
def to_sci_string(self, __x: _Decimal) -> str: ...
|
|
def to_integral_exact(self, __x: _Decimal) -> Decimal: ...
|
|
def to_integral_value(self, __x: _Decimal) -> Decimal: ...
|
|
def to_integral(self, __x: _Decimal) -> Decimal: ...
|
|
|
|
DefaultContext: Context
|
|
BasicContext: Context
|
|
ExtendedContext: Context
|