3 �^ � @ sv d dl Z d dlZd dlmZ ddlmZmZ ddlmZ ddl m Z ddlmZ ddl mZmZ G d d � d e e�ZdS )� N)�suppress� )�CriteriaDescriptor�CriteriaSetDescriptor)�NoCommon)� MatchName)�PolicyQuery)�match_regex�match_regex_or_setc sJ e Zd ZdZedd�ZdZed�ZdZ dZ dZ� fdd�Zd d � Z � ZS )� ObjClassQueryaO Query object classes. Parameter: policy The policy to query. Keyword Parameters/Class attributes: name The name of the object set to match. name_regex If true, regular expression matching will be used for matching the name. common The name of the inherited common to match. common_regex If true, regular expression matching will be used for matching the common 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. comparison will not be used. perms_indirect If false, permissions inherited from a common permission set not will be evaluated. Default is true. �common_regexZ lookup_commonF�perms_regexTc s$ t t| �j|f|� tjt�| _d S )N)�superr �__init__�loggingZ getLogger�__name__�log)�self�policy�kwargs)� __class__� �%/usr/lib64/python3.6/objclassquery.pyr B s zObjClassQuery.__init__c c s� | j jdj| �� | j| j � | j jdj| �� | j jdj| �� x�| jj� D ]�}| j|�s^qN| jr�yt |j| j| j �szwNW n tk r� wNY nX | jr�|j}| j r�tt�� ||jjO }W dQ R X t|| j| j| j�s�qN|V qNW dS )z3Generator which yields all matching object classes.z/Generating object class results from {0.policy}z-Common: {0.common!r}, regex: {0.common_regex}z[Perms: {0.perms}, regex: {0.perms_regex}, eq: {0.perms_equal}, indirect: {0.perms_indirect}N)r �info�formatZ_match_name_debug�debugr �classesZ_match_name�commonr r r �perms�perms_indirectr r �perms_equalr )r Zclass_r r r r �resultsF s: zObjClassQuery.results)r � __module__�__qualname__�__doc__r r r r r r r r r r! � __classcell__r r )r r r s r )r �re� contextlibr Zdescriptorsr r Z exceptionr Zmixinsr Zqueryr �utilr r r r r r r �<module> s