o
    xi                     @  sf   d Z ddlmZ ddlZddlmZmZ ddlmZ er*ddlm	Z	 G dd de	Z
G d	d
 d
ZdS )z	progress.    )annotationsN)IOTYPE_CHECKING)	CommError)Protocolc                   @  s   e Zd Zd	ddZdS )

ProgressFn	new_bytesinttotal_bytesreturnNonec                 C     d S N )selfr   r
   r   r   O/home/ubuntu/.local/lib/python3.10/site-packages/wandb/sdk/internal/progress.py__call__      zProgressFn.__call__Nr   r	   r
   r	   r   r   )__name__
__module____qualname__r   r   r   r   r   r      s    r   c                   @  sX   e Zd ZdZdZddd
dZdddZdddZdd Zdd Z	dd Z
dd Ze
ZdS )Progressz'A helper class for displaying progress.i   Nfile	IO[bytes]callbackProgressFn | Noner   r   c                 C  s>   || _ |d u rd	dd}|}|| _d| _t| j| _d S )
Nr   r	   r
   r   r   c                 S  r   r   r   )r   r
   r   r   r   	callback_   r   z$Progress.__init__.<locals>.callback_r   r   )r   r   
bytes_readosfstatfilenost_sizelen)r   r   r   r   r   r   r   __init__   s   
zProgress.__init__c                 C  sh   | j |}|  jt|7  _|s)| j| jk r)td| j j d| j d| j d| t|| j |S )z!Read bytes and call the callback.zFile z size shrank from z to z while it was being uploaded.)r   readr   r#   r   namer   )r   sizebitesr   r   r   r&   $   s   zProgress.readc                 C  s&   |  | j d d| _| jd d S Nr   )r   r   r   seekr   r   r   r   rewind5   s   zProgress.rewindc                 C  s   t | j|rt| j|S t)z7Fallback to the file object for attrs not defined here.)hasattrr   getattrAttributeError)r   r'   r   r   r   __getattr__:   s   zProgress.__getattr__c                 C  s   | S r   r   r,   r   r   r   __iter__A   r   zProgress.__iter__c                 C  s    |  | j}t|dkrt|S r*   )r&   
ITER_BYTESr#   StopIteration)r   r)   r   r   r   __next__D   s   zProgress.__next__c                 C  s   | j S r   )r#   r,   r   r   r   __len__J   s   zProgress.__len__r   )r   r   r   r   r   r   )r%   )r   r   )r   r   r   __doc__r3   r$   r&   r-   r1   r2   r5   r6   nextr   r   r   r   r      s    

r   )r7   
__future__r   r   typingr   r   wandb.errorsr   r   r   r   r   r   r   r   <module>   s    