Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    def attr___package__(self):
        if not self._instance.package:
            value = ""
        else:
            value = self._instance.name

        return node_classes.Const(value=value, parent=self._instance)
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
        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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
 def attr_name(self):
     return node_classes.Const("")
Ejemplo n.º 8
0
 def attr_errno(self):
     return node_classes.Const(0)
Ejemplo n.º 9
0
 def attr_strerror(self):
     return node_classes.Const("")
Ejemplo n.º 10
0
 def attr___doc__(self):
     return node_classes.Const(getattr(self._instance.doc_node, "value", None))
Ejemplo n.º 11
0
 def attr_text(self):
     return node_classes.Const("")
Ejemplo n.º 12
0
 def attr___file__(self):
     return node_classes.Const(value=self._instance.file, parent=self._instance)
Ejemplo n.º 13
0
 def attr___module__(self):
     return node_classes.Const(self._instance.root().qname())
Ejemplo n.º 14
0
 def attr___self__(self):
     return node_classes.Const(value=None, parent=self._instance)
Ejemplo n.º 15
0
 def attr___name__(self):
     return node_classes.Const(
         value=self._instance.parent.name, parent=self._instance
     )
Ejemplo n.º 16
0
 def attr___qualname__(self):
     return node_classes.Const(self._instance.qname())
Ejemplo n.º 17
0
 def attr___doc__(self):
     return node_classes.Const(value=self._instance.parent.doc,
                               parent=self._instance)
Ejemplo n.º 18
0
 def attr___name__(self):
     return node_classes.Const(self._instance.name)
Ejemplo n.º 19
0
 def attr___doc__(self):
     return node_classes.Const(self._instance.doc)
Ejemplo n.º 20
0
 def attr_args(self):
     message = node_classes.Const("")
     args = node_classes.Tuple(parent=self._instance)
     args.postinit((message, ))
     return args
Ejemplo n.º 21
0
 def attr_path(self):
     return node_classes.Const("")
Ejemplo n.º 22
0
 def attr___doc__(self):
     return node_classes.Const(
         value=getattr(self._instance.parent.doc_node, "value", None),
         parent=self._instance,
     )
Ejemplo n.º 23
0
 def attr_object(self):
     return node_classes.Const("")
Ejemplo n.º 24
0
 def attr___qualname__(self):
     return node_classes.Const(value=self._instance.qname(), parent=self._instance)