def attr___subclasses__(self): """Get the subclasses of the underlying class This looks only in the current module for retrieving the subclasses, thus it might miss a couple of them. """ # pylint: disable=import-outside-toplevel; circular import from astroid import bases from astroid import scoped_nodes if not self._instance.newstyle: raise exceptions.AttributeInferenceError( target=self._instance, attribute="__subclasses__") qname = self._instance.qname() root = self._instance.root() classes = [ cls for cls in root.nodes_of_class(scoped_nodes.ClassDef) if cls != self._instance and cls.is_subtype_of(qname) ] obj = node_classes.List(parent=self._instance) obj.postinit(classes) class SubclassesBoundMethod(bases.BoundMethod): def infer_call_result(self, caller, context=None): yield obj implicit_metaclass = self._instance.implicit_metaclass() subclasses_method = implicit_metaclass.locals["__subclasses__"][0] return SubclassesBoundMethod(proxy=subclasses_method, bound=implicit_metaclass)
def attr_keys(self): keys = [key for (key, _) in self._instance.items] obj = node_classes.List(parent=self._instance) obj.postinit(elts=keys) obj = objects.DictKeys(obj) return self._generic_dict_attribute(obj, "keys")
def attr_values(self): values = [value for (_, value) in self._instance.items] obj = node_classes.List(parent=self._instance) obj.postinit(values) obj = objects.DictValues(obj) return self._generic_dict_attribute(obj, "values")
def pykeys(self): keys = [key for (key, _) in self._instance.items] obj = node_classes.List(parent=self._instance) obj.postinit(elts=keys) from astroid import objects obj = objects.DictKeys(obj) return self._generic_dict_attribute(obj, 'keys')
def attr_keys(self): keys = [key for (key, _) in self._instance.items] obj = node_classes.List(parent=self._instance) obj.postinit(elts=keys) # pylint: disable=import-outside-toplevel; circular import from astroid import objects obj = objects.DictKeys(obj) return self._generic_dict_attribute(obj, "keys")
def pyvalues(self): values = [value for (_, value) in self._instance.items] obj = node_classes.List(parent=self._instance) obj.postinit(values) from astroid import objects obj = objects.DictValues(obj) return self._generic_dict_attribute(obj, 'values')
def attr_values(self): values = [value for (_, value) in self._instance.items] obj = node_classes.List(parent=self._instance) obj.postinit(values) # pylint: disable=import-outside-toplevel; circular import from astroid import objects obj = objects.DictValues(obj) return self._generic_dict_attribute(obj, "values")
def attr_items(self): elems = [] obj = node_classes.List(parent=self._instance) for key, value in self._instance.items: elem = node_classes.Tuple(parent=obj) elem.postinit((key, value)) elems.append(elem) obj.postinit(elts=elems) obj = objects.DictItems(obj) return self._generic_dict_attribute(obj, "items")
def py__path__(self): if not self._instance.package: raise exceptions.AttributeInferenceError(target=self._instance, attribute='__path__') path = os.path.dirname(self._instance.file) path_obj = node_classes.Const(value=path, parent=self._instance) container = node_classes.List(parent=self._instance) container.postinit([path_obj]) return container
def attr_items(self): elems = [] obj = node_classes.List(parent=self._instance) for key, value in self._instance.items: elem = node_classes.Tuple(parent=obj) elem.postinit((key, value)) elems.append(elem) obj.postinit(elts=elems) # pylint: disable=import-outside-toplevel; circular import from astroid import objects obj = objects.DictItems(obj) return self._generic_dict_attribute(obj, "items")
def pyitems(self): elems = [] obj = node_classes.List(parent=self._instance) for key, value in self._instance.items: elem = node_classes.Tuple(parent=obj) elem.postinit((key, value)) elems.append(elem) obj.postinit(elts=elems) if six.PY3: from astroid import objects obj = objects.DictItems(obj) return self._generic_dict_attribute(obj, 'items')
def py__path__(self): if not self._instance.package: raise exceptions.AttributeInferenceError(target=self._instance, attribute='__path__') path_objs = [ node_classes.Const(value=path if not path.endswith('__init__.py') else os.path.dirname(path), parent=self._instance) for path in self._instance.path ] container = node_classes.List(parent=self._instance) container.postinit(path_objs) return container
def py__path__(self): if not self._instance.package: raise exceptions.AttributeInferenceError(target=self._instance, attribute='__path__') if isinstance(self._instance.path, list): path_objs = [ node_classes.Const(value=path, parent=self._instance) for path in self._instance.path ] else: path = os.path.dirname(self._instance.path) path_objs = [node_classes.Const(value=path, parent=self._instance)] container = node_classes.List(parent=self._instance) container.postinit(path_objs) return container