class_docstr: Represents a morphism which has a name.
  
  Explanation
  ===========
  
  Names are used to distinguish between morphisms which have the
  same domain and codomain: two named morphisms are equal if they
  have the same domains, codomains, and names.
  
  Examples
  ========
  
  >>> from sympy.categories import Object, NamedMorphism
  >>> A = Object("A")
  >>> B = Object("B")
  >>> f = NamedMorphism(A, B, "f")
  >>> f
  NamedMorphism(Object("A"), Object("B"), "f")
  >>> f.name
  'f'
  
  See Also
  ========
  
  Morphism
class_docstr_tok: ["Represents","a","morphism","which","has","a","name",".","Explanation","===========","Names","are","used","to","distinguish","between","morphisms","which","have","the","same","domain","and","codomain",":","two","named","morphisms","are","equal","if","they","have","the","same","domains",",","codomains",",","and","names",".","Examples","========",">",">",">","from","sympy.categories","import","Object",",","NamedMorphism",">",">",">","A","=","Object","(","``","A","''",")",">",">",">","B","=","Object","(","``","B","''",")",">",">",">","f","=","NamedMorphism","(","A",",","B",",","``","f","''",")",">",">",">","f","NamedMorphism","(","Object","(","``","A","''",")",",","Object","(","``","B","''",")",",","``","f","''",")",">",">",">","f.name","'","f'","See","Also","========","Morphism"]
code: def __new__(cls, domain, codomain, name):
      if not name:
          raise ValueError("Empty morphism names not allowed.")
  
      if not isinstance(name, Str):
          name = Str(name)
  
      return Basic.__new__(cls, domain, codomain, name)
  
imports: from sympy.core import S, Basic, Dict, Symbol, Tuple, sympify
  from sympy.core.symbol import Str
  from sympy.sets import Set, FiniteSet, EmptySet
  from sympy.utilities.iterables import iterable
label_desc: Use image node_id 1 for calling the NamedMorphism obj's underlying member method code with example usage: obj.__new__(cls, domain, codomain, name) and returns: Basic