mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-23 07:58:09 +00:00
client: simplify MovedTo now that we only need it to raise an error
this also removes most of client's imports, which will FINALLY let us import client where it is needed without circular dependencies
This commit is contained in:
parent
ef46bd38ef
commit
4f9bdff564
@ -14,26 +14,11 @@
|
||||
# You should have received a copy of the License along with this library.
|
||||
# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
|
||||
|
||||
import functools
|
||||
import logging
|
||||
import sys
|
||||
import warnings
|
||||
|
||||
from . import (
|
||||
btc,
|
||||
cosi,
|
||||
device,
|
||||
ethereum,
|
||||
exceptions,
|
||||
firmware,
|
||||
lisk,
|
||||
mapping,
|
||||
messages as proto,
|
||||
misc,
|
||||
nem,
|
||||
stellar,
|
||||
tools,
|
||||
)
|
||||
from . import exceptions, messages as proto, tools
|
||||
|
||||
if sys.version_info.major < 3:
|
||||
raise Exception("Trezorlib does not support Python 2 anymore.")
|
||||
@ -44,6 +29,12 @@ LOG = logging.getLogger(__name__)
|
||||
|
||||
PinException = exceptions.PinException
|
||||
|
||||
DEPRECATION_ERROR = """
|
||||
Incompatible Trezor library detected.
|
||||
|
||||
(Original error: {})
|
||||
""".strip()
|
||||
|
||||
|
||||
def get_buttonrequest_value(code):
|
||||
# Converts integer code to its string representation of ButtonRequestType
|
||||
@ -54,29 +45,6 @@ def get_buttonrequest_value(code):
|
||||
][0]
|
||||
|
||||
|
||||
class MovedTo:
|
||||
"""Deprecation redirector for methods that were formerly part of TrezorClient"""
|
||||
|
||||
def __init__(self, where):
|
||||
self.where = where
|
||||
self.name = where.__module__ + "." + where.__name__
|
||||
|
||||
def _deprecated_redirect(self, client, *args, **kwargs):
|
||||
"""Redirector for a deprecated method on TrezorClient"""
|
||||
warnings.warn(
|
||||
"Function has been moved to %s" % self.name,
|
||||
DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
return self.where(client, *args, **kwargs)
|
||||
|
||||
def __get__(self, instance, cls):
|
||||
if instance is None:
|
||||
return self._deprecated_redirect
|
||||
else:
|
||||
return functools.partial(self._deprecated_redirect, instance)
|
||||
|
||||
|
||||
class TrezorClient:
|
||||
VENDORS = ("bitcointrezor.com", "trezor.io")
|
||||
# Implements very basic layer of sending raw protobuf
|
||||
@ -209,6 +177,14 @@ class TrezorClient:
|
||||
return self.call_raw(proto.ClearSession())
|
||||
|
||||
|
||||
def MovedTo(where):
|
||||
def moved_to(*args, **kwargs):
|
||||
msg = "Function has been moved to " + where
|
||||
raise RuntimeError(DEPRECATION_ERROR.format(msg))
|
||||
|
||||
return moved_to
|
||||
|
||||
|
||||
class ProtocolMixin(object):
|
||||
"""Fake mixin for old-style software that constructed TrezorClient class
|
||||
from separate mixins.
|
||||
@ -235,58 +211,63 @@ class ProtocolMixin(object):
|
||||
return tools.parse_path(n)
|
||||
|
||||
# Device functionality
|
||||
wipe_device = MovedTo(device.wipe)
|
||||
recovery_device = MovedTo(device.recover)
|
||||
reset_device = MovedTo(device.reset)
|
||||
backup_device = MovedTo(device.backup)
|
||||
wipe_device = MovedTo("device.wipe")
|
||||
recovery_device = MovedTo("device.recover")
|
||||
reset_device = MovedTo("device.reset")
|
||||
backup_device = MovedTo("device.backup")
|
||||
|
||||
set_u2f_counter = MovedTo(device.set_u2f_counter)
|
||||
set_u2f_counter = MovedTo("device.set_u2f_counter")
|
||||
|
||||
apply_settings = MovedTo(device.apply_settings)
|
||||
apply_flags = MovedTo(device.apply_flags)
|
||||
change_pin = MovedTo(device.change_pin)
|
||||
apply_settings = MovedTo("device.apply_settings")
|
||||
apply_flags = MovedTo("device.apply_flags")
|
||||
change_pin = MovedTo("device.change_pin")
|
||||
|
||||
# Firmware functionality
|
||||
firmware_update = MovedTo(firmware.update)
|
||||
firmware_update = MovedTo("firmware.update")
|
||||
|
||||
# BTC-like functionality
|
||||
get_public_node = MovedTo(btc.get_public_node)
|
||||
get_address = MovedTo(btc.get_address)
|
||||
sign_tx = MovedTo(btc.sign_tx)
|
||||
sign_message = MovedTo(btc.sign_message)
|
||||
verify_message = MovedTo(btc.verify_message)
|
||||
get_public_node = MovedTo("btc.get_public_node")
|
||||
get_address = MovedTo("btc.get_address")
|
||||
sign_tx = MovedTo("btc.sign_tx")
|
||||
sign_message = MovedTo("btc.sign_message")
|
||||
verify_message = MovedTo("btc.verify_message")
|
||||
|
||||
# CoSi functionality
|
||||
cosi_commit = MovedTo(cosi.commit)
|
||||
cosi_sign = MovedTo(cosi.sign)
|
||||
cosi_commit = MovedTo("cosi.commit")
|
||||
cosi_sign = MovedTo("cosi.sign")
|
||||
|
||||
# Ethereum functionality
|
||||
ethereum_get_address = MovedTo(ethereum.get_address)
|
||||
ethereum_sign_tx = MovedTo(ethereum.sign_tx)
|
||||
ethereum_sign_message = MovedTo(ethereum.sign_message)
|
||||
ethereum_verify_message = MovedTo(ethereum.verify_message)
|
||||
ethereum_get_address = MovedTo("ethereum.get_address")
|
||||
ethereum_sign_tx = MovedTo("ethereum.sign_tx")
|
||||
ethereum_sign_message = MovedTo("ethereum.sign_message")
|
||||
ethereum_verify_message = MovedTo("ethereum.verify_message")
|
||||
|
||||
# Lisk functionality
|
||||
lisk_get_address = MovedTo(lisk.get_address)
|
||||
lisk_get_public_key = MovedTo(lisk.get_public_key)
|
||||
lisk_sign_message = MovedTo(lisk.sign_message)
|
||||
lisk_verify_message = MovedTo(lisk.verify_message)
|
||||
lisk_sign_tx = MovedTo(lisk.sign_tx)
|
||||
lisk_get_address = MovedTo("lisk.get_address")
|
||||
lisk_get_public_key = MovedTo("lisk.get_public_key")
|
||||
lisk_sign_message = MovedTo("lisk.sign_message")
|
||||
lisk_verify_message = MovedTo("lisk.verify_message")
|
||||
lisk_sign_tx = MovedTo("lisk.sign_tx")
|
||||
|
||||
# NEM functionality
|
||||
nem_get_address = MovedTo(nem.get_address)
|
||||
nem_sign_tx = MovedTo(nem.sign_tx)
|
||||
nem_get_address = MovedTo("nem.get_address")
|
||||
nem_sign_tx = MovedTo("nem.sign_tx")
|
||||
|
||||
# Stellar functionality
|
||||
stellar_get_address = MovedTo(stellar.get_address)
|
||||
stellar_sign_transaction = MovedTo(stellar.sign_tx)
|
||||
stellar_get_address = MovedTo("stellar.get_address")
|
||||
stellar_sign_transaction = MovedTo("stellar.sign_tx")
|
||||
|
||||
# Miscellaneous cryptographic functionality
|
||||
get_entropy = MovedTo(misc.get_entropy)
|
||||
sign_identity = MovedTo(misc.sign_identity)
|
||||
get_ecdh_session_key = MovedTo(misc.get_ecdh_session_key)
|
||||
encrypt_keyvalue = MovedTo(misc.encrypt_keyvalue)
|
||||
decrypt_keyvalue = MovedTo(misc.decrypt_keyvalue)
|
||||
get_entropy = MovedTo("misc.get_entropy")
|
||||
sign_identity = MovedTo("misc.sign_identity")
|
||||
get_ecdh_session_key = MovedTo("misc.get_ecdh_session_key")
|
||||
encrypt_keyvalue = MovedTo("misc.encrypt_keyvalue")
|
||||
decrypt_keyvalue = MovedTo("misc.decrypt_keyvalue")
|
||||
|
||||
# Debug device functionality
|
||||
load_device_by_mnemonic = MovedTo("debuglink.load_device_by_mnemonic")
|
||||
load_device_by_xprv = MovedTo("debuglink.load_device_by_xprv")
|
||||
|
||||
|
||||
class BaseClient:
|
||||
"""Compatibility proxy for original BaseClient class.
|
||||
|
Loading…
Reference in New Issue
Block a user