File: //usr/local/CyberCP/lib64/python3.10/site-packages/paramiko/__pycache__/sftp_file.cpython-310.pyc
o
�h<U � @ s� d Z ddlmZ ddlmZ ddlZddlZddlZddlm Z m
Z
ddlmZ ddl
mZ ddlmZmZmZmZmZmZmZmZmZmZmZ dd lmZ G d
d� de�ZdS )z
SFTP file object
� )�hexlify)�dequeN)�DEBUG�io_sleep)�BufferedFile)�u)� CMD_CLOSE�CMD_READ�CMD_DATA� SFTPError� CMD_WRITE�
CMD_STATUS� CMD_FSTAT� CMD_ATTRS�CMD_FSETSTAT�CMD_EXTENDED�int64)�SFTPAttributesc @ s e Zd ZdZdZdAdd�Zdd� Zd d
� ZdBdd
�Zdd� Z dd� Z
dd� Zdd� Zdd� Z
dd� Zdd� Zdd� Zdd� ZdCd!d"�Zd#d$� Zd%d&� Zd'd(� Zd)d*� Zd+d,� ZdDd-d.�ZdEd0d1�ZdFd3d4�ZdGd5d6�Zd7d8� ZdGd9d:�Zd;d<� Zd=d>� Zd?d@� Z d2S )H�SFTPFilez�
Proxy object for a file on the remote server, in client mode SFTP.
Instances of this class may be used as context managers in the same way
that built-in Python file objects are.
i � �r���c C s^ t �| � || _|| _t �| ||� d| _d| _d| _i | _i | _ t
�� | _d | _
t� | _d S )NF)r �__init__�sftp�handle� _set_mode� pipelined�_prefetching�_prefetch_done�_prefetch_data�_prefetch_extents� threading�Lock�_prefetch_lock�_saved_exceptionr �_reqs)�selfr r �mode�bufsize� r( �E/usr/local/CyberCP/lib/python3.10/site-packages/paramiko/sftp_file.pyr = s
zSFTPFile.__init__c C s | j dd� d S )NT��async_��_close�r% r( r( r) �__del__K s zSFTPFile.__del__c C s | j dd� dS )z!
Close the file.
Fr* Nr, r. r( r( r) �closeN s zSFTPFile.closeFc C s� | j rd S | j�td�tt| j���� | jr| j� | � t
�| � z|r3| j�t
d �t| j� W d S | j�t| j� W d S tyG Y d S ttjfyS Y d S w )Nz close({}))�_closedr �_logr �formatr r r r �_finish_responsesr r0 �_async_request�typer �_request�EOFError�IOError�socket�error)r% r+ r( r( r) r- T s
�zSFTPFile._closec s� � fdd�t | j�� �D �}t|�dkrdS |jdd� d� |d \}}|| � kr,dS || � | kr6d S | �|| � | | | �S )
Nc s g | ]
}|d � kr|�qS �r r( )�.0�x��offsetr( r) �
<listcomp>q s z7SFTPFile._data_in_prefetch_requests.<locals>.<listcomp>r Fc S s | d S �Nr r( )r>