a
q�qe$ � @ sz d dl Z d dlZd dlmZmZ ddlmZ ddlmZm Z ddl
mZ ddlm
Z
mZmZmZmZ G dd � d ee�ZdS )
� N)�cast�Iterable� )�PolicyQuery)�CriteriaDescriptor�CriteriaSetDescriptor)�
MatchObjClass)�
AnyDefault�DefaultRange�DefaultRuletype�DefaultValue�DefaultRangeValuec sV e Zd ZdZeed�Zeed�Z ee
d�Zdd�� fdd�Ze
e d�dd�Z� ZS ) �DefaultQuerya#
Query default_* statements.
Parameter:
policy The policy to query.
Keyword Parameters/Class attributes:
ruletype The rule type(s) to match.
tclass The object class(es) to match.
tclass_regex If true, use a regular expression for
matching the rule's object class.
default The default to base new contexts (e.g. "source" or "target")
default_range The range to use on new context, default_range only
("low", "high", "low_high")
)�
enum_classN)�returnc s( t t| �j|fi |�� t�t�| _d S )N)�superr �__init__�loggingZ getLogger�__name__�log)�self�policy�kwargs�� __class__� �:/usr/lib64/python3.9/site-packages/setools/defaultquery.pyr % s zDefaultQuery.__init__c c s� | j �d�| �� | j �d�| �� | �| j � | j �d�| �� | j �d�| �� | j�� D ]v}| jrv|j| jvrvq^| �|�s�q^| j r�|j | j kr�q^| j
r�ztt|�j
| j
kr�W q^W n t
y� Y q^Y n0 |V q^dS )z9Generator which yields all matching default_* statements.z,Generating default_* results from {0.policy}zRuletypes: {0.ruletype!r}zDefault: {0.default!r}zRange: {0.default_range!r}N)r �info�format�debugZ_match_object_class_debugr �defaults�ruletypeZ_match_object_class�default�
default_ranger r
�AttributeError)r �dr r r �results) s&