URI: 
       thw wallets: during wallet creation, make sure to save correct label - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 18d245ad5c55b480aae24c5f134083b012beb9dd
   DIR parent 570f7b7790e6716cff49ba75992728cab3375e21
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Tue, 31 Mar 2020 15:56:54 +0200
       
       hw wallets: during wallet creation, make sure to save correct label
       
       When initialising a Trezor as part of the wallet creation,
       device_info.label is still the old (None) label in on_hw_derivation.
       This is because device_info was created during the initial scan.
       
       related: #6063
       
       Diffstat:
         M electrum/base_wizard.py             |       7 ++++---
         M electrum/plugins/hw_wallet/plugin.… |       4 ++--
       
       2 files changed, 6 insertions(+), 5 deletions(-)
       ---
   DIR diff --git a/electrum/base_wizard.py b/electrum/base_wizard.py
       t@@ -332,7 +332,7 @@ class BaseWizard(Logger):
                self.choice_dialog(title=title, message=msg, choices=choices,
                                   run_next=lambda *args: self.on_device(*args, purpose=purpose, storage=storage))
        
       -    def on_device(self, name, device_info, *, purpose, storage=None):
       +    def on_device(self, name, device_info: 'DeviceInfo', *, purpose, storage=None):
                self.plugin = self.plugins.get_plugin(name)
                assert isinstance(self.plugin, HW_PluginBase)
                devmgr = self.plugins.device_manager
       t@@ -414,7 +414,7 @@ class BaseWizard(Logger):
                        self.show_error(e)
                        # let the user choose again
        
       -    def on_hw_derivation(self, name, device_info, derivation, xtype):
       +    def on_hw_derivation(self, name, device_info: 'DeviceInfo', derivation, xtype):
                from .keystore import hardware_keystore
                devmgr = self.plugins.device_manager
                try:
       t@@ -422,6 +422,7 @@ class BaseWizard(Logger):
                    client = devmgr.client_by_id(device_info.device.id_)
                    if not client: raise Exception("failed to find client for device id")
                    root_fingerprint = client.request_root_fingerprint_from_device()
       +            label = client.label()  # use this as device_info.label might be outdated!
                except ScriptTypeNotSupported:
                    raise  # this is handled in derivation_dialog
                except BaseException as e:
       t@@ -434,7 +435,7 @@ class BaseWizard(Logger):
                    'derivation': derivation,
                    'root_fingerprint': root_fingerprint,
                    'xpub': xpub,
       -            'label': device_info.label,
       +            'label': label,
                }
                k = hardware_keystore(d)
                self.on_keystore(k)
   DIR diff --git a/electrum/plugins/hw_wallet/plugin.py b/electrum/plugins/hw_wallet/plugin.py
       t@@ -26,7 +26,7 @@
        
        from typing import TYPE_CHECKING, Dict, List, Union, Tuple, Sequence, Optional, Type
        
       -from electrum.plugin import BasePlugin, hook, Device, DeviceMgr
       +from electrum.plugin import BasePlugin, hook, Device, DeviceMgr, DeviceInfo
        from electrum.i18n import _
        from electrum.bitcoin import is_address, opcodes
        from electrum.util import bfh, versiontuple, UserFacingException
       t@@ -64,7 +64,7 @@ class HW_PluginBase(BasePlugin):
                    if isinstance(keystore, self.keystore_class):
                        self.device_manager().unpair_xpub(keystore.xpub)
        
       -    def setup_device(self, device_info, wizard: 'BaseWizard', purpose):
       +    def setup_device(self, device_info: DeviceInfo, wizard: 'BaseWizard', purpose):
                """Called when creating a new wallet or when using the device to decrypt
                an existing wallet. Select the device to use.  If the device is
                uninitialized, go through the initialization process.