o
    -wi                     @   s^   d Z ddlZddlmZ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.    N)IOTYPE_CHECKINGOptional)	CommError)Protocolc                   @   s"   e Zd ZdededdfddZdS )
ProgressFn	new_bytestotal_bytesreturnNc                 C      d S N )selfr   r	   r   r   X/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/wandb/sdk/internal/progress.py__call__      zProgressFn.__call__)__name__
__module____qualname__intr   r   r   r   r   r      s    r   c                   @   sn   e Zd ZdZdZ	ddee ded ddf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callbackr   r
   c                 C   sJ   || _ |d u rdtdtdd fdd}|}|| _d| _t| j| _d S )Nr   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
   N)r   r   r   __doc__r/   r   bytesr   r    r"   r)   r-   r.   r1   r2   nextr   r   r   r   r      s$    


r   )r3   r   typingr   r   r   wandb.errorsr   r   r   r   r   r   r   r   <module>   s    