Skip to content

Commit 4bc5afd

Browse files
committed
currently not composing methods.
emerying works, but completion is available only in the console
1 parent 530d0db commit 4bc5afd

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

ObjectDelegator/delegator.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)