1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-26 01:18:28 +00:00

style(core/src): use new syntax for typing

This commit is contained in:
Pavol Rusnak 2020-10-16 19:39:32 +02:00 committed by matejcik
parent cd829a99de
commit a1dda836ec
16 changed files with 55 additions and 57 deletions

View File

@ -212,7 +212,7 @@ def load_message(
raise ValueError # experimental messages not enabled raise ValueError # experimental messages not enabled
# we need to avoid calling __init__, which enforces required arguments # we need to avoid calling __init__, which enforces required arguments
msg = object.__new__(msg_type) # type: LoadedMessageType msg: LoadedMessageType = object.__new__(msg_type)
# pre-seed the object with defaults # pre-seed the object with defaults
for fname, _, fdefault in fields.values(): for fname, _, fdefault in fields.values():
if fdefault is FLAG_REPEATED: if fdefault is FLAG_REPEATED:
@ -224,7 +224,7 @@ def load_message(
if False: if False:
SingularValue = Union[int, bool, bytearray, str, MessageType] SingularValue = Union[int, bool, bytearray, str, MessageType]
Value = Union[SingularValue, List[SingularValue]] Value = Union[SingularValue, List[SingularValue]]
fvalue = 0 # type: Value fvalue: Value = 0
while True: while True:
try: try:

View File

@ -2,7 +2,7 @@ from trezor import wire
from trezor.crypto import random from trezor.crypto import random
if False: if False:
from typing import Optional, Dict, List from typing import Optional, Dict, List, Any
_MAX_SESSIONS_COUNT = 10 _MAX_SESSIONS_COUNT = 10
_SESSIONLESS_FLAG = 128 _SESSIONLESS_FLAG = 128
@ -18,10 +18,10 @@ APP_COMMON_SEED_WITHOUT_PASSPHRASE = 1 | _SESSIONLESS_FLAG
APP_COMMON_SAFETY_CHECKS_TEMPORARY = 2 | _SESSIONLESS_FLAG APP_COMMON_SAFETY_CHECKS_TEMPORARY = 2 | _SESSIONLESS_FLAG
_active_session_id = None # type: Optional[bytes] _active_session_id: Optional[bytes] = None
_caches = {} # type: Dict[bytes, Dict[int, Any]] _caches: Dict[bytes, Dict[int, Any]] = {}
_session_ids = [] # type: List[bytes] _session_ids: List[bytes] = []
_sessionless_cache = {} # type: Dict[int, Any] _sessionless_cache: Dict[int, Any] = {}
if False: if False:
from typing import Any, Callable, TypeVar from typing import Any, Callable, TypeVar

View File

@ -40,8 +40,8 @@ _EXPERIMENTAL_FEATURES = const(0x15) # bool (0x01 or empty)
_DEFAULT_BACKUP_TYPE = BackupType.Bip39 _DEFAULT_BACKUP_TYPE = BackupType.Bip39
SAFETY_CHECK_LEVEL_STRICT = const(0) # type: Literal[0] SAFETY_CHECK_LEVEL_STRICT : Literal[0] = const(0)
SAFETY_CHECK_LEVEL_PROMPT = const(1) # type: Literal[1] SAFETY_CHECK_LEVEL_PROMPT : Literal[1] = const(1)
_DEFAULT_SAFETY_CHECK_LEVEL = SAFETY_CHECK_LEVEL_STRICT _DEFAULT_SAFETY_CHECK_LEVEL = SAFETY_CHECK_LEVEL_STRICT
if False: if False:
StorageSafetyCheckLevel = Literal[0, 1] StorageSafetyCheckLevel = Literal[0, 1]

View File

@ -229,7 +229,7 @@ def split_ems(
# Split the Encrypted Master Secret on the group level. # Split the Encrypted Master Secret on the group level.
group_shares = _split_secret(group_threshold, len(groups), encrypted_master_secret) group_shares = _split_secret(group_threshold, len(groups), encrypted_master_secret)
mnemonics = [] # type: List[List[str]] mnemonics: List[List[str]] = []
for (member_threshold, member_count), (group_index, group_secret) in zip( for (member_threshold, member_count), (group_index, group_secret) in zip(
groups, group_shares groups, group_shares
): ):
@ -599,7 +599,7 @@ def _decode_mnemonics(
group_counts = set() group_counts = set()
# { group_index : [threshold, set_of_member_shares] } # { group_index : [threshold, set_of_member_shares] }
groups = {} # type: MnemonicGroups groups: MnemonicGroups = {}
for mnemonic in mnemonics: for mnemonic in mnemonics:
share = decode_mnemonic(mnemonic) share = decode_mnemonic(mnemonic)
identifiers.add(share.identifier) identifiers.add(share.identifier)

View File

@ -30,23 +30,23 @@ if False:
Finalizer = Callable[[Task, Any], None] Finalizer = Callable[[Task, Any], None]
# function to call after every task step # function to call after every task step
after_step_hook = None # type: Optional[Callable[[], None]] after_step_hook: Optional[Callable[[], None]] = None
# tasks scheduled for execution in the future # tasks scheduled for execution in the future
_queue = utimeq.utimeq(64) _queue = utimeq.utimeq(64)
# tasks paused on I/O # tasks paused on I/O
_paused = {} # type: Dict[int, Set[Task]] _paused: Dict[int, Set[Task]] = {}
# functions to execute after a task is finished # functions to execute after a task is finished
_finalizers = {} # type: Dict[int, Finalizer] _finalizers: Dict[int, Finalizer] = {}
# reference to the task that is currently executing # reference to the task that is currently executing
this_task = None # type: Optional[Task] this_task: Optional[Task] = None
if __debug__: if __debug__:
# synthetic event queue # synthetic event queue
synthetic_events = [] # type: List[Tuple[int, Any]] synthetic_events: List[Tuple[int, Any]] = []
class TaskClosed(Exception): class TaskClosed(Exception):
@ -300,8 +300,8 @@ class race(Syscall):
def __init__(self, *children: Awaitable, exit_others: bool = True) -> None: def __init__(self, *children: Awaitable, exit_others: bool = True) -> None:
self.children = children self.children = children
self.exit_others = exit_others self.exit_others = exit_others
self.finished = [] # type: List[Awaitable] # children that finished self.finished: List[Awaitable] = [] # children that finished
self.scheduled = [] # type: List[Task] # scheduled wrapper tasks self.scheduled: List[Task] = [] # scheduled wrapper tasks
def handle(self, task: Task) -> None: def handle(self, task: Task) -> None:
""" """
@ -387,7 +387,7 @@ class chan:
def __init__(self, ch: "chan", value: Any) -> None: def __init__(self, ch: "chan", value: Any) -> None:
self.ch = ch self.ch = ch
self.value = value self.value = value
self.task = None # type: Optional[Task] self.task: Optional[Task] = None
def handle(self, task: Task) -> None: def handle(self, task: Task) -> None:
self.task = task self.task = task
@ -396,15 +396,15 @@ class chan:
class Take(Syscall): class Take(Syscall):
def __init__(self, ch: "chan") -> None: def __init__(self, ch: "chan") -> None:
self.ch = ch self.ch = ch
self.task = None # type: Optional[Task] self.task: Optional[Task] = None
def handle(self, task: Task) -> None: def handle(self, task: Task) -> None:
self.task = task self.task = task
self.ch._schedule_take(task) self.ch._schedule_take(task)
def __init__(self) -> None: def __init__(self) -> None:
self.putters = [] # type: List[Tuple[Optional[Task], Any]] self.putters: List[Tuple[Optional[Task], Any]] = []
self.takers = [] # type: List[Task] self.takers: List[Task] = []
def put(self, value: Any) -> Awaitable[None]: # type: ignore def put(self, value: Any) -> Awaitable[None]: # type: ignore
put = chan.Put(self, value) put = chan.Put(self, value)
@ -484,10 +484,10 @@ class spawn(Syscall):
def __init__(self, task: Task) -> None: def __init__(self, task: Task) -> None:
self.task = task self.task = task
self.callback = None # type: Optional[Task] self.callback: Optional[Task] = None
self.finalizer_callback = None # type: Optional[Callable[["spawn"], None]] self.finalizer_callback: Optional[Callable[["spawn"], None]] = None
self.finished = False self.finished = False
self.return_value = None # type: Any self.return_value: Any = None
# schedule task immediately # schedule task immediately
if __debug__: if __debug__:

View File

@ -8,9 +8,9 @@ def pin_to_int(pin: str) -> int:
return int("1" + pin) return int("1" + pin)
_previous_progress = None # type: Optional[int] _previous_progress: Optional[int] = None
_previous_seconds = None # type: Optional[int] _previous_seconds: Optional[int] = None
keepalive_callback = None # type: Any keepalive_callback: Any = None
def show_pin_timeout(seconds: int, progress: int, message: str) -> bool: def show_pin_timeout(seconds: int, progress: int, message: str) -> bool:

View File

@ -308,7 +308,7 @@ class Layout(Component):
""" """
BACKLIGHT_LEVEL = style.BACKLIGHT_NORMAL BACKLIGHT_LEVEL = style.BACKLIGHT_NORMAL
RENDER_SLEEP = loop.sleep(_RENDER_DELAY_MS) # type: loop.Syscall RENDER_SLEEP: loop.Syscall = loop.sleep(_RENDER_DELAY_MS)
async def __iter__(self) -> ResultValue: async def __iter__(self) -> ResultValue:
""" """

View File

@ -18,7 +18,7 @@ class Checklist(ui.Component):
super().__init__() super().__init__()
self.title = title self.title = title
self.icon = icon self.icon = icon
self.items = [] # type: List[ChecklistItem] self.items: List[ChecklistItem] = []
self.active = 0 self.active = 0
def add(self, item: ChecklistItem) -> None: def add(self, item: ChecklistItem) -> None:

View File

@ -48,9 +48,7 @@ class Confirm(ui.Layout):
area = ui.grid(13, cells_x=2) area = ui.grid(13, cells_x=2)
else: else:
area = ui.grid(9, n_x=2) area = ui.grid(9, n_x=2)
self.confirm = Button( self.confirm: Optional[Button] = Button(area, confirm, confirm_style)
area, confirm, confirm_style
) # type: Optional[Button]
self.confirm.on_click = self.on_confirm # type: ignore self.confirm.on_click = self.on_confirm # type: ignore
else: else:
self.confirm = None self.confirm = None
@ -62,7 +60,7 @@ class Confirm(ui.Layout):
area = ui.grid(12, cells_x=1) area = ui.grid(12, cells_x=1)
else: else:
area = ui.grid(8, n_x=2) area = ui.grid(8, n_x=2)
self.cancel = Button(area, cancel, cancel_style) # type: Optional[Button] self.cancel: Optional[Button] = Button(area, cancel, cancel_style)
self.cancel.on_click = self.on_cancel # type: ignore self.cancel.on_click = self.on_cancel # type: ignore
else: else:
self.cancel = None self.cancel = None

View File

@ -12,8 +12,8 @@ class LoaderDefault:
class normal: class normal:
bg_color = ui.BG bg_color = ui.BG
fg_color = ui.GREEN fg_color = ui.GREEN
icon = None # type: Optional[str] icon: Optional[str] = None
icon_fg_color = None # type: Optional[int] icon_fg_color: Optional[int] = None
class active(normal): class active(normal):
bg_color = ui.BG bg_color = ui.BG
@ -43,8 +43,8 @@ class Loader(ui.Component):
self.normal_style = style.normal self.normal_style = style.normal
self.active_style = style.active self.active_style = style.active
self.target_ms = _TARGET_MS self.target_ms = _TARGET_MS
self.start_ms = None # type: Optional[int] self.start_ms: Optional[int] = None
self.stop_ms = None # type: Optional[int] self.stop_ms: Optional[int] = None
def start(self) -> None: def start(self) -> None:
self.start_ms = utime.ticks_ms() self.start_ms = utime.ticks_ms()

View File

@ -145,7 +145,7 @@ class PassphraseKeyboard(ui.Layout):
self.done.on_click = self.on_confirm # type: ignore self.done.on_click = self.on_confirm # type: ignore
self.keys = key_buttons(KEYBOARD_KEYS[self.page], self) self.keys = key_buttons(KEYBOARD_KEYS[self.page], self)
self.pending_button = None # type: Optional[KeyButton] self.pending_button: Optional[KeyButton] = None
self.pending_index = 0 self.pending_index = 0
def dispatch(self, event: int, x: int, y: int) -> None: def dispatch(self, event: int, x: int, y: int) -> None:
@ -246,11 +246,11 @@ class PassphraseKeyboard(ui.Layout):
raise ui.Result(self.input.text) raise ui.Result(self.input.text)
def create_tasks(self) -> Tuple[loop.Task, ...]: def create_tasks(self) -> Tuple[loop.Task, ...]:
tasks = ( tasks: Tuple[loop.Task, ...] = (
self.handle_input(), self.handle_input(),
self.handle_rendering(), self.handle_rendering(),
self.handle_paging(), self.handle_paging(),
) # type: Tuple[loop.Task, ...] )
if __debug__: if __debug__:
from apps.debug import input_signal from apps.debug import input_signal

View File

@ -98,11 +98,11 @@ class Paginated(ui.Layout):
self.on_change() self.on_change()
def create_tasks(self) -> Tuple[loop.Task, ...]: def create_tasks(self) -> Tuple[loop.Task, ...]:
tasks = ( tasks: Tuple[loop.Task, ...] = (
self.handle_input(), self.handle_input(),
self.handle_rendering(), self.handle_rendering(),
self.handle_paging(), self.handle_paging(),
) # type: Tuple[loop.Task, ...] )
if __debug__: if __debug__:
# XXX This isn't strictly correct, as it allows *any* Paginated layout to be # XXX This isn't strictly correct, as it allows *any* Paginated layout to be

View File

@ -135,7 +135,7 @@ class Text(ui.Component):
self.icon_color = icon_color self.icon_color = icon_color
self.max_lines = max_lines self.max_lines = max_lines
self.new_lines = new_lines self.new_lines = new_lines
self.content = [] # type: List[TextContent] self.content: List[TextContent] = []
def normal(self, *content: TextContent) -> None: def normal(self, *content: TextContent) -> None:
self.content.append(ui.NORMAL) self.content.append(ui.NORMAL)

View File

@ -67,14 +67,14 @@ if False:
# Maps a wire type directly to a handler. # Maps a wire type directly to a handler.
workflow_handlers = {} # type: Dict[int, Handler] workflow_handlers: Dict[int, Handler] = {}
# Maps a wire type to a tuple of package and module. This allows handlers # Maps a wire type to a tuple of package and module. This allows handlers
# to be dynamically imported when such message arrives. # to be dynamically imported when such message arrives.
workflow_packages = {} # type: Dict[int, Tuple[str, str]] workflow_packages: Dict[int, Tuple[str, str]] = {}
# If set to False protobuf messages marked with "unstable" option are rejected. # If set to False protobuf messages marked with "unstable" option are rejected.
experimental_enabled = False # type: bool experimental_enabled: bool = False
def add(wire_type: int, pkgname: str, modname: str) -> None: def add(wire_type: int, pkgname: str, modname: str) -> None:
@ -163,7 +163,7 @@ class Context:
self.buffer_reader = utils.BufferReader(self.buffer) self.buffer_reader = utils.BufferReader(self.buffer)
self.buffer_writer = utils.BufferWriter(self.buffer) self.buffer_writer = utils.BufferWriter(self.buffer)
self._field_cache = {} # type: protobuf.FieldCache self._field_cache: protobuf.FieldCache = {}
async def call( async def call(
self, self,
@ -307,8 +307,8 @@ async def handle_session(
iface: WireInterface, session_id: int, use_workflow: bool = True iface: WireInterface, session_id: int, use_workflow: bool = True
) -> None: ) -> None:
ctx = Context(iface, session_id) ctx = Context(iface, session_id)
next_msg = None # type: Optional[codec_v1.Message] next_msg: Optional[codec_v1.Message] = None
res_msg = None # type: Optional[protobuf.MessageType] res_msg: Optional[protobuf.MessageType] = None
req_type = None req_type = None
req_msg = None req_msg = None
while True: while True:
@ -361,7 +361,7 @@ async def handle_session(
# We found a valid handler for this message type. # We found a valid handler for this message type.
# Workflow task, declared for the finally block # Workflow task, declared for the finally block
wf_task = None # type: Optional[HandlerTask] wf_task: Optional[HandlerTask] = None
# Here we make sure we always respond with a Failure response # Here we make sure we always respond with a Failure response
# in case of any errors. # in case of any errors.

View File

@ -44,7 +44,7 @@ async def read_message(iface: WireInterface, buffer: utils.BufferType) -> Messag
if msize > len(buffer): if msize > len(buffer):
# allocate a new buffer to fit the message # allocate a new buffer to fit the message
try: try:
mdata = bytearray(msize) # type: utils.BufferType mdata: utils.BufferType = bytearray(msize)
except MemoryError: except MemoryError:
mdata = bytearray(_REP_LEN) mdata = bytearray(_REP_LEN)
read_and_throw_away = True read_and_throw_away = True

View File

@ -16,14 +16,14 @@ if __debug__:
# Set of workflow tasks. Multiple workflows can be running at the same time. # Set of workflow tasks. Multiple workflows can be running at the same time.
tasks = set() # type: Set[loop.spawn] tasks: Set[loop.spawn] = set()
# Default workflow task, if a default workflow is running. Default workflow # Default workflow task, if a default workflow is running. Default workflow
# is not contained in the `tasks` set above. # is not contained in the `tasks` set above.
default_task = None # type: Optional[loop.spawn] default_task: Optional[loop.spawn] = None
# Constructor for the default workflow. Returns a workflow task. # Constructor for the default workflow. Returns a workflow task.
default_constructor = None # type: Optional[Callable[[], loop.Task]] default_constructor: Optional[Callable[[], loop.Task]] = None
def _on_start(workflow: loop.spawn) -> None: def _on_start(workflow: loop.spawn) -> None:
@ -159,8 +159,8 @@ class IdleTimer:
""" """
def __init__(self) -> None: def __init__(self) -> None:
self.timeouts = {} # type: Dict[IdleCallback, int] self.timeouts: Dict[IdleCallback, int] = {}
self.tasks = {} # type: Dict[IdleCallback, loop.Task] self.tasks: Dict[IdleCallback, loop.Task] = {}
async def _timeout_task(self, callback: IdleCallback) -> None: async def _timeout_task(self, callback: IdleCallback) -> None:
# This function is async, so the result of self._timeout_task() is an awaitable, # This function is async, so the result of self._timeout_task() is an awaitable,