typehints/stdlib/array.pyi (37 lines of code) (raw):

""" efficient arrays of numeric data. Descriptions taken from: https://raw.githubusercontent.com/micropython/micropython/master/docs/library/array.rst. """ __author__ = "Howard C Lovatt" __copyright__ = "Howard C Lovatt, 2020 onwards." __license__ = "MIT https://opensource.org/licenses/MIT (as used by MicroPython)." __version__ = "7.3.0" # Version set by https://github.com/hlovatt/tag2ver from typing import ( overload, Sequence, Any, MutableSequence, Generic, Text, TypeVar, Final, ) _T: Final = TypeVar("_T", int, float, Text) # noinspection PyPep8Naming class array(MutableSequence[_T], Generic[_T]): """ |see_cpython_module| :mod:`python:array`. Supported format codes: ``b``, ``B``, ``h``, ``H``, ``i``, ``I``, ``l``, ``L``, ``q``, ``Q``, ``f``, ``d`` (the latter 2 depending on the floating-point support). +-----------+--------------------+-------------------+-----------------------+ | Type code | C Type | Python Type | Minimum size in bytes | +===========+====================+===================+=======================+ | ``'b'`` | signed char | int | 1 | +-----------+--------------------+-------------------+-----------------------+ | ``'B'`` | unsigned char | int | 1 | +-----------+--------------------+-------------------+-----------------------+ | ``'h'`` | signed short | int | 2 | +-----------+--------------------+-------------------+-----------------------+ | ``'H'`` | unsigned short | int | 2 | +-----------+--------------------+-------------------+-----------------------+ | ``'i'`` | signed int | int | 2 | +-----------+--------------------+-------------------+-----------------------+ | ``'I'`` | unsigned int | int | 2 | +-----------+--------------------+-------------------+-----------------------+ | ``'l'`` | signed long | int | 4 | +-----------+--------------------+-------------------+-----------------------+ | ``'L'`` | unsigned long | int | 4 | +-----------+--------------------+-------------------+-----------------------+ | ``'q'`` | signed long long | int | 8 | +-----------+--------------------+-------------------+-----------------------+ | ``'Q'`` | unsigned long long | int | 8 | +-----------+--------------------+-------------------+-----------------------+ | ``'f'`` | float | float | 4 | +-----------+--------------------+-------------------+-----------------------+ | ``'d'`` | double | float | 8 | +-----------+--------------------+-------------------+-----------------------+ """ def __init__(self, typecode: str, iterable: Sequence[Any] = ..., /): """ Create array with elements of given type. Initial contents of the array are given by *iterable*. If it is not provided, an empty array is created. """ def append(self, val: Any, /) -> None: """ Append new element *val* to the end of array, growing it. """ def extend(self, iterable: Sequence[Any], /) -> None: """ Append new elements as contained in *iterable* to the end of array, growing it. """ def decode(self, encoding: str = "utf-8", errors: str = "strict") -> str: """ Deprecated *do not use*, likely to be removed in future! Note: ``decode`` is only meant to be present for ``bytearray``, but for efficiency of code-size reasons ``bytearray`` is implemented with the same code as the other array type-codes and hence ``decode`` is on all ``array``s at present. """ @overload def __delitem__(self, i: int) -> None: """``array`` object does **not** support item deletion.""" @overload def __delitem__(self, sl: slice) -> None: """``array`` object does **not** support item deletion.""" def insert(self, index: int, value: _T) -> None: """``array`` object does **not** support item insertion.""" @overload def __getitem__(self, index: int) -> _T: """ Indexed read of ``self``; called as ``a[index]``, where ``a`` is an ``array``. Returns the value at the given ``index``. Negative indices count from end and ``IndexError``is thrown if the index out of range. **Note:** ``__getitem__`` cannot be called directly (``a.__getitem__(index)`` fails) and is not present in ``__dict__``, however ``a[index]`` does work. """ @overload def __getitem__(self, sl: slice) -> array[_T]: """ Slice read of ``self``; called as ``a[sl]``, where ``a`` is an ``array``. Returns an ``array`` of values for the given slice. Negative slice indices count from end and ``IndexError``is thrown if any of the slice indices are out of range. **Note:** ``__getitem__`` cannot be called directly (``a.__getitem__(sl)`` fails) and is not present in ``__dict__``, however ``a[sl]`` does work. """ @overload def __setitem__(self, index: int, value: _T) -> None: """ Indexed write into ``self``; called as ``a[index] = value`` where ``a`` is an ``array``, ``index`` is an ``int``, and ``value`` is the same type as ``a``'s content. Negative indices count from end and ``IndexError``is thrown if the index out of range. **Note:** ``__setitem__`` cannot be called directly (``a.__setitem__(index, value)`` fails) and is not present in ``__dict__``, however ``a[index] = value`` does work. """ @overload def __setitem__(self, sl: slice, values: array[_T]) -> None: """ Indexed write into ``self``; called as ``a[sl] = values``, where ``a`` is an ``array``, ``sl`` is an ``slice``, and ``values`` is the same type as ``a``. Negative indices count from end and ``IndexError``is thrown if any of the slice indices are out of range. **Note:** ``__setitem__`` cannot be called directly (``a.__setitem__(index, value)`` fails) and is not present in ``__dict__``, however ``a[index] = value`` does work. """ def __len__(self) -> int: """ Returns the number of items in ``self``; called as ``len(a)``, where ``a`` is an ``array``. **Note:** ``__len__`` cannot be called directly (``a.__len__()`` fails) and the method is not present in ``__dict__``, however ``len(a)`` does work. """ def __add__(self, other: array[_T]) -> array[_T]: """ Return a new ``array`` that is the concatenation of ``self`` with ``other``; called as ``a + other`` (where ``a`` and ``other`` are both ``array``s). **Note:** ``__add__`` cannot be called directly (``a.__add__(other)`` fails) and is not present in ``__dict__``, however ``a + other`` does work. """ def __iadd__(self, other: array[_T]) -> None: """ Concatenates ``self`` with ``other`` in-place; called as ``a += other``, where ``a`` and ``other`` are both ``array``s. Equivalent to ``extend(other)``. **Note:** ``__iadd__`` cannot be called directly (``a.__iadd__(other)`` fails) and is not present in ``__dict__``, however ``a += other`` does work. """ def __repr__(self) -> str: """ Returns the string representation of ``self``; called as ``str(a)`` or ``repr(a)```, where ``a`` is an ``array``. Returns the string 'array(<type>, [<elements>])', where ``<type>`` is the type code letter for ``self`` and ``<elements>`` is a comma separated list of the elements of ``self``. **Note:** ``__repr__`` cannot be called directly (``a.__repr__()`` fails) and is not present in ``__dict__``, however ``str(a)`` and ``repr(a)`` both work. """