3
[_ð]§  ã               @   sZ   d Z ddlZddlmZmZmZ G dd„ deƒZeƒ dd… ZG dd„ deƒZ	d	d
„ Z
dS )zDNS Wire Data Helperé    Né   )Úbinary_typeÚstring_typesÚPY2c               @   s    e Zd Zdd„ Zerdd„ ZdS )Ú_SliceUnspecifiedBoundc             C   s   |j S )N)Ústop)ÚselfÚkey© r
   ú1/tmp/pip-build-yz_zf6az/dnspython/dns/wiredata.pyÚ__getitem__    s    z"_SliceUnspecifiedBound.__getitem__c             C   s   | j t||ƒƒS )N)r   Úslice)r   ÚiÚjr
   r
   r   Ú__getslice__$   s    z#_SliceUnspecifiedBound.__getslice__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r
   r
   r
   r   r      s   r   c                   s8   e Zd Z‡ fdd„Zer dd„ Zdd„ Zdd„ Z‡  ZS )	ÚWireDatac                sò   yÐt |tƒrÂ|j}|j}trr|tkr,t| ƒ}|dk s<|dk rDtjj	‚||kr¨t
t| ƒj|ƒ t
t| ƒj|d ƒ n6x4||fD ](}|d krŒq|q|t|ƒt| ƒkr|tjj	‚q|W tt
t| ƒjt||ƒƒƒS t| jƒ ƒ| S  tk
rì   tjj	‚Y nX d S )Nr   r   )Ú
isinstancer   Ústartr   r   Ú_unspecified_boundÚlenÚdnsÚ	exceptionÚ	FormErrorÚsuperr   r   ÚabsÚ	bytearrayÚunwrapÚ
IndexError)r   r	   r   r   Úindex)Ú	__class__r
   r   r   -   s,    
zWireData.__getitem__c             C   s   | j t||ƒƒS )N)r   r   )r   r   r   r
   r
   r   r   P   s    zWireData.__getslice__c             c   sB   d}x8y| | V  |d7 }W q t jjk
r8   t‚Y qX qW d S )Nr   r   )r   r   r   ÚStopIteration)r   r   r
   r
   r   Ú__iter__S   s    
zWireData.__iter__c             C   s   t | ƒS )N)r   )r   r
   r
   r   r   \   s    zWireData.unwrap)	r   r   r   r   r   r   r$   r   Ú__classcell__r
   r
   )r"   r   r   *   s
   "	r   c             C   sJ   t | tƒr| S t | tƒr t| ƒS t | tƒr6t| jƒ ƒS tdt| ƒ ƒ‚d S )Nzunhandled type %s)r   r   r   r   ÚencodeÚ
ValueErrorÚtype)Zwirer
   r
   r   Ú
maybe_wrap`   s    


r)   )Ú__doc__Zdns.exceptionr   Ú_compatr   r   r   r   r   r   r)   r
   r
   r
   r   Ú<module>   s   		6