class_docstr: Subclass of argparse.Action to avoid staging and unstaging the same rules
class_docstr_tok: ["Subclass","of","argparse.Action","to","avoid","staging","and","unstaging","the","same","rules"]
code: def __call__(self, parser, namespace, values, option_string=None):
      unique_items = set(values)
      error = (
          "The following rules cannot be within both the '--stage-rules' argument "
          "and the '--unstage-rules' argument: {}"
      )
      if namespace.unstage_rules:
          offending_rules = unique_items.intersection(
              namespace.unstage_rules
          )
          if offending_rules:
              raise parser.error(
                  error.format(", ".join(list(offending_rules)))
              )
      if namespace.stage_rules:
          offending_rules = unique_items.intersection(
              namespace.stage_rules
          )
          if offending_rules:
              raise parser.error(
                  error.format(", ".join(list(offending_rules)))
              )
      setattr(namespace, self.dest, unique_items)
  
imports: from abc import abstractmethod
  from argparse import _AppendAction, Action, ArgumentTypeError, RawDescriptionHelpFormatter
  import os
  import textwrap
  from streamalert.apps.config import AWS_RATE_RE, AWS_RATE_HELPER
label_desc: Use image node_id 1 for calling the MutuallyExclusiveStagingAction obj's underlying member method code with example usage: obj.__call__(parser, namespace, values, option_string) without return types