+
    h                    j    R t ^ RIHt ^ RIHt ]'       d   ^ RIHt  ! R R]4      t ! R R]4      tR# )	z#
meta.py

Some useful metaclasses.
)annotations)TYPE_CHECKING)Anyc                  2    ] tR t^t$ RtR]R&   R R ltRtR# )LeafClassesMetaa  
A metaclass for classes that keeps track of all of them that
aren't base classes.

>>> Parent = LeafClassesMeta('MyParentClass', (), {})
>>> Parent in Parent._leaf_classes
True
>>> Child = LeafClassesMeta('MyChildClass', (Parent,), {})
>>> Child in Parent._leaf_classes
True
>>> Parent in Parent._leaf_classes
False

>>> Other = LeafClassesMeta('OtherClass', (), {})
>>> Parent in Other._leaf_classes
False
>>> len(Other._leaf_classes)
1
zset[type[Any]]_leaf_classesc               (    V ^8  d   QhRRRRRRRR/# )	   namestrbasestuple[type[object], ...]attrsdict[str, object]returnNone )formats   "3lib/python3.14/site-packages/jaraco/classes/meta.py__annotate__LeafClassesMeta.__annotate__&   s2     # ## (# !	#
 
#    c                	    \        V R 4      '       g   \        4       V n        \        V R 4      pVP	                  V 4       V\        V4      ,          pR# )r   N)hasattrsetr   getattradd)clsr
   r   r   leaf_classess   &&&& r   __init__LeafClassesMeta.__init__&   sC     sO,, #CsO4E
"r   r   N)__name__
__module____qualname____firstlineno____doc____annotations__r   __static_attributes__r   r   r   r   r      s    ( "!# #r   r   c                  6   a  ] tR t^4tRtRtR V 3R lltRtV ;t# )TagRegistereda!  
As classes of this metaclass are created, they keep a registry in the
base class of all classes by a class attribute, indicated by attr_name.

>>> FooObject = TagRegistered('FooObject', (), dict(tag='foo'))
>>> FooObject._registry['foo'] is FooObject
True
>>> BarObject = TagRegistered('Barobject', (FooObject,), dict(tag='bar'))
>>> FooObject._registry is BarObject._registry
True
>>> len(FooObject._registry)
2

'...' below should be 'jaraco.classes' but for pytest-dev/pytest#3396
>>> FooObject._registry['bar']
<class '....meta.Barobject'>
tagc               (    V ^8  d   QhRRRRRRRR/# )	r	   r
   r   r   r   	namespacer   r   r   r   )r   s   "r   r   TagRegistered.__annotate__I   s2     & && (& %	&
 
&r   c                	   < \         \        V `  WV4       \        V R 4      '       g   / V n        V P
                  p\        WP                  R4      pV'       d   W P                  V&   R# R# )	_registryN)superr)   r   r   r/   	__class__r   	attr_name)r   r
   r   r,   metaattrr1   s   &&&&  r   r   TagRegistered.__init__I   sW     	mS*4	BsK((CM}}sNND1"%MM$ r   r   )	r!   r"   r#   r$   r%   r2   r   r'   __classcell__)r1   s   @r   r)   r)   4   s    $ I& &r   r)   N)	r%   
__future__r   typingr   r   typer   r)   r   r   r   <module>r:      s1    #  "#d "#J!&D !&r   