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
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))
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))
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
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)
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))
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)