def attr___annotations__(self): obj = node_classes.Dict(parent=self._instance) if not self._instance.returns: returns = None else: returns = self._instance.returns args = self._instance.args pair_annotations = itertools.chain( zip(args.args or [], args.annotations), zip(args.kwonlyargs, args.kwonlyargs_annotations), zip(args.posonlyargs or [], args.posonlyargs_annotations), ) annotations = { arg.name: annotation for (arg, annotation) in pair_annotations if annotation } if args.varargannotation: annotations[args.vararg] = args.varargannotation if args.kwargannotation: annotations[args.kwarg] = args.kwargannotation if returns: annotations["return"] = returns items = [ (node_classes.Const(key, parent=obj), value) for (key, value) in annotations.items() ] obj.postinit(items) return obj
def attr___package__(self): if not self._instance.package: value = "" else: value = self._instance.name return node_classes.Const(value=value, parent=self._instance)
def attr___defaults__(self): func = self._instance if not func.args.defaults: return node_classes.Const(value=None, parent=func) defaults_obj = node_classes.Tuple(parent=func) defaults_obj.postinit(func.args.defaults) return defaults_obj
def _default_args(args, parent): for arg in args.kwonlyargs: try: default = args.default_value(arg.name) except NoDefault: continue name = node_classes.Const(arg.name, parent=parent) yield name, default
def _dunder_dict(instance, attributes): obj = node_classes.Dict(parent=instance) # Convert the keys to node strings keys = [ node_classes.Const(value=value, parent=obj) for value in list(attributes.keys()) ] # The original attribute has a list of elements for each key, # but that is not useful for retrieving the special attribute's value. # In this case, we're picking the last value from each list. values = [elem[-1] for elem in attributes.values()] obj.postinit(list(zip(keys, values))) return obj
def attr___path__(self): if not self._instance.package: raise 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 attr_name(self): return node_classes.Const("")
def attr_errno(self): return node_classes.Const(0)
def attr_strerror(self): return node_classes.Const("")
def attr___doc__(self): return node_classes.Const(getattr(self._instance.doc_node, "value", None))
def attr_text(self): return node_classes.Const("")
def attr___file__(self): return node_classes.Const(value=self._instance.file, parent=self._instance)
def attr___module__(self): return node_classes.Const(self._instance.root().qname())
def attr___self__(self): return node_classes.Const(value=None, parent=self._instance)
def attr___name__(self): return node_classes.Const( value=self._instance.parent.name, parent=self._instance )
def attr___qualname__(self): return node_classes.Const(self._instance.qname())
def attr___doc__(self): return node_classes.Const(value=self._instance.parent.doc, parent=self._instance)
def attr___name__(self): return node_classes.Const(self._instance.name)
def attr___doc__(self): return node_classes.Const(self._instance.doc)
def attr_args(self): message = node_classes.Const("") args = node_classes.Tuple(parent=self._instance) args.postinit((message, )) return args
def attr_path(self): return node_classes.Const("")
def attr___doc__(self): return node_classes.Const( value=getattr(self._instance.parent.doc_node, "value", None), parent=self._instance, )
def attr_object(self): return node_classes.Const("")
def attr___qualname__(self): return node_classes.Const(value=self._instance.qname(), parent=self._instance)