code: def _activation_is_memoryless(qconfig: QConfig):
      """
      Return whether the observer for activations defined in the given QConfig is memoryless.
      This means a MovingAverage observer with averaging constant equal to 1.
      """
  
      def _is_memoryless(observer):
          return (
              hasattr(observer, "averaging_constant")
              and observer.averaging_constant == 1
          )
  
      act = qconfig.activation()
      if isinstance(act, FakeQuantizeBase) and hasattr(
          act, "activation_post_process"
      ):
          return _is_memoryless(act.activation_post_process)
      else:
          return _is_memoryless(act)
  
imports: from collections import namedtuple
  from typing import Optional, Any, Union, Type
  import torch
  import torch.nn
  from torch.ao.quantization.fake_quantize import FakeQuantize, FakeQuantizeBase, default_fake_quant, default_dynamic_fake_quant, default_per_channel_weight_fake_quant, default_weight_fake_quant, default_fused_act_fake_quant, default_fused_wt_fake_quant, FusedMovingAvgObsFakeQuantize, default_fused_per_channel_wt_fake_quant, default_embedding_fake_quant, default_embedding_fake_quant_4bit, fused_wt_fake_quant_range_neg_127_to_127, fused_per_channel_wt_fake_quant_range_neg_127_to_127
  from .observer import _PartialWrapper, MinMaxObserver, HistogramObserver, MovingAverageMinMaxObserver, NoopObserver, PlaceholderObserver, ReuseInputObserver, default_debug_observer, default_dynamic_quant_observer, default_float_qparams_observer, default_float_qparams_observer_4bit, default_observer, default_per_channel_weight_observer, default_placeholder_observer, default_weight_observer, weight_observer_range_neg_127_to_127, per_channel_weight_observer_range_neg_127_to_127, default_reuse_input_observer, ObserverBase
  import warnings
  import copy
label_desc: Use image node_id 10 for calling a global function with example usage: _activation_is_memoryless(qconfig) and returns: unknown, _is_memoryless, _is_memoryless