� ��abc@s*ddlmZdefd��YZdS(i����(tBytesIOtCallbackFileWrappercBsGeZdZd�Zd�Zd�Zd�Zdd�Zd�Z RS(sv 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. cCs"t�|_||_||_dS(N(Rt_CallbackFileWrapper__buft_CallbackFileWrapper__fpt_CallbackFileWrapper__callback(tselftfptcallback((sH/usr/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.pyt__init__s  cCs|jd�}t||�S(NR(t__getattribute__tgetattr(RtnameR((sH/usr/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.pyt __getattr__s cCsNy|jjdkSWntk r'nXy|jjSWntk rInXtS(N(RRtNonetAttributeErrortclosedtFalse(R((sH/usr/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.pyt__is_fp_closed!s  cCs/|jr"|j|jj��nd|_dS(N(RRtgetvalueR (R((sH/usr/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.pyt_close0s cCs?|jj|�}|jj|�|j�r;|j�n|S(N(RtreadRtwritet"_CallbackFileWrapper__is_fp_closedR(Rtamttdata((sH/usr/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.pyR;s   cCs[|jj|�}|dkr.|dkr.|S|jj|�|j�rW|j�n|S(Nis (Rt _safe_readRRRR(RRR((sH/usr/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.pyRCs  N( t__name__t __module__t__doc__RR RRR RR(((sH/usr/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.pyRs    N(tioRtobjectR(((sH/usr/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.pyts