@ -43,6 +43,7 @@ from .logging import get_logger, Logger
if TYPE_CHECKING :
from . plugins . hw_wallet import HW_PluginBase , HardwareClientBase , HardwareHandlerBase
from . keystore import Hardware_KeyStore
from . wallet import Abstract_Wallet
_logger = get_logger ( __name__ )
@ -107,7 +108,7 @@ class Plugins(DaemonThread):
def count ( self ) :
return len ( self . plugins )
def load_plugin ( self , name ) :
def load_plugin ( self , name ) - > ' BasePlugin ' :
if name in self . plugins :
return self . plugins [ name ]
full_name = f ' electrum.plugins. { name } . { self . gui_name } '
@ -129,14 +130,14 @@ class Plugins(DaemonThread):
def close_plugin ( self , plugin ) :
self . remove_jobs ( plugin . thread_jobs ( ) )
def enable ( self , name ) :
def enable ( self , name : str ) - > ' BasePlugin ' :
self . config . set_key ( ' use_ ' + name , True , True )
p = self . get ( name )
if p :
return p
return self . load_plugin ( name )
def disable ( self , name ) :
def disable ( self , name : str ) - > None :
self . config . set_key ( ' use_ ' + name , False , True )
p = self . get ( name )
if not p :
@ -145,11 +146,11 @@ class Plugins(DaemonThread):
p . close ( )
self . logger . info ( f " closed { name } " )
def toggle ( self , name ) :
def toggle ( self , name : str ) - > Optional [ ' BasePlugin ' ] :
p = self . get ( name )
return self . disable ( name ) if p else self . enable ( name )
def is_available ( self , name , w ) :
def is_available ( self , name : str , wallet : ' Abstract_Wallet ' ) - > bool :
d = self . descriptions . get ( name )
if not d :
return False
@ -161,7 +162,7 @@ class Plugins(DaemonThread):
self . logger . warning ( f ' Plugin { name } unavailable: { repr ( e ) } ' )
return False
requires = d . get ( ' requires_wallet_type ' , [ ] )
return not requires or w . wallet_type in requires
return not requires or wallet . wallet_type in requires
def get_hardware_support ( self ) :
out = [ ]
@ -270,7 +271,7 @@ class BasePlugin(Logger):
def on_close ( self ) :
pass
def requires_settings ( self ) :
def requires_settings ( self ) - > bool :
return False
def thread_jobs ( self ) :
@ -285,8 +286,11 @@ class BasePlugin(Logger):
def can_user_disable ( self ) :
return True
def settings_dialog ( self ) :
pass
def settings_widget ( self , window ) :
raise NotImplementedError ( )
def settings_dialog ( self , window ) :
raise NotImplementedError ( )
class DeviceUnpairableError ( UserFacingException ) : pass