@@ -214,16 +214,12 @@ def run_keyword(self, name, args, kwargs=None):
214214 def _get_keyword (self , name ):
215215 if name in self ._robot_name_index :
216216 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 )
219218
220219 def get_keyword_arguments (self , name ):
221- kw = self ._get_keyword (name )
222- if not kw :
220+ if __name__ == '__init__' :
223221 return []
224- return self ._arguments_from_kw (kw )
225-
226- def _arguments_from_kw (self , kw ):
222+ kw = self ._get_keyword (name )
227223 args , varargs , kwargs , defaults = inspect .getargspec (kw )
228224 if inspect .ismethod (kw ):
229225 args = args [1 :] # drop 'self'
@@ -239,15 +235,32 @@ def _arguments_from_kw(self, kw):
239235 def get_keyword_documentation (self , name ):
240236 if name == '__intro__' :
241237 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 ''
244241 keyword = self ._get_keyword (name )
245242 doc = (inspect .getdoc (keyword ) or '' ).lstrip ()
246243 if getattr (keyword , 'robot_tags' , []):
247244 tags = 'Tags: %s' % ', ' .join (keyword .robot_tags )
248245 doc = '%s\n \n %s' % (doc , tags ) if doc else tags
249246 return doc
250247
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+
251264
252265class HybridRemoteLibrary (StaticRemoteLibrary ):
253266
0 commit comments