3 dŠáW ã @ sh d Z G dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG d d „ d eƒZG dd„ deƒZd S )zCommon DNS Exceptions.c sR e Zd ZdZdZeƒ ZdZ‡ fdd„Zdd„ Z dd„ Z d d „ Z‡ fdd„Z‡ Z S ) ÚDNSExceptiona¡ Abstract base class shared by all dnspython exceptions. It supports two basic modes of operation: a) Old/compatible mode is used if __init__ was called with empty **kwargs. In compatible mode all *args are passed to standard Python Exception class as before and all *args are printed by standard __str__ implementation. Class variable msg (or doc string if msg is None) is returned from str() if *args is empty. b) New/parametrized mode is used if __init__ was called with non-empty **kwargs. In the new mode *args has to be empty and all kwargs has to exactly match set in class variable self.supp_kwargs. All kwargs are stored inside self.kwargs and used in new __str__ implementation to construct formatted message based on self.fmt string. In the simplest case it is enough to override supp_kwargs and fmt class variables to get nice parametrized messages. Nc sp | j ||Ž |r*| jf |Ž| _t| ƒ| _ntƒ | _| jd krD| j| _|rZtt| ƒj |Ž ntt| ƒj | jƒ d S )N) Ú _check_paramsÚ _check_kwargsÚkwargsÚstrÚmsgÚdictÚ__doc__Úsuperr Ú__init__)ÚselfÚargsr )Ú __class__© ú/usr/lib/python3.6/exception.pyr . s zDNSException.__init__c O s |s|rdS )zsOld exceptions supported only args and not kwargs. For sanity we do not allow to mix old and new behavior.Nr )r r r r r r r = s zDNSException._check_paramsc K s |r|S )Nr )r r r r r r E s zDNSException._check_kwargsc K sh i }x^|j ƒ D ]R\}}t|ttfƒrXttt|ƒƒ||<