@@ -61,12 +61,6 @@ def set_delegated_members(self, delegation_dict: dict) -> None:
6161 else : # if it had delegations append the new ones
6262 self ._delegated_members [obj ] += delegation_dict [obj ]
6363
64- # for the sake autocompletion add composed methods if needed
65- for obj in delegation_dict :
66- for delegate in delegation_dict [obj ]:
67- if callable (getattr (getattr (self , obj ), delegate )):
68- self ._compose_a_method (obj , delegate )
69-
7064 def get_possible_members_to_delegate (self , required_object : Union [None , str ] = None ) -> dict :
7165 """Obtain a dict of members which can be delegated.
7266
@@ -117,20 +111,21 @@ def _list_all_delegated_members(self):
117111 return []
118112
119113 def _compose_a_method (self , obj , delegate ):
120- """ for the sake autocompletion add composed methods for callable delegates """
114+ """ not currently used """
121115
122116 def new_method (self , * args , ** kwargs ):
123117 return getattr (getattr (self , obj ), delegate )(* args , ** kwargs )
124118
125- new_method .__name__ = delegate
126- new_method .__doc__ = getattr (getattr (self , obj ), delegate ).__doc__
127- new_method .__qualname__ = getattr (getattr (self , obj ), delegate ).__qualname__
128119 if inspect .isfunction (getattr (getattr (self , obj ), delegate )):
129120 new_method .__defaults__ = getattr (getattr (self , obj ), delegate ).__defaults__
130121 new_method .__kwdefaults__ = getattr (getattr (self , obj ), delegate ).__kwdefaults__
131122 new_method .__annotations__ = getattr (getattr (self , obj ), delegate ).__annotations__
123+
124+ new_method .__name__ = delegate
125+ new_method .__doc__ = getattr (getattr (self , obj ), delegate ).__doc__
126+ new_method .__qualname__ = self .__class__ .__name__ + '.' + delegate
132127 new_method .__signature__ = inspect .signature (getattr (getattr (self , obj ), delegate ))
133- test = inspect . signature ( getattr ( getattr ( self , obj ), delegate ))
128+
134129 self .__setattr__ (delegate , MethodType (new_method , self ))
135130
136131 def __getattr__ (self , _attribute ):
@@ -164,13 +159,18 @@ class Bar:
164159 rabbit_too = RabbitHole ('second rabbit' )
165160 boring = 2
166161
162+ def bar_meth (self , text : str ) -> str :
163+ return text + text
164+
167165
168166 class Master (Delegator ):
169167 def __init__ (self ):
170168 self .foo_obj = Foo ()
171169 self .bar_obj = Bar ()
172170 self .test = 1
173171
172+ def master_method (self ):
173+ print ("I'm the master" )
174174
175175 master = Master () # instantiate a master
176176
@@ -180,6 +180,7 @@ def __init__(self):
180180 sig = inspect .signature (master .foo )
181181
182182 print (master .foo ('hi there' ))
183+ print (inspect .getmembers (master , inspect .ismethod ))
183184 print (master .foo_property ) # can delegate properties
184185
185186 print (master .rabbit .down_we_go ) # or even other objects
@@ -211,3 +212,5 @@ def __init__(self):
211212
212213 # clear all the mess
213214 master .clear_all_delegations ()
215+
216+ master .set_delegated_members ({'foo_obj' : ['foo' , 'foo_property' , 'rabbit' ], 'bar_obj' : ['rabbit_too' , 'bar_meth' ]})
0 commit comments