def check_or_interleave(hint, value, var):
    if hint is None:
        return value
    elif isinstance(hint, typehints.IteratorHint.IteratorTypeConstraint):
        return _interleave_type_check(hint, var)(value)
    _check_instance_type(hint, value, var)
    return value
def check_or_interleave(hint, value, var):
  if hint is None:
    return value
  elif isinstance(hint, typehints.IteratorHint.IteratorTypeConstraint):
    return _interleave_type_check(hint, var)(value)
  _check_instance_type(hint, value, var)
  return value
Exemple #3
0
 def process(self, *args, **kwargs):
   if self._input_hints:
     actual_inputs = inspect.getcallargs(self._process_fn, *args, **kwargs)
     for var, hint in self._input_hints.items():
       if hint is actual_inputs[var]:
         # self parameter
         continue
       _check_instance_type(hint, actual_inputs[var], var, True)
   return self._type_check_result(self.dofn.process(*args, **kwargs))
Exemple #4
0
 def process(self, *args, **kwargs):
   if self._input_hints:
     actual_inputs = inspect.getcallargs(self._process_fn, *args, **kwargs)
     for var, hint in self._input_hints.items():
       if hint is actual_inputs[var]:
         # self parameter
         continue
       _check_instance_type(hint, actual_inputs[var], var, True)
   return self._type_check_result(self.dofn.process(*args, **kwargs))
Exemple #5
0
 def extract_output(self, accumulator, *args, **kwargs):
     result = self._combinefn.extract_output(accumulator, *args, **kwargs)
     if self._output_type_hint:
         try:
             _check_instance_type(self._output_type_hint.tuple_types[1],
                                  result, None, True)
         except TypeCheckError as e:
             error_msg = ('Runtime type violation detected within %s: '
                          '%s' % (self._label, e))
             raise TypeCheckError, error_msg, sys.exc_info()[2]
     return result
Exemple #6
0
 def add_input(self, accumulator, element, *args, **kwargs):
     if self._input_type_hint:
         try:
             _check_instance_type(
                 self._input_type_hint[0][0].tuple_types[1], element,
                 'element', True)
         except TypeCheckError as e:
             error_msg = ('Runtime type violation detected within %s: '
                          '%s' % (self._label, e))
             raise TypeCheckError, error_msg, sys.exc_info()[2]
     return self._combinefn.add_input(accumulator, element, *args, **kwargs)
 def extract_output(self, accumulator, *args, **kwargs):
   result = self._combinefn.extract_output(accumulator, *args, **kwargs)
   if self._output_type_hint:
     try:
       _check_instance_type(
           self._output_type_hint.tuple_types[1], result, None, True)
     except TypeCheckError as e:
       error_msg = ('Runtime type violation detected within %s: '
                    '%s' % (self._label, e))
       raise_with_traceback(TypeCheckError(error_msg))
   return result
 def add_input(self, accumulator, element, *args, **kwargs):
   if self._input_type_hint:
     try:
       _check_instance_type(
           self._input_type_hint[0][0].tuple_types[1], element, 'element',
           True)
     except TypeCheckError as e:
       error_msg = ('Runtime type violation detected within %s: '
                    '%s' % (self._label, e))
       raise_with_traceback(TypeCheckError(error_msg))
   return self._combinefn.add_input(accumulator, element, *args, **kwargs)
Exemple #9
0
 def process(self, context, *args, **kwargs):
   if self._input_hints:
     actual_inputs = inspect.getcallargs(
         self._process_fn, context.element, *args, **kwargs)
     for var, hint in self._input_hints.items():
       if hint is actual_inputs[var]:
         # self parameter
         continue
       var_name = var + '.element' if var == self.context_var else var
       _check_instance_type(hint, actual_inputs[var], var_name, True)
   return self._type_check_result(self._dofn.process(context, *args, **kwargs))
Exemple #10
0
 def type_check(self, value):
   # type: (Any, bool) -> None
   for transform_label, type_constraint_tuple in (
           self.output_type_constraints.items()):
     parameter_name, constraint = type_constraint_tuple
     try:
       _check_instance_type(constraint, value, parameter_name, verbose=True)
     except TypeCheckError as e:
       # TODO: Remove the 'ParDo' prefix for the label name (BEAM-10710)
       if not transform_label.startswith('ParDo'):
         transform_label = 'ParDo(%s)' % transform_label
       error_msg = (
           'Runtime type violation detected within %s: '
           '%s' % (transform_label, e))
       _, _, traceback = sys.exc_info()
       raise TypeCheckError(error_msg).with_traceback(traceback)