U ��.e� �@s ddlmZGdd�de�ZdS)�)�BytesIOc@sBeZdZdZdd�Zdd�Zdd�Zdd �Zdd d �Zd d�Z d S)�CallbackFileWrapperav Small wrapper around a fp object which will tee everything read into a buffer, and when that file is closed it will execute a callback with the contents of that buffer. All attributes are proxied to the underlying file object. This class uses members with a double underscore (__) leading prefix so as not to accidentally shadow an attribute. cCst�|_||_||_dS�N)r�_CallbackFileWrapper__buf�_CallbackFileWrapper__fp�_CallbackFileWrapper__callback)�self�fp�callback�r �H/usr/lib/python3.8/site-packages/pip/_vendor/cachecontrol/filewrapper.py�__init__szCallbackFileWrapper.__init__cCs|�d�}t||�S)Nr)�__getattribute__�getattr)r�namer r r r � __getattr__s zCallbackFileWrapper.__getattr__cCsHz|jjdkWStk r"YnXz |jjWStk rBYnXdS)NF)rr �AttributeError�closed�rr r r Z__is_fp_closed!s z"CallbackFileWrapper.__is_fp_closedcCs |jr|�|j���d|_dSr)rr�getvaluerr r r �_close2szCallbackFileWrapper._closeNcCs,|j�|�}|j�|�|��r(|��|Sr)r�readr�write�"_CallbackFileWrapper__is_fp_closedr�rZamt�datar r r r=s   zCallbackFileWrapper.readcCs@|j�|�}|dkr |dkr |S|j�|�|��r<|��|S)N�s )r� _safe_readrrrrrr r r rEs  zCallbackFileWrapper._safe_read)N) �__name__� __module__� __qualname__�__doc__r rrrrrr r r r rs   rN)�ior�objectrr r r r �s