Exemple #1
0
 def _parse_functions(self, module: nodes.Module) -> None:
     """Parse the function definitions from typeshed."""
     for function_def in module.nodes_of_class(nodes.FunctionDef):
         in_class = isinstance(function_def.parent, nodes.ClassDef)
         if in_class:
             tvars = self.classes[function_def.parent.name]["__pyta_tvars"]
         else:
             tvars = []
         f_type = parse_annotations(function_def, tvars)
         if in_class:
             self.classes[function_def.parent.name][
                 function_def.name].extend(f_type)
             self.methods[function_def.name].extend(f_type)
         else:
             self.functions[function_def.name].extend(f_type)
Exemple #2
0
 def _parse_classes(self, module: nodes.Module) -> None:
     """Parse the class definitions from typeshed."""
     for class_def in module.nodes_of_class(nodes.ClassDef):
         tvars = []
         self.classes[class_def.name]["__bases"] = []
         for base in class_def.bases:
             base_type = _node_to_type(base)
             self.classes[class_def.name]["__pyta_tvars"] = [
                 tv.__name__ for tv in _collect_tvars(base_type)
             ]
             self.classes[class_def.name]["__bases"].append(base_type)
         self.classes[class_def.name]["__mro"] = [
             cls.name for cls in class_def.mro()
         ]
         for node in (nodes[0] for nodes in class_def.locals.values()
                      if isinstance(nodes[0], nodes.AssignName)
                      and isinstance(nodes[0].parent, nodes.AnnAssign)):
             self.classes[class_def.name][node.name] = parse_annotations(
                 node, tvars)