Esempio n. 1
0
  def _get_default_var(self, node, args):
    if "default" in args.namedargs and "default_factory" in args.namedargs:
      # The pyi signatures should prevent this; check left in for safety.
      raise function.DuplicateKeyword(self.signatures[0].signature, args,
                                      self.vm, "default")
    elif "default" in args.namedargs:
      default_var = args.namedargs["default"]
    elif "default_factory" in args.namedargs:
      factory_var = args.namedargs["default_factory"]
      factory, = factory_var.data
      f_args = function.Args(posargs=())
      node, default_var = factory.call(node, factory_var.bindings[0], f_args)
    else:
      default_var = None

    return node, default_var
Esempio n. 2
0
 def _get_default_var(self, node, args):
   if "default" in args.namedargs and "factory" in args.namedargs:
     # attr.ib(factory=x) is syntactic sugar for attr.ib(default=Factory(x)).
     raise function.DuplicateKeyword(self.signatures[0].signature, args,
                                     self.vm, "default")
   elif "default" in args.namedargs:
     default_var = args.namedargs["default"]
   elif "factory" in args.namedargs:
     mod = self.vm.import_module("attr", "attr", 0)
     node, attr = self.vm.attribute_handler.get_attribute(node, mod, "Factory")
     # We know there is only one value because Factory is in the overlay.
     factory, = attr.data
     factory_args = function.Args(posargs=(args.namedargs["factory"],))
     node, default_var = factory.call(node, attr.bindings[0], factory_args)
   else:
     default_var = None
   return node, default_var