File: //lib64/python3.9/site-packages/setools/__pycache__/commonquery.cpython-39.pyc
a
    q�qeM  �                   @   s\   d dl Z d dlZd dlmZ ddlmZmZ ddlmZ ddl	m
Z
 G dd� deee
�ZdS )	�    N)�Iterable�   )�	MatchName�MatchPermission)�Common)�PolicyQueryc                       s8   e Zd ZdZdd�� fdd�Zee d�dd�Z�  ZS )�CommonQuerya�  
    Query common permission sets.
    Parameter:
    policy       The policy to query.
    Keyword Parameters/Class attributes:
    name         The name of the common to match.
    name_regex   If true, regular expression matching will
                 be used for matching the name.
    perms        The permissions to match.
    perms_equal  If true, only commons with permission sets
                 that are equal to the criteria will
                 match.  Otherwise, any intersection
                 will match.
    perms_regex  If true, regular expression matching will be used
                 on the permission names instead of set logic.
    N)�returnc                    s(   t t| �j|fi |�� t�t�| _d S )N)�superr   �__init__�loggingZ	getLogger�__name__�log)�self�policy�kwargs��	__class__� �9/usr/lib64/python3.9/site-packages/setools/commonquery.pyr   #   s    zCommonQuery.__init__c                 c   s\   | j �d�| �� | �| j � | �| j � | j�� D ]"}| �|�sDq4| �|�sPq4|V  q4dS )z,Generator which yields all matching commons.z)Generating common results from {0.policy}N)	r   �info�formatZ_match_name_debugZ_match_perms_debugr   ZcommonsZ_match_nameZ_match_perms)r   Zcomr   r   r   �results'