
    g                     L    S SK r S SKrS SKJrJrJr  S SKrS SKr " S S5      r	g)    N)IteratorOptionalTuplec                   B   \ rS rSrSS\S\4S jjrS\4S jrS\S\4S jrSS	\S\4S
 jjr	S\4S jr
S\4S jrS\4S jrS\4S jrS\4S jrS\S\4S jrSS\S   SS4S jjrS\SS4S jr\R,                  S\S\4S j5       r\R,                  S\4S j5       rSrg)Parser   wirecurrentc                     Xl         SU l        [        U R                   5      U l        U(       a  U R	                  U5        X l        g Nr   )r	   r
   lenendseekfurthest)selfr	   r
   s      A/home/matz/Project1/venv/lib/python3.13/site-packages/dns/wire.py__init__Parser.__init__   s1    	tyy>IIg    returnc                 4    U R                   U R                  -
  $ N)r   r
   r   s    r   	remainingParser.remaining   s    xx$,,&&r   sizec                 0   US:  d   eXR                  5       :  a  [        R                  R                  eU R                  U R
                  U R
                  U-    nU =R
                  U-  sl        [        U R                  U R
                  5      U l        U$ r   )r   dns	exception	FormErrorr	   r
   maxr   )r   r   outputs      r   	get_bytesParser.get_bytes   sq    qyy..""--)))4<<$,,*=>DMM4<<8r   length_sizec                 n    [         R                  U R                  U5      S5      nU R                  U5      $ )Nbigint
from_bytesr#   )r   r%   lengths      r   get_counted_bytesParser.get_counted_bytes    s*    { ;UC~~f%%r   c                 @    U R                  U R                  5       5      $ r   )r#   r   r   s    r   get_remainingParser.get_remaining$   s    ~~dnn.//r   c                 T    [         R                  " SU R                  S5      5      S   $ )Nz!B   r   structunpackr#   r   s    r   	get_uint8Parser.get_uint8'   !    }}T4>>!#45a88r   c                 T    [         R                  " SU R                  S5      5      S   $ )Nz!H   r   r3   r   s    r   
get_uint16Parser.get_uint16*   r8   r   c                 T    [         R                  " SU R                  S5      5      S   $ )Nz!I   r   r3   r   s    r   
get_uint32Parser.get_uint32-   r8   r   c                 L    [         R                  U R                  S5      S5      $ )N   r'   r(   r   s    r   
get_uint48Parser.get_uint480   s    ~~dnnQ/77r   formatc                 t    [         R                  " XR                  [         R                  " U5      5      5      $ r   )r4   r5   r#   calcsize)r   rE   s     r   
get_structParser.get_struct3   s#    }}V^^FOOF4K%LMMr   Noriginzdns.name.Namec                 t    [         R                  R                  U 5      nU(       a  UR                  U5      nU$ r   )r   namefrom_wire_parser
relativize)r   rJ   rL   s      r   get_nameParser.get_name6   s,    xx((.??6*Dr   wherec                 n    US:  d  XR                   :  a  [        R                  R                  eXl        g r   )r   r   r   r    r
   )r   rQ   s     r   r   Parser.seek<   s)     19(--)))r   c              #   L  #    US:  d   eXR                  5       :  a  [        R                  R                  eU R                  n U R
                  U-   U l        S v   U R
                  U R                  :w  a  [        R                  R                  e X l        g ! X l        f = f7fr   )r   r   r   r    r   r
   )r   r   	saved_ends      r   restrict_toParser.restrict_toC   s     qyy..""--)))HH			!||d*DH ||txx'mm--- ( !HyHs   AB$AB B$B!!B$c              #   d   #     S v   U R                   U l        g ! U R                   U l        f = f7fr   )r   r
   r   s    r   restore_furthestParser.restore_furthestT   s%     	)J==DL4==DLs   0 0-0)r
   r   r   r	   )r   )r2   r   )__name__
__module____qualname____firstlineno__bytesr)   r   r   r#   r,   r/   r6   r;   r?   rC   strr   rH   r   rO   r   
contextlibcontextmanagerr   rV   rY   __static_attributes__ r   r   r   r      s    U  S  '3 'c e &S & &0u 093 99C 99C 98C 8N N Nx8 O # $  ! ! ! !  )( ) )r   r   )
ra   r4   typingr   r   r   dns.exceptionr   dns.namer   rd   r   r   <module>rh      s%      , ,  N) N)r   