U '�7`A# � @ s� d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm Z m Z mZmZm Z mZ ddlmZ ddlmZ ddlmZ ddlmZmZmZmZ ddlmZ d Zer�dd lmZ ee ege d f Z e!ej"�#d��Z$G dd � d e�Z%dS )� N) �IO� TYPE_CHECKING�Any� Awaitable�Callable�List�Optional�Union�cast� )�hdrs)�AbstractStreamWriter)�LooseHeaders)�HTTPNotModified�HTTPPartialContent�HTTPPreconditionFailed�HTTPRequestRangeNotSatisfiable)�StreamResponse)�FileResponse)�BaseRequestZAIOHTTP_NOSENDFILEc s� e Zd ZdZdeeejf eee e e e dd�� fdd� Zee e eeed�d d �Zde e eeed�� fd d�Zde e d�� fdd�Z� ZS )r z,A response object can be used to send files.� �� N)�path� chunk_size�status�reason�headers�returnc s6 t � j|||d� t|t�r&t�|�}|| _|| _d S )N)r r r )�super�__init__� isinstance�str�pathlib�Path�_path�_chunk_size)�selfr r r r r �� __class__� �K/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/web_fileresponse.pyr , s zFileResponse.__init__)�writer�fobj�offset�countr c � s� | j }t�� }|�d |j|�I d H |�d |j|�I d H }|r~|�|�I d H || }|dkr`q~|�d |jt||��I d H }q:|�� I d H |S )Nr ) r% �asyncio�get_event_loop�run_in_executor�seek�read�write�minZdrain)r&