code: def _partial_wrapper_equals(
      obs_or_fq1: _PartialWrapper, obs_or_fq2: _PartialWrapper
  ):
      """
      Return whether the two partial wrappers are equal,
      """
      # functools.partial has no __eq__ operator defined so '==' defaults to 'is'
      obs_or_fq1_keywords = copy.copy(obs_or_fq1.p.keywords)
      obs_or_fq2_keywords = copy.copy(obs_or_fq2.p.keywords)
      keywords_equal = True
      # compare observer constructor with _obs_or_fq_ctr_equals since direct compare would fail
      if (
          "observer" in obs_or_fq1_keywords
          and "observer" in obs_or_fq2_keywords
      ):
          keywords_equal = keywords_equal and _obs_or_fq_ctr_equals(
              obs_or_fq1_keywords["observer"],
              obs_or_fq2_keywords["observer"],
          )
          obs_or_fq1_keywords.pop("observer")
          obs_or_fq2_keywords.pop("observer")
      keywords_equal = (
          keywords_equal and obs_or_fq1_keywords == obs_or_fq2_keywords
      )
      return (
          obs_or_fq1.p.func == obs_or_fq2.p.func
          and obs_or_fq1.p.args == obs_or_fq2.p.args
          and keywords_equal
      )
  
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 8 for calling a global function with example usage: _partial_wrapper_equals(obs_or_fq1, obs_or_fq2) and returns: unknown