def access(self, namespace, state_tag):
    # Note: namespace currently is either a numeric string or "_global_", and so
    # cannot contain "/".  If this changes, we need to be careful in our
    # construction of the state_key below.
    state_key = '%s/%s' % (namespace, state_tag.tag)
    if state_key not in self.accessed:
      if isinstance(state_tag, trigger.ListStateTag):
        # List state.
        self.accessed[state_key] = WindmillBagAccessor(self.reader, state_key)
      elif isinstance(state_tag, trigger.ValueStateTag):
        # Value state without combiner.
        self.accessed[state_key] = WindmillValueAccessor(self.reader, state_key)
      elif isinstance(state_tag, trigger.CombiningValueStateTag):
        # Value state with combiner.
        self.accessed[state_key] = WindmillCombiningValueAccessor(
            self.reader, state_key, state_tag.combine_fn)
      elif isinstance(state_tag, trigger.WatermarkHoldStateTag):
        # Watermark hold state.
        self.accessed[state_key] = WindmillWatermarkHoldAccessor(
            self.reader, state_key, state_tag.output_time_fn_impl)
      else:
        raise ValueError('Invalid state tag.')
    return self.accessed[state_key]
Make sure no secret fields show up in logs
dataset/ETHPy150Open GoogleCloudPlatform/DataflowPythonSDK/google/cloud/dataflow/worker/windmillstate.py/WindmillStateInternals.access--crossover with--dataset/ETHPy150Open saltstack/salt/salt/utils/http.py/sanitize_url