+
     h  c                  sj    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                  s2    ] 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 Zformat   "8/usr/lib/python3.14/site-packages/jaraco/classes/meta.py__annotate__ZLeafClassesMeta.__annotate__&   s2     # ## (# !	#
 
#    c                	s    \        V R 4      '       g   \        4       V n        \        V R 4      pVP	                  V 4       V\        V4      ,          pR# )r   N)hasattrZsetr   getattrZadd)clsr   r	   r   Zleaf_classess   &&&& r   __init__ZLeafClassesMeta.__init__&   sC     sO,, #CsO4E
"r   r   N)__name__
__module____qualname____firstlineno____doc__Z__annotations__r   __static_attributes__r   r   r   r   r      s    ( "!# #r   r   c                  s6   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'>
Ztagc               r   )	r   r   r   r	   r
   	namespacer   r   r   r   r   r   r   r   ZTagRegistered.__annotate__I   s2     & && (& %	&
 
&r   c                	s   < \         \        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)Zsuperr   r   r   r!   	__class__r   	attr_name)r   r   r	   r    ZmetaZattrr"   s   &&&&  r   r   ZTagRegistered.__init__I   sW     	mS*4	BsK((CM}}sNND1"%MM$ r   r   )	r   r   r   r   r   r#   r   r   Z__classcell__)r"   s   @r   r   r   4   s    $ I& &r   r   N)	r   Z
__future__r    Ztypingr   r   Ztyper   r   r   r   r   <module>r$      s1    #  "#d "#J!&D !&r   