a qéqeÒ ã@sXddlZddlmZddlmZmZddlmZddlm Z dZ d Z Gd d „d eƒZ dS) éN)ÚListé)Ú InvalidTypeÚInvalidCheckValueé)Ú CheckerModule)Úconfig_bool_valueÚattrÚ missing_okcsxeZdZdZdZeeefƒZddœ‡fdd„ Z e dd„ƒZ e j d d„ƒZ e d d „ƒZ e j d d „ƒZ edœd d„Z‡ZS)Ú EmptyTypeAttrz7Checker module for asserting a type attribute is empty.Zempty_typeattrN)ÚreturncsJtƒ |||¡t t¡|_d|_d|_d|_|  t ¡|_ |  t ¡|_ dS)NF)ÚsuperÚ__init__ÚloggingZ getLoggerÚ__name__ÚlogÚ_attrÚ _missing_okÚ_pass_by_missingÚgetÚ MISSINOK_OPTr ÚATTR_OPTr )ÚselfÚpolicyÚ checknameZconfig©Ú __class__©ú?/usr/lib64/python3.9/site-packages/setools/checker/emptyattr.pyrs  zEmptyTypeAttr.__init__cCs|jS©N)r©rrrrr 'szEmptyTypeAttr.attrc Cs~z.|std |jt¡ƒ‚|j |¡|_d|_WnJtyx}z2|j sXtd |j|¡ƒ|‚||_d|_WYd}~n d}~00dS)Nz{}: "{}" setting is missing.Fz{}: attr setting error: {}T) rÚformatrrrZlookup_typeattrrrrr )rÚvalueÚerrrr +s  ÿ ÿÿcCs|jSr)rr rrrr =szEmptyTypeAttr.missing_okcCs.t|ƒ|_|jr$t|jtƒr$d|_nd|_dS)NTF)rrÚ isinstancer Ústrr)rr"rrrr As cCsš|j d |j¡¡g}|jr2| d |j¡¡nR|j d |j¡¡t|j  ¡ƒ}|rz|D]}|  |j ¡|  |¡q\n |  d¡|j d |¡¡|S)Nz$Checking type attribute {} is empty.z {} does not exist.zMember types of {}: z z {} failure(s))rÚinfor!r rZlog_infoÚoutputÚwriteÚsortedÚexpandZlog_failÚnameÚappendZlog_okÚdebug)rZfailuresÚtypesÚtype_rrrÚrunKs  zEmptyTypeAttr.run)rÚ __module__Ú __qualname__Ú__doc__Z check_typeÚ frozensetrrZ check_configrÚpropertyr Úsetterr rr0Ú __classcell__rrrrr s     r ) rÚtypingrÚ exceptionrrZ checkermodulerÚutilrrrr rrrrÚs