+
    h                        R t ^ RIHt ^ RIHtHt ^ RIHt ]'       d   ^ RIH	t	 ^ RIH
t
 R R ltR R	 ltR
 R ltR R ltR# )zM
Routines for obtaining the class names
of an object and its parent classes.
)annotations)TYPE_CHECKINGcast)unique_everseen)Iterator)Anyc                    V ^8  d   QhRRRR/#    ctype[object]returnzlist[type[Any]] )formats   "7lib/python3.14/site-packages/jaraco/classes/ancestry.py__annotate__r      s       /     c                0    V P                  4       R,          # )zd
return a tuple of all base classes the class c has as a parent.
>>> object in all_bases(list)
True
:   NNmror   s   &r   	all_basesr      s     5572;r   c                    V ^8  d   QhRRRR/# r	   r   )r   s   "r   r   r      s      < O r   c                "    V P                  4       # )zU
return a tuple of all classes to which c belongs
>>> list in all_classes(list)
True
r   r   s   &r   all_classesr      s     557Nr   c                    V ^8  d   QhRRRR/# r
   clsr   r   zIterator[type[Any]]r   )r   s   "r   r   r   '   s     6 6 6*= 6r   c                *    \        \        V 4      4      # )a  
Generator over all subclasses of a given class, in depth-first order.

>>> bool in list(iter_subclasses(int))
True
>>> class A(object): pass
>>> class B(A): pass
>>> class C(A): pass
>>> class D(B,C): pass
>>> class E(D): pass
>>>
>>> for cls in iter_subclasses(A):
...     print(cls.__name__)
B
D
E
C
>>> # get ALL classes currently defined
>>> res = [cls.__name__ for cls in iter_subclasses(object)]
>>> 'type' in res
True
>>> 'tuple' in res
True
>>> len(res) > 100
True
)r   _iter_all_subclasses)r   s   &r   iter_subclassesr!   '   s    6 /455r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   E   s     ( (l (/B (r   c              #     "    V P                  4       pV F  pVx  \        V4       Rj  xL
  K  	  R#   \         d    \        R T 4      P                  T 4      p LJi ; i L65i)z
type[type]N)__subclasses__	TypeErrorr   r!   )r   subssubs   &  r   r    r    E   sd     ;!!# 	"3'''   ;L#&55c:; 	(s/   A$6 A$A"
A$&AA$AA$N)__doc__
__future__r   typingr   r   more_itertoolsr   collections.abcr   r   r   r   r!   r    r   r   r   <module>r-      s2   
 # & *(6<(r   