o
    ÿIAf;  ã                   @   s   	 G d d„ dƒZ dS )c                   @   sZ   e Zd Zddd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zddd„Zdd„ Z	ddd„Z
dd„ ZdS )ÚChunkTFc              	   C   sÎ   dd l }d| _|| _|rd}nd}|| _| d¡| _t| jƒdk r#t‚z| |d | d¡¡d | _	W n |j
y>   td ‚w |rG| j	d | _	d| _z| j ¡ | _W n ttfya   d| _Y d S w d| _d S )	Né    Fú>ú<é   ÚLé   T)ÚstructÚclosedÚalignÚfileÚreadÚ	chunknameÚlenÚEOFErrorÚunpack_fromÚ	chunksizeÚerrorÚ	size_readÚtellÚoffsetÚAttributeErrorÚOSErrorÚseekable)Úselfr   r
   Z	bigendianZ
inclheaderr   Zstrflag© r   ú/usr/lib/python3.10/chunk.pyÚ__init__4   s0    ÿÿ
zChunk.__init__c                 C   ó   	 | j S ©N)r   ©r   r   r   r   ÚgetnameN   ó   zChunk.getnamec                 C   r   r   )r   r   r   r   r   ÚgetsizeR   r!   zChunk.getsizec                 C   s(   | j sz
|  ¡  W d| _ d S d| _ w d S )NT)r	   Úskipr   r   r   r   ÚcloseV   s
   
üzChunk.closec                 C   s   | j rtdƒ‚dS )NúI/O operation on closed fileF)r	   Ú
ValueErrorr   r   r   r   Úisatty]   s   zChunk.isattyr   c                 C   sx   	 | j rtdƒ‚| jstdƒ‚|dkr|| j }n	|dkr"|| j }|dk s+|| jkr-t‚| j | j	| d¡ || _d S )Nr%   zcannot seeké   é   r   )
r	   r&   r   r   r   r   ÚRuntimeErrorr   Úseekr   )r   ÚposÚwhencer   r   r   r+   b   s   

z
Chunk.seekc                 C   s   | j rtdƒ‚| jS )Nr%   )r	   r&   r   r   r   r   r   r   u   s   z
Chunk.telléÿÿÿÿc                 C   s¨   	 | j rtdƒ‚| j| jkrdS |dk r| j| j }|| j| j kr(| j| j }| j |¡}| jt|ƒ | _| j| jkrR| jrR| jd@ rR| j d¡}| jt|ƒ | _|S )Nr%   ó    r   r(   )r	   r&   r   r   r   r   r   r
   )r   ÚsizeÚdataÚdummyr   r   r   r   z   s&   ÿþz
Chunk.readc                 C   s²   	 | j rtdƒ‚| jr7z"| j| j }| jr| jd@ r|d }| j |d¡ | j| | _W d S  ty6   Y nw | j| jk rWt	d| j| j ƒ}|  
|¡}|sOt‚| j| jk s=d S d S )Nr%   r(   i    )r	   r&   r   r   r   r
   r   r+   r   Úminr   r   )r   Únr2   r   r   r   r#   ‘   s(   ÿ
üz
Chunk.skipN)TTF)r   )r.   )Ú__name__Ú
__module__Ú__qualname__r   r    r"   r$   r'   r+   r   r   r#   r   r   r   r   r   3   s    


r   N)r   r   r   r   r   Ú<module>   s    2