diff --git a/jedi/api/classes.py b/jedi/api/classes.py index c3f5d0b1..8549e121 100644 --- a/jedi/api/classes.py +++ b/jedi/api/classes.py @@ -237,7 +237,7 @@ class BaseDefinition(object): """ try: - return self._definition.doc + return self._definition.doc or '' # Always a String, never None. except AttributeError: return self.raw_doc diff --git a/jedi/evaluate/compiled/__init__.py b/jedi/evaluate/compiled/__init__.py index d494571c..fa65e660 100644 --- a/jedi/evaluate/compiled/__init__.py +++ b/jedi/evaluate/compiled/__init__.py @@ -56,7 +56,13 @@ class PyObject(Base): def _cls(self): # Ensures that a PyObject is returned that is not an instance (like list) if fake.is_class_instance(self.obj): - return PyObject(self.obj.__class__, self.parent) + try: + c = self.obj.__class__ + except AttributeError: + # happens with numpy.core.umath._UFUNC_API (you get it + # automatically by doing `import numpy`. + c = type(None) + return PyObject(c, self.parent) return self def get_defined_names(self):