
    ^
qiU                         d dl mZ d dlmZmZmZmZmZmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ  G d de          Z G d d          Z ed          ZdedefdZdS )    )Mapping)	AnnotatedAnyBinaryIOCallableOptionalTypeVarcast)Doc)GetJsonSchemaHandler)URL)Address)FormData)Headers)QueryParams)State)
UploadFilec            	           e Zd ZU dZee ed          f         ed<   eee	          ed          f         ed<   eee
          ed          f         ed<   ee ed          f         ed	<   eee	          ed
          f         ed<   dee ed          f         ddf fdZ	 d dee
 ed          f         def fdZdee
 ed          f         ddf fdZd! fdZedededd fd            Zedee	ef         dedee	ef         fd            Zedee         deegee	ef         f         dee	ef         fd            Z xZS )"r   aA  
    A file uploaded in a request.

    Define it as a *path operation function* (or dependency) parameter.

    If you are using a regular `def` function, you can use the `upload_file.file`
    attribute to access the raw standard Python file (blocking, not async), useful and
    needed for non-async code.

    Read more about it in the
    [FastAPI docs for Request Files](https://fastapi.tiangolo.com/tutorial/request-files/).

    ## Example

    ```python
    from typing import Annotated

    from fastapi import FastAPI, File, UploadFile

    app = FastAPI()


    @app.post("/files/")
    async def create_file(file: Annotated[bytes, File()]):
        return {"file_size": len(file)}


    @app.post("/uploadfile/")
    async def create_upload_file(file: UploadFile):
        return {"filename": file.filename}
    ```
    z,The standard Python file object (non-async).filezThe original file name.filenamezThe size of the file in bytes.sizezThe headers of the request.headersz2The content type of the request, from the headers.content_typedatazA
                The bytes to write to the file.
                returnNc                 V   K   t                                          |           d{V S )z
        Write some bytes to the file.

        You normally wouldn't use this from a file you read in a request.

        To be awaitable, compatible with async, this is run in threadpool.
        N)superwrite)selfr   	__class__s     v/var/www/html/bestrading.cuttalo.com/services/ml-inference/venv/lib/python3.11/site-packages/fastapi/datastructures.pyr   zUploadFile.writeD   s1      $ WW]]4(((((((((    zL
                The number of bytes to read from the file.
                c                 V   K   t                                          |           d{V S )z|
        Read some bytes from the file.

        To be awaitable, compatible with async, this is run in threadpool.
        N)r   read)r   r   r    s     r!   r%   zUploadFile.readX   s1        WW\\$'''''''''r"   offsetzO
                The position in bytes to seek to in the file.
                c                 V   K   t                                          |           d{V S )z
        Move to a position in the file.

        Any next read or write will be done from that position.

        To be awaitable, compatible with async, this is run in threadpool.
        N)r   seek)r   r&   r    s     r!   r(   zUploadFile.seekj   s1      $ WW\\&)))))))))r"   c                 T   K   t                                                       d{V S )zm
        Close the file.

        To be awaitable, compatible with async, this is run in threadpool.
        N)r   close)r   r    s    r!   r*   zUploadFile.close~   s-       WW]]__$$$$$$$r"   _UploadFile__input_value_c                     t          |t                    st          dt          |                     t	          t
          |          S )NzExpected UploadFile, received: )
isinstanceStarletteUploadFile
ValueErrortyper
   r   )clsr+   r,   s      r!   	_validatezUploadFile._validate   sE    -)<== 	VTtM?R?RTTUUUJ...r"   core_schemahandlerc                     dddS )Nstringbinary)r1   format )r2   r4   r5   s      r!   __get_pydantic_json_schema__z'UploadFile.__get_pydantic_json_schema__   s     !H555r"   sourcec                 .    ddl m}  || j                  S )N   )"with_info_plain_validator_function)
_compat.v2r?   r3   )r2   r<   r5   r?   s       r!   __get_pydantic_core_schema__z'UploadFile.__get_pydantic_core_schema__   s*     	CBBBBB11#-@@@r"   )r#   )r   N)__name__
__module____qualname____doc__r   r   r   __annotations__r   strintr   bytesr   r%   r(   r*   classmethodr   r3   r   r   dictr;   r1   r   rA   __classcell__)r    s   @r!   r   r      s         B :;;	=    ss+D'E'EEFFFF
HSM33'G#H#HH
IIIIw$A B BBCCCCssOPPP   )C 
) 
) ) ) ) ) ): ( (C 
( 
( ( ( ( ( ($*C 
* 
* * * * * *(% % % % % % /c /c /l / / / [/
 6!#s(+66J6	c3h6 6 6 [6
 A#YA)13%c9J2J)KA	c	A A A [A A A A Ar"   r   c                   :    e Zd ZdZdefdZdefdZdedefdZ	dS )	DefaultPlaceholderz
    You shouldn't use this class directly.

    It's used internally to recognize when a default value has been overwritten, even
    if the overridden default value was truthy.
    valuec                     || _         d S NrO   )r   rO   s     r!   __init__zDefaultPlaceholder.__init__   s    


r"   r   c                 *    t          | j                  S rQ   )boolrO   )r   s    r!   __bool__zDefaultPlaceholder.__bool__   s    DJr"   oc                 L    t          |t                    o|j        | j        k    S rQ   )r.   rN   rO   )r   rW   s     r!   __eq__zDefaultPlaceholder.__eq__   s!    !/00JQW
5JJr"   N)
rB   rC   rD   rE   r   rS   rU   rV   objectrY   r:   r"   r!   rN   rN      s~         c     $        K K4 K K K K K Kr"   rN   DefaultTyperO   r   c                      t          |           S )z
    You shouldn't use this function directly.

    It's used internally to recognize when a default value has been overwritten, even
    if the overridden default value was truthy.
    )rN   rR   s    r!   Defaultr]      s     e$$$r"   N)collections.abcr   typingr   r   r   r   r   r	   r
   annotated_docr   pydanticr   starlette.datastructuresr   r   r   r   r   r   r   r/   rN   r[   r]   r:   r"   r!   <module>rc      s   # # # # # #                        ) ) ) ) ) ) / / / / / / 7 7 7 7 7 7 9 9 9 9 9 9 7 7 7 7 7 7 ? ? ? ? ? ? 3 3 3 3 3 3 F F F F F FAA AA AA AA AA$ AA AA AAHK K K K K K K K$ gm$$%; %; % % % % % %r"   