88 lines
1.7 KiB
Python
88 lines
1.7 KiB
Python
"""
|
|
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
|
|
)
|