Example #1
0
 def value_to_constant(self, val, constant_type):
     if (abstract_utils.is_concrete(val)
             and isinstance(val.pyval, constant_type or object)):
         return val.pyval
     name = self.constant_name(constant_type)
     raise abstract_utils.ConversionError("%s is not of type %s" %
                                          (val, name))
Example #2
0
 def _print_as_expected_type(self, t: abstract.BaseValue, instance=None):
   """Print abstract value t as a pytd type."""
   if t.is_late_annotation():
     return t.expr
   elif isinstance(t, (abstract.Unknown, abstract.Unsolvable,
                       class_mixin.Class, abstract.Union)):
     with t.vm.convert.pytd_convert.set_output_mode(
         t.vm.convert.pytd_convert.OutputMode.DETAILED):
       return self._pytd_print(t.get_instance_type(instance=instance))
   elif abstract_utils.is_concrete(t):
     return re.sub(r"(\\n|\s)+", " ",
                   t.str_of_constant(self._print_as_expected_type))
   elif isinstance(t, abstract.AnnotationClass) or not t.cls:
     return t.name
   else:
     return "<instance of %s>" % self._print_as_expected_type(t.cls, t)