""" Type aliases for the Micropython specific modes used in the `open` function. References: - https://docs.micropython.org/en/latest/library/io.html#conceptual-hierarchy - https://docs.python.org/3/library/io.html """ # MIT License # Howard C Lovatt, 2020 onwards. # Jos Verlinde, 2025 onwards. from typing import Literal from typing_extensions import TypeAlias _OpenTextModeUpdating: TypeAlias = Literal[ "r+", "+r", "rt+", "r+t", "+rt", "tr+", "t+r", "+tr", "w+", "+w", "wt+", "w+t", "+wt", "tw+", "t+w", "+tw", "a+", "+a", "at+", "a+t", "+at", "ta+", "t+a", "+ta", "x+", "+x", "xt+", "x+t", "+xt", "tx+", "t+x", "+tx", ] _OpenTextModeWriting: TypeAlias = Literal["w", "wt", "tw", "a", "at", "ta", "x", "xt", "tx"] _OpenTextModeReading: TypeAlias = Literal[ "r", "rt", "tr", "U", "rU", "Ur", "rtU", "rUt", "Urt", "trU", "tUr", "Utr" ] _OpenTextMode: TypeAlias = _OpenTextModeUpdating | _OpenTextModeWriting | _OpenTextModeReading _OpenBinaryModeUpdating: TypeAlias = Literal[ "rb+", "r+b", "+rb", "br+", "b+r", "+br", "wb+", "w+b", "+wb", "bw+", "b+w", "+bw", "ab+", "a+b", "+ab", "ba+", "b+a", "+ba", "xb+", "x+b", "+xb", "bx+", "b+x", "+bx", ] _OpenBinaryModeWriting: TypeAlias = Literal["wb", "bw", "ab", "ba", "xb", "bx"] _OpenBinaryModeReading: TypeAlias = Literal["rb", "br", "rbU", "rUb", "Urb", "brU", "bUr", "Ubr"] _OpenBinaryMode: TypeAlias = ( _OpenBinaryModeUpdating | _OpenBinaryModeReading | _OpenBinaryModeWriting )