@@ -214,16 +214,12 @@ def run_keyword(self, name, args, kwargs=None):
214
214
def _get_keyword (self , name ):
215
215
if name in self ._robot_name_index :
216
216
name = self ._robot_name_index [name ]
217
- kw = getattr (self ._library , name , None )
218
- return kw if is_function_or_method (kw ) else None
217
+ return getattr (self ._library , name )
219
218
220
219
def get_keyword_arguments (self , name ):
221
- kw = self ._get_keyword (name )
222
- if not kw :
220
+ if __name__ == '__init__' :
223
221
return []
224
- return self ._arguments_from_kw (kw )
225
-
226
- def _arguments_from_kw (self , kw ):
222
+ kw = self ._get_keyword (name )
227
223
args , varargs , kwargs , defaults = inspect .getargspec (kw )
228
224
if inspect .ismethod (kw ):
229
225
args = args [1 :] # drop 'self'
@@ -239,15 +235,32 @@ def _arguments_from_kw(self, kw):
239
235
def get_keyword_documentation (self , name ):
240
236
if name == '__intro__' :
241
237
return inspect .getdoc (self ._library ) or ''
242
- if name == '__init__' and inspect .ismodule (self ._library ):
243
- return ''
238
+ if name == '__init__' :
239
+ init = self ._get_init (self ._library )
240
+ return inspect .getdoc (init ) or ''
244
241
keyword = self ._get_keyword (name )
245
242
doc = (inspect .getdoc (keyword ) or '' ).lstrip ()
246
243
if getattr (keyword , 'robot_tags' , []):
247
244
tags = 'Tags: %s' % ', ' .join (keyword .robot_tags )
248
245
doc = '%s\n \n %s' % (doc , tags ) if doc else tags
249
246
return doc
250
247
248
+ def _get_init (self , library ):
249
+ if inspect .ismodule (library ):
250
+ return None
251
+ init = getattr (library , '__init__' , None )
252
+ return init if self ._is_valid_init (init ) else None
253
+
254
+ def _is_valid_init (self , init ):
255
+ if not init :
256
+ return False
257
+ # https://bitbucket.org/pypy/pypy/issues/2462/
258
+ if 'PyPy' in sys .version :
259
+ if PY2 :
260
+ return init .__func__ is not object .__init__ .__func__
261
+ return init is not object .__init__
262
+ return is_function_or_method (init )
263
+
251
264
252
265
class HybridRemoteLibrary (StaticRemoteLibrary ):
253
266
0 commit comments