code: def parse_stage_name(stage):
      
      if isinstance(stage, str):
          return stage
      try:
          return stage.name
      except AttributeError:
          try:
              return stage.__name__
          except AttributeError:
              raise TypeError("Unsupported stage type: {}".format(type(stage)))
docs: Determine the name of a stage.
  
      The stage may be provided already as a name, as a Stage object, or as a
      callable with __name__ (e.g., function).
  
      :param str | pypiper.Stage | function stage: Object representing a stage,
          from which to obtain name.
      :return str: Name of putative pipeline Stage.