o
    «ïg£  ã                   @   s`   d Z ddlmZ ddlZdZG dd„ dejjƒZde	de
fd	d
„Zdee
e	f de
fdd„ZdS )zDNS TTL conversion.é    )ÚUnionNl   ÿÿ c                   @   s   e Zd ZdZdS )ÚBadTTLz!DNS TTL value is not well-formed.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   úT/var/www/html/portale_awareness/portale-venv/lib/python3.10/site-packages/dns/ttl.pyr       s    r   ÚtextÚreturnc                 C   s  |   ¡ r	t| ƒ}nst| ƒdkrt‚d}d}d}| D ]Z}|  ¡ r,|d9 }|t|ƒ7 }d}q|r0t‚| ¡ }|dkr?||d 7 }n0|dkrJ||d 7 }n%|d	krU||d
 7 }n|dkr`||d 7 }n|dkri||7 }ntd| ƒ‚d}d}q|dks|tdƒ‚|dk s„|tkrˆtdƒ‚|S )zûConvert the text form of a TTL to an integer.

    The BIND 8 units syntax for TTLs (e.g. '1w6d4h3m10s') is supported.

    *text*, a ``str``, the textual TTL.

    Raises ``dns.ttl.BadTTL`` if the TTL is not well-formed.

    Returns an ``int``.
    r   Té
   FÚwi€:	 Údi€Q Úhi  Úmé<   Úszunknown unit '%s'ztrailing integerz1TTL should be between 0 and 2**32 - 1 (inclusive))ÚisdigitÚintÚlenr   ÚlowerÚMAX_TTL)r
   ÚtotalÚcurrentÚ
need_digitÚcr   r   r	   Ú	from_text$   sB   

r   Úvaluec                 C   s,   t | tƒr| S t | tƒrtj | ¡S tdƒ‚)Nzcannot convert value to TTL)Ú
isinstancer   ÚstrÚdnsÚttlr   Ú
ValueError)r   r   r   r	   ÚmakeV   s
   

r#   )r   Útypingr   Údns.exceptionr    r   Ú	exceptionÚSyntaxErrorr   r   r   r   r#   r   r   r   r	   Ú<module>   s   2