o
    ËÄ.jy  ã                   @   sP   d 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B defdd„Z
dS )zDNS TTL conversion.é    Nl   ÿÿ 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   ú</home/thesage/.local/lib/python3.10/site-packages/dns/ttl.pyr      s    r   ÚtextÚreturnc                 C   s  |   ¡ r	t| ƒ}nut| ƒdkrt‚d}d}d}| D ]\}|  ¡ r,|d9 }|t|ƒ7 }d}q|r0t‚| ¡ }|dkr?||d 7 }n2|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}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 'ú'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| ƒS tdƒ‚)Nzcannot convert value to TTL)Ú
isinstancer   Ústrr   Ú
ValueError)r   r   r   r   ÚmakeT   s
   

r!   )r   Údns.exceptionÚdnsr   Ú	exceptionÚSyntaxErrorr   r   r   r   r!   r   r   r   r   Ú<module>   s   2