File: //opt/saltstack/salt/lib/python3.10/site-packages/jaraco/classes/__pycache__/meta.cpython-310.pyc
o
�N�g= � @ s( d Z G dd� de�ZG dd� de�ZdS )z#
meta.py
Some useful metaclasses.
c @ s e Zd ZdZdd� ZdS )�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
c C s6 t | d�s t� | _t| d�}|�| � |t|�8 }d S )N�
_leaf_classes)�hasattr�setr �getattr�add)�cls�name�basesZattrsZleaf_classes� r
�G/opt/saltstack/salt/lib/python3.10/site-packages/jaraco/classes/meta.py�__init__ s
zLeafClassesMeta.__init__N)�__name__�
__module__�__qualname__�__doc__r r
r
r
r r s r c s$ e Zd ZdZdZ� fdd�Z� ZS )�
TagRegisteredaY
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 sN t t| ��|||� t| d�si | _| j}t| |jd �}|r%| | j|<