mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-01-25 14:50:57 +00:00
apps: reduce unimport usage
unimport should be used only on the workflow dispatchers.
This commit is contained in:
parent
898b33cffb
commit
710306495e
@ -1,5 +1,4 @@
|
|||||||
from trezor import wire, ui, loop
|
from trezor import wire, ui, loop
|
||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
# used to confirm/cancel the dialogs from outside of this module (i.e.
|
# used to confirm/cancel the dialogs from outside of this module (i.e.
|
||||||
# through debug link)
|
# through debug link)
|
||||||
@ -8,7 +7,6 @@ if __debug__:
|
|||||||
|
|
||||||
|
|
||||||
@ui.layout
|
@ui.layout
|
||||||
@unimport
|
|
||||||
async def confirm(ctx, content, code=None, *args, **kwargs):
|
async def confirm(ctx, content, code=None, *args, **kwargs):
|
||||||
from trezor.ui.confirm import ConfirmDialog, CONFIRMED
|
from trezor.ui.confirm import ConfirmDialog, CONFIRMED
|
||||||
from trezor.messages.ButtonRequest import ButtonRequest
|
from trezor.messages.ButtonRequest import ButtonRequest
|
||||||
@ -31,7 +29,6 @@ async def confirm(ctx, content, code=None, *args, **kwargs):
|
|||||||
|
|
||||||
|
|
||||||
@ui.layout
|
@ui.layout
|
||||||
@unimport
|
|
||||||
async def hold_to_confirm(ctx, content, code=None, *args, **kwargs):
|
async def hold_to_confirm(ctx, content, code=None, *args, **kwargs):
|
||||||
from trezor.ui.confirm import HoldToConfirmDialog, CONFIRMED
|
from trezor.ui.confirm import HoldToConfirmDialog, CONFIRMED
|
||||||
from trezor.messages.ButtonRequest import ButtonRequest
|
from trezor.messages.ButtonRequest import ButtonRequest
|
||||||
@ -53,7 +50,6 @@ async def hold_to_confirm(ctx, content, code=None, *args, **kwargs):
|
|||||||
return await waiter == CONFIRMED
|
return await waiter == CONFIRMED
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def require_confirm(*args, **kwargs):
|
async def require_confirm(*args, **kwargs):
|
||||||
from trezor.messages.FailureType import ActionCancelled
|
from trezor.messages.FailureType import ActionCancelled
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
from trezor import wire, ui, loop
|
from trezor import wire, ui, loop
|
||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
# used to confirm/cancel the dialogs from outside of this module (i.e.
|
# used to confirm/cancel the dialogs from outside of this module (i.e.
|
||||||
# through debug link)
|
# through debug link)
|
||||||
@ -8,7 +7,6 @@ if __debug__:
|
|||||||
|
|
||||||
|
|
||||||
@ui.layout
|
@ui.layout
|
||||||
@unimport
|
|
||||||
async def request_words(ctx, content, code=None, *args, **kwargs):
|
async def request_words(ctx, content, code=None, *args, **kwargs):
|
||||||
from trezor.ui.word_select import WordSelector
|
from trezor.ui.word_select import WordSelector
|
||||||
from trezor.messages.ButtonRequest import ButtonRequest
|
from trezor.messages.ButtonRequest import ButtonRequest
|
||||||
|
@ -1,17 +1,20 @@
|
|||||||
from trezor import log
|
from trezor import log
|
||||||
from trezor import loop
|
from trezor import loop
|
||||||
|
from trezor.utils import unimport
|
||||||
from trezor.wire import register, protobuf_workflow
|
from trezor.wire import register, protobuf_workflow
|
||||||
from trezor.messages.wire_types import \
|
from trezor.messages.wire_types import \
|
||||||
DebugLinkDecision, DebugLinkGetState, DebugLinkStop, \
|
DebugLinkDecision, DebugLinkGetState, DebugLinkStop, \
|
||||||
DebugLinkMemoryRead, DebugLinkMemoryWrite, DebugLinkFlashErase
|
DebugLinkMemoryRead, DebugLinkMemoryWrite, DebugLinkFlashErase
|
||||||
|
|
||||||
|
|
||||||
|
@unimport
|
||||||
async def dispatch_DebugLinkDecision(ctx, msg):
|
async def dispatch_DebugLinkDecision(ctx, msg):
|
||||||
from trezor.ui.confirm import CONFIRMED, CANCELLED
|
from trezor.ui.confirm import CONFIRMED, CANCELLED
|
||||||
from apps.common.confirm import signal
|
from apps.common.confirm import signal
|
||||||
signal.send(CONFIRMED if msg.yes_no else CANCELLED)
|
signal.send(CONFIRMED if msg.yes_no else CANCELLED)
|
||||||
|
|
||||||
|
|
||||||
|
@unimport
|
||||||
async def dispatch_DebugLinkGetState(ctx, msg):
|
async def dispatch_DebugLinkGetState(ctx, msg):
|
||||||
from trezor.messages.DebugLinkState import DebugLinkState
|
from trezor.messages.DebugLinkState import DebugLinkState
|
||||||
from apps.common import storage
|
from apps.common import storage
|
||||||
@ -26,10 +29,12 @@ async def dispatch_DebugLinkGetState(ctx, msg):
|
|||||||
return m
|
return m
|
||||||
|
|
||||||
|
|
||||||
|
@unimport
|
||||||
async def dispatch_DebugLinkStop(ctx, msg):
|
async def dispatch_DebugLinkStop(ctx, msg):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@unimport
|
||||||
async def dispatch_DebugLinkMemoryRead(ctx, msg):
|
async def dispatch_DebugLinkMemoryRead(ctx, msg):
|
||||||
from trezor.messages.DebugLinkMemory import DebugLinkMemory
|
from trezor.messages.DebugLinkMemory import DebugLinkMemory
|
||||||
from uctypes import bytes_at
|
from uctypes import bytes_at
|
||||||
@ -38,6 +43,7 @@ async def dispatch_DebugLinkMemoryRead(ctx, msg):
|
|||||||
return m
|
return m
|
||||||
|
|
||||||
|
|
||||||
|
@unimport
|
||||||
async def dispatch_DebugLinkMemoryWrite(ctx, msg):
|
async def dispatch_DebugLinkMemoryWrite(ctx, msg):
|
||||||
from uctypes import bytearray_at
|
from uctypes import bytearray_at
|
||||||
l = len(msg.memory)
|
l = len(msg.memory)
|
||||||
@ -45,6 +51,7 @@ async def dispatch_DebugLinkMemoryWrite(ctx, msg):
|
|||||||
data[0:l] = msg.memory
|
data[0:l] = msg.memory
|
||||||
|
|
||||||
|
|
||||||
|
@unimport
|
||||||
async def dispatch_DebugLinkFlashErase(ctx, msg):
|
async def dispatch_DebugLinkFlashErase(ctx, msg):
|
||||||
# TODO: erase(msg.sector)
|
# TODO: erase(msg.sector)
|
||||||
pass
|
pass
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
from trezor import wire, ui
|
from trezor import wire, ui
|
||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def layout_ethereum_get_address(ctx, msg):
|
async def layout_ethereum_get_address(ctx, msg):
|
||||||
from trezor.messages.EthereumAddress import EthereumAddress
|
from trezor.messages.EthereumAddress import EthereumAddress
|
||||||
from trezor.crypto.curve import secp256k1
|
from trezor.crypto.curve import secp256k1
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
from apps.common.confirm import *
|
from apps.common.confirm import *
|
||||||
from trezor import wire, ui
|
from trezor import wire, ui
|
||||||
from trezor.utils import unimport, chunks
|
from trezor.utils import chunks
|
||||||
from trezor.messages import ButtonRequestType
|
from trezor.messages import ButtonRequestType
|
||||||
from trezor.ui.text import Text
|
from trezor.ui.text import Text
|
||||||
from ubinascii import hexlify
|
from ubinascii import hexlify
|
||||||
from . import networks
|
from . import networks
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def confirm_tx(ctx, to, value, chain_id, token=None): # todo wording
|
async def confirm_tx(ctx, to, value, chain_id, token=None): # todo wording
|
||||||
str_to = '0x' + hexlify(to).decode() # todo use ethereum address format
|
str_to = '0x' + hexlify(to).decode() # todo use ethereum address format
|
||||||
content = Text('Confirm transaction', ui.ICON_RESET,
|
content = Text('Confirm transaction', ui.ICON_RESET,
|
||||||
@ -17,7 +16,6 @@ async def confirm_tx(ctx, to, value, chain_id, token=None): # todo wording
|
|||||||
return await confirm(ctx, content, ButtonRequestType.SignTx) # we use SignTx, not ConfirmOutput, for compatibility with T1
|
return await confirm(ctx, content, ButtonRequestType.SignTx) # we use SignTx, not ConfirmOutput, for compatibility with T1
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def confirm_fee(ctx, spending, gas_price, gas_limit, chain_id, token=None): # todo wording
|
async def confirm_fee(ctx, spending, gas_price, gas_limit, chain_id, token=None): # todo wording
|
||||||
content = Text('Confirm fee', ui.ICON_RESET,
|
content = Text('Confirm fee', ui.ICON_RESET,
|
||||||
'Sending: %s' % format_amount(spending, token, chain_id),
|
'Sending: %s' % format_amount(spending, token, chain_id),
|
||||||
@ -26,7 +24,6 @@ async def confirm_fee(ctx, spending, gas_price, gas_limit, chain_id, token=None)
|
|||||||
return await hold_to_confirm(ctx, content, ButtonRequestType.SignTx)
|
return await hold_to_confirm(ctx, content, ButtonRequestType.SignTx)
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def confirm_data(ctx, data, data_total): # todo wording
|
async def confirm_data(ctx, data, data_total): # todo wording
|
||||||
str_data = hexlify(data[:8]).decode() + '..'
|
str_data = hexlify(data[:8]).decode() + '..'
|
||||||
content = Text('Confirm data:', ui.ICON_RESET,
|
content = Text('Confirm data:', ui.ICON_RESET,
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
|
|
||||||
def message_digest(message):
|
def message_digest(message):
|
||||||
from apps.wallet.sign_tx.signing import write_varint
|
from apps.wallet.sign_tx.signing import write_varint
|
||||||
@ -16,7 +14,6 @@ def message_digest(message):
|
|||||||
return h.get_digest(True)
|
return h.get_digest(True)
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def ethereum_sign_message(ctx, msg):
|
async def ethereum_sign_message(ctx, msg):
|
||||||
from trezor.messages.EthereumMessageSignature import EthereumMessageSignature
|
from trezor.messages.EthereumMessageSignature import EthereumMessageSignature
|
||||||
from trezor.crypto.curve import secp256k1
|
from trezor.crypto.curve import secp256k1
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
from trezor.utils import unimport
|
|
||||||
from trezor.messages.EthereumSignTx import EthereumSignTx
|
from trezor.messages.EthereumSignTx import EthereumSignTx
|
||||||
from trezor.messages.EthereumTxRequest import EthereumTxRequest
|
from trezor.messages.EthereumTxRequest import EthereumTxRequest
|
||||||
from trezor.messages import FailureType
|
from trezor.messages import FailureType
|
||||||
@ -10,7 +9,6 @@ from apps.ethereum import tokens, layout
|
|||||||
MAX_CHAIN_ID = 2147483630
|
MAX_CHAIN_ID = 2147483630
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def ethereum_sign_tx(ctx, msg):
|
async def ethereum_sign_tx(ctx, msg):
|
||||||
from trezor.crypto.hashlib import sha3_256
|
from trezor.crypto.hashlib import sha3_256
|
||||||
|
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def ethereum_verify_message(ctx, msg):
|
async def ethereum_verify_message(ctx, msg):
|
||||||
from .sign_message import message_digest
|
from .sign_message import message_digest
|
||||||
from trezor.crypto.curve import secp256k1
|
from trezor.crypto.curve import secp256k1
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
from trezor import ui, wire
|
from trezor import ui, wire
|
||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def layout_apply_settings(ctx, msg):
|
async def layout_apply_settings(ctx, msg):
|
||||||
from trezor.messages.Success import Success
|
from trezor.messages.Success import Success
|
||||||
from trezor.messages.FailureType import ProcessError
|
from trezor.messages.FailureType import ProcessError
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
from trezor import ui
|
from trezor import ui
|
||||||
from trezor import config
|
from trezor import config
|
||||||
from trezor.pin import pin_to_int, show_pin_timeout
|
from trezor.pin import pin_to_int, show_pin_timeout
|
||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
|
|
||||||
async def request_pin(ctx):
|
async def request_pin(ctx):
|
||||||
@ -48,7 +47,6 @@ def confirm_change_pin(ctx, msg):
|
|||||||
'set new PIN?'))
|
'set new PIN?'))
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def layout_change_pin(ctx, msg):
|
async def layout_change_pin(ctx, msg):
|
||||||
from trezor.messages.Success import Success
|
from trezor.messages.Success import Success
|
||||||
from trezor.messages.Failure import Failure
|
from trezor.messages.Failure import Failure
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
from trezor import wire, ui, config
|
from trezor import wire, ui, config
|
||||||
from trezor.pin import pin_to_int
|
from trezor.pin import pin_to_int
|
||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def layout_load_device(ctx, msg):
|
async def layout_load_device(ctx, msg):
|
||||||
from trezor.crypto import bip39
|
from trezor.crypto import bip39
|
||||||
from trezor.messages.Success import Success
|
from trezor.messages.Success import Success
|
||||||
|
@ -8,7 +8,6 @@ if __debug__:
|
|||||||
current_word = None
|
current_word = None
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def reset_device(ctx, msg):
|
async def reset_device(ctx, msg):
|
||||||
from trezor.ui.text import Text
|
from trezor.ui.text import Text
|
||||||
from trezor.crypto import hashlib, random, bip39
|
from trezor.crypto import hashlib, random, bip39
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
from trezor import ui
|
from trezor import ui
|
||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def layout_wipe_device(ctx, msg):
|
async def layout_wipe_device(ctx, msg):
|
||||||
from trezor.messages.Success import Success
|
from trezor.messages.Success import Success
|
||||||
from trezor.ui.text import Text
|
from trezor.ui.text import Text
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
from trezor import ui
|
from trezor import ui
|
||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
|
|
||||||
def cipher_key_value(msg, seckey: bytes) -> bytes:
|
def cipher_key_value(msg, seckey: bytes) -> bytes:
|
||||||
@ -25,7 +24,6 @@ def cipher_key_value(msg, seckey: bytes) -> bytes:
|
|||||||
return aes.update(msg.value)
|
return aes.update(msg.value)
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def layout_cipher_key_value(ctx, msg):
|
async def layout_cipher_key_value(ctx, msg):
|
||||||
from trezor.messages.CipheredKeyValue import CipheredKeyValue
|
from trezor.messages.CipheredKeyValue import CipheredKeyValue
|
||||||
from ..common import seed
|
from ..common import seed
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
from trezor import wire, ui
|
from trezor import wire, ui
|
||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def layout_get_address(ctx, msg):
|
async def layout_get_address(ctx, msg):
|
||||||
from trezor.messages.Address import Address
|
from trezor.messages.Address import Address
|
||||||
from trezor.messages.FailureType import ProcessError
|
from trezor.messages.FailureType import ProcessError
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
from trezor import wire, ui
|
from trezor import wire, ui
|
||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def layout_get_entropy(ctx, msg):
|
async def layout_get_entropy(ctx, msg):
|
||||||
from trezor.messages.Entropy import Entropy
|
from trezor.messages.Entropy import Entropy
|
||||||
from trezor.crypto import random
|
from trezor.crypto import random
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def layout_get_public_key(ctx, msg):
|
async def layout_get_public_key(ctx, msg):
|
||||||
from trezor.messages.HDNodeType import HDNodeType
|
from trezor.messages.HDNodeType import HDNodeType
|
||||||
from trezor.messages.PublicKey import PublicKey
|
from trezor.messages.PublicKey import PublicKey
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
from trezor import ui
|
from trezor import ui
|
||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
|
|
||||||
def serialize_identity(identity):
|
def serialize_identity(identity):
|
||||||
@ -80,7 +79,6 @@ def sign_challenge(seckey: bytes,
|
|||||||
return signature
|
return signature
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def layout_sign_identity(ctx, msg):
|
async def layout_sign_identity(ctx, msg):
|
||||||
from trezor.messages.SignedIdentity import SignedIdentity
|
from trezor.messages.SignedIdentity import SignedIdentity
|
||||||
from ..common import coins
|
from ..common import coins
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
from trezor import ui
|
from trezor import ui
|
||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def layout_sign_message(ctx, msg):
|
async def layout_sign_message(ctx, msg):
|
||||||
from trezor.messages.MessageSignature import MessageSignature
|
from trezor.messages.MessageSignature import MessageSignature
|
||||||
from trezor.crypto.curve import secp256k1
|
from trezor.crypto.curve import secp256k1
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
from trezor.utils import unimport
|
|
||||||
from trezor import wire
|
from trezor import wire
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def sign_tx(ctx, msg):
|
async def sign_tx(ctx, msg):
|
||||||
from trezor.messages.RequestType import TXFINISHED
|
from trezor.messages.RequestType import TXFINISHED
|
||||||
from trezor.messages.wire_types import TxAck
|
from trezor.messages.wire_types import TxAck
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
from trezor import ui
|
from trezor import ui
|
||||||
from trezor.utils import unimport
|
|
||||||
|
|
||||||
|
|
||||||
@unimport
|
|
||||||
async def layout_verify_message(ctx, msg):
|
async def layout_verify_message(ctx, msg):
|
||||||
from trezor.messages.Success import Success
|
from trezor.messages.Success import Success
|
||||||
from trezor.crypto.curve import secp256k1
|
from trezor.crypto.curve import secp256k1
|
||||||
|
@ -4,28 +4,7 @@ import gc
|
|||||||
from trezorutils import halt, memcpy
|
from trezorutils import halt, memcpy
|
||||||
|
|
||||||
|
|
||||||
def _gf():
|
def unimport(genfunc):
|
||||||
yield
|
|
||||||
|
|
||||||
|
|
||||||
type_gen = type(_gf())
|
|
||||||
|
|
||||||
|
|
||||||
def _unimport_func(func):
|
|
||||||
def inner(*args, **kwargs):
|
|
||||||
mods = set(sys.modules)
|
|
||||||
try:
|
|
||||||
ret = func(*args, **kwargs)
|
|
||||||
finally:
|
|
||||||
for mod in sys.modules:
|
|
||||||
if mod not in mods:
|
|
||||||
del sys.modules[mod]
|
|
||||||
gc.collect()
|
|
||||||
return ret
|
|
||||||
return inner
|
|
||||||
|
|
||||||
|
|
||||||
def _unimport_gen(genfunc):
|
|
||||||
async def inner(*args, **kwargs):
|
async def inner(*args, **kwargs):
|
||||||
mods = set(sys.modules)
|
mods = set(sys.modules)
|
||||||
try:
|
try:
|
||||||
@ -39,13 +18,6 @@ def _unimport_gen(genfunc):
|
|||||||
return inner
|
return inner
|
||||||
|
|
||||||
|
|
||||||
def unimport(func):
|
|
||||||
if isinstance(func, type_gen):
|
|
||||||
return _unimport_gen(func)
|
|
||||||
else:
|
|
||||||
return _unimport_func(func)
|
|
||||||
|
|
||||||
|
|
||||||
def chunks(items, size):
|
def chunks(items, size):
|
||||||
for i in range(0, len(items), size):
|
for i in range(0, len(items), size):
|
||||||
yield items[i:i + size]
|
yield items[i:i + size]
|
||||||
|
Loading…
Reference in New Issue
Block a user