Пример #1
0
    def __init__(self, obj_to_invoke, method_name):
        """
    Initiates a ``MethodWrapper``.

    Args:
      obj_to_invoke: the object that contains the method. Has to either be a
                    `DoFn` object or a `RestrictionProvider` object.
      method_name: name of the method as a string.
    """

        if not isinstance(obj_to_invoke, (DoFn, RestrictionProvider)):
            raise ValueError(
                '\'obj_to_invoke\' has to be either a \'DoFn\' or '
                'a \'RestrictionProvider\'. Received %r instead.' %
                obj_to_invoke)

        args, _, _, defaults = core.get_function_arguments(
            obj_to_invoke, method_name)
        defaults = defaults if defaults else []
        method_value = getattr(obj_to_invoke, method_name)
        self.method_value = method_value
        self.args = args
        self.defaults = defaults

        self.has_userstate_arguments = False
        self.state_args_to_replace = {}
        self.timer_args_to_replace = {}
        for kw, v in zip(args[-len(defaults):], defaults):
            if isinstance(v, core.DoFn.StateParam):
                self.state_args_to_replace[kw] = v.state_spec
                self.has_userstate_arguments = True
            elif isinstance(v, core.DoFn.TimerParam):
                self.timer_args_to_replace[kw] = v.timer_spec
                self.has_userstate_arguments = True
Пример #2
0
  def __init__(self, obj_to_invoke, method_name):
    """
    Initiates a ``MethodWrapper``.

    Args:
      obj_to_invoke: the object that contains the method. Has to either be a
                    `DoFn` object or a `RestrictionProvider` object.
      method_name: name of the method as a string.
    """

    if not isinstance(obj_to_invoke,
                      (DoFn, RestrictionProvider, WatermarkEstimatorProvider)):
      raise ValueError(
          '\'obj_to_invoke\' has to be either a \'DoFn\' or '
          'a \'RestrictionProvider\'. Received %r instead.' % obj_to_invoke)

    self.args, self.defaults = core.get_function_arguments(obj_to_invoke,
                                                           method_name)

    # TODO(BEAM-5878) support kwonlyargs on Python 3.
    self.method_value = getattr(obj_to_invoke, method_name)

    self.has_userstate_arguments = False
    self.state_args_to_replace = {}  # type: Dict[str, core.StateSpec]
    self.timer_args_to_replace = {}  # type: Dict[str, core.TimerSpec]
    self.timestamp_arg_name = None  # type: Optional[str]
    self.window_arg_name = None  # type: Optional[str]
    self.key_arg_name = None  # type: Optional[str]
    self.restriction_provider = None
    self.restriction_provider_arg_name = None
    self.watermark_estimator_provider = None
    self.watermark_estimator_provider_arg_name = None

    for kw, v in zip(self.args[-len(self.defaults):], self.defaults):
      if isinstance(v, core.DoFn.StateParam):
        self.state_args_to_replace[kw] = v.state_spec
        self.has_userstate_arguments = True
      elif isinstance(v, core.DoFn.TimerParam):
        self.timer_args_to_replace[kw] = v.timer_spec
        self.has_userstate_arguments = True
      elif core.DoFn.TimestampParam == v:
        self.timestamp_arg_name = kw
      elif core.DoFn.WindowParam == v:
        self.window_arg_name = kw
      elif core.DoFn.KeyParam == v:
        self.key_arg_name = kw
      elif isinstance(v, core.DoFn.RestrictionParam):
        self.restriction_provider = v.restriction_provider
        self.restriction_provider_arg_name = kw
      elif isinstance(v, core.DoFn.WatermarkEstimatorParam):
        self.watermark_estimator_provider = v.watermark_estimator_provider
        self.watermark_estimator_provider_arg_name = kw

    # Create NoOpWatermarkEstimatorProvider if there is no
    # WatermarkEstimatorParam provided.
    if self.watermark_estimator_provider is None:
      self.watermark_estimator_provider = NoOpWatermarkEstimatorProvider()
Пример #3
0
    def __init__(self, obj_to_invoke, method_name):
        """
    Initiates a ``MethodWrapper``.

    Args:
      obj_to_invoke: the object that contains the method. Has to either be a
                    `DoFn` object or a `RestrictionProvider` object.
      method_name: name of the method as a string.
    """

        if not isinstance(obj_to_invoke, (DoFn, RestrictionProvider)):
            raise ValueError(
                '\'obj_to_invoke\' has to be either a \'DoFn\' or '
                'a \'RestrictionProvider\'. Received %r instead.' %
                obj_to_invoke)

        fullargspec = core.get_function_arguments(obj_to_invoke, method_name)

        # TODO(BEAM-5878) support kwonlyargs on Python 3.
        args = fullargspec[0]
        defaults = fullargspec[3]

        defaults = defaults if defaults else []
        method_value = getattr(obj_to_invoke, method_name)
        self.method_value = method_value
        self.args = args
        self.defaults = defaults

        self.has_userstate_arguments = False
        self.state_args_to_replace = {}
        self.timer_args_to_replace = {}
        self.timestamp_arg_name = None
        self.window_arg_name = None
        self.key_arg_name = None

        for kw, v in zip(args[-len(defaults):], defaults):
            if isinstance(v, core.DoFn.StateParam):
                self.state_args_to_replace[kw] = v.state_spec
                self.has_userstate_arguments = True
            elif isinstance(v, core.DoFn.TimerParam):
                self.timer_args_to_replace[kw] = v.timer_spec
                self.has_userstate_arguments = True
            elif v == core.DoFn.TimestampParam:
                self.timestamp_arg_name = kw
            elif v == core.DoFn.WindowParam:
                self.window_arg_name = kw
            elif v == core.DoFn.KeyParam:
                self.key_arg_name = kw
Пример #4
0
  def __init__(self, obj_to_invoke, method_name):
    """
    Initiates a ``MethodWrapper``.

    Args:
      obj_to_invoke: the object that contains the method. Has to either be a
                    `DoFn` object or a `RestrictionProvider` object.
      method_name: name of the method as a string.
    """

    if not isinstance(obj_to_invoke, (DoFn, RestrictionProvider)):
      raise ValueError('\'obj_to_invoke\' has to be either a \'DoFn\' or '
                       'a \'RestrictionProvider\'. Received %r instead.'
                       % obj_to_invoke)

    args, _, _, defaults = core.get_function_arguments(
        obj_to_invoke, method_name)
    defaults = defaults if defaults else []
    method_value = getattr(obj_to_invoke, method_name)
    self.method_value = method_value
    self.args = args
    self.defaults = defaults
Пример #5
0
  def __init__(self, obj_to_invoke, method_name):
    """
    Initiates a ``MethodWrapper``.

    Args:
      obj_to_invoke: the object that contains the method. Has to either be a
                    `DoFn` object or a `RestrictionProvider` object.
      method_name: name of the method as a string.
    """

    if not isinstance(obj_to_invoke, (DoFn, RestrictionProvider)):
      raise ValueError('\'obj_to_invoke\' has to be either a \'DoFn\' or '
                       'a \'RestrictionProvider\'. Received %r instead.'
                       % obj_to_invoke)

    args, _, _, defaults = core.get_function_arguments(
        obj_to_invoke, method_name)
    defaults = defaults if defaults else []
    method_value = getattr(obj_to_invoke, method_name)
    self.method_value = method_value
    self.args = args
    self.defaults = defaults
Пример #6
0
  def __init__(self, obj_to_invoke, method_name):
    """
    Initiates a ``MethodWrapper``.

    Args:
      obj_to_invoke: the object that contains the method. Has to either be a
                    `DoFn` object or a `RestrictionProvider` object.
      method_name: name of the method as a string.
    """

    if not isinstance(obj_to_invoke, (DoFn, RestrictionProvider)):
      raise ValueError('\'obj_to_invoke\' has to be either a \'DoFn\' or '
                       'a \'RestrictionProvider\'. Received %r instead.'
                       % obj_to_invoke)

    fullargspec = core.get_function_arguments(
        obj_to_invoke, method_name)

    # TODO(BEAM-5878) support kwonlyargs on Python 3.
    args = fullargspec[0]
    defaults = fullargspec[3]

    defaults = defaults if defaults else []
    method_value = getattr(obj_to_invoke, method_name)
    self.method_value = method_value
    self.args = args
    self.defaults = defaults

    self.has_userstate_arguments = False
    self.state_args_to_replace = {}
    self.timer_args_to_replace = {}
    for kw, v in zip(args[-len(defaults):], defaults):
      if isinstance(v, core.DoFn.StateParam):
        self.state_args_to_replace[kw] = v.state_spec
        self.has_userstate_arguments = True
      elif isinstance(v, core.DoFn.TimerParam):
        self.timer_args_to_replace[kw] = v.timer_spec
        self.has_userstate_arguments = True