a
q�qe� � @ s� d dl Z d dlmZmZ ddlmZ ddlmZ ddlm Z ddl
mZ dd lm
Z
mZmZ d
ZdZdZd
ZdZdZdZdZG dd� de�ZdS )� N)�List�Union� )�InvalidCheckValue)� AnyTERule)�TERuleQuery� )�
CheckerModule)�ConfigDescriptor�ConfigSetDescriptor�ConfigPermissionSetDescriptor�source�target�tclass�perms�
exempt_source�
exempt_target�
expect_source�
expect_targetc s� e Zd ZdZdZeeeee e
eee
f�Zed�Zed�Zedddd�Ze� Zedddd�Zedddd�Zedddd�Zedddd�Zdd �� fd
d�Zed �dd
�Z� ZS )�AssertTEzKChecker module for asserting a type enforcement allow rule exists (or not).Z assert_teZlookup_type_or_attrZlookup_classTF)�strict�expandN)�returnc s t � �|||� t�t�| _|�t�| _|�t �| _
|�t�| _|�t
�| _|�t�| _|�t�| _|�t�| _|�t�| _t| j| j
| j| jf�s�td��| j| j@ }|r�| j�d�d�dd� |D ���� | j| j@ }|�r| j�d�d�dd� |D ���� d S )NzEAt least one of source, target, tclass, or perms options must be set.z.Overlap in expect_source and exempt_source: {}z, c s s | ]}|j V qd S �N��name��.0�i� r �>/usr/lib64/python3.9/site-packages/setools/checker/assertte.py� <genexpr>A � z$AssertTE.__init__.<locals>.<genexpr>z.Overlap in expect_target and exempt_target: {}c s s | ]}|j V qd S r r r r r r r! F r"