o
    ϖi                     @   s  U d dl mZ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mZ erUd d	lmZ d d
lmZ d dlmZ 	d%dddddedddef deeeef  dee de
d deeee f fddZ 	d%dddddedddef deeeef  dee de
d deeee f fddZ!dedefdd Z"d!e#defd"d#Z$g Z%ee&d$< dS )&    )TYPE_CHECKINGAnyAsyncIteratorDictIteratorListOptionalUnion)Unpack)
identifier)
ModelErrortransform_output)Model) make_schema_backwards_compatible)VersionVersions)Client)ModelVersionIdentifier)PredictionsNT)use_file_outputclientr   refr   r   r   inputr   paramsz"Predictions.CreatePredictionParamsreturnc                   sD  d|vrd|d< |d du}t |\}}}}	|	dur* jjd|	|p#i d|}
n|r@|r@ jjjd||f|p9i d|}
ntd| d|s[|r[|r[|	r[t ||fd	|	}|oa|
jd
k}|sy|rut	|ru fdd|

 D S |
  |
jdkrt|
|rt	|r|
jdur fdd|
jD S |rt|
j S |
jS )z.
    Run a model and wait for its output.
    waitTFNversionr   modelr   Invalid argument: V. Expected model, version, or reference in the format owner/name or owner/name:versionr    startingc                 3       | ]}t | V  qd S Nr   .0chunkr    A/home/ubuntu/.local/lib/python3.10/site-packages/replicate/run.py	<genexpr>I   s
    
zrun.<locals>.<genexpr>failedc                 3   r%   r&   r   r'   r*   r+   r,   r-   Y   s    r+   )r   _resolvepredictionscreatemodels
ValueErrorr   getstatus_has_output_iterator_array_typeoutput_iteratorr   r   outputr   r   r   r   r   r   is_blockingr   ownername
version_id
predictionin_terminal_stater+   r*   r,   run   sN   





r@   c                   sf  d|vr	d|d< |d du}t |\}}}}	|s|	r0 jjd|p#|	|p&i d|I dH }
n!|rI|rI jjjd||f|p?i d|I dH }
ntd| d|sg|rg|rg|	rgt ||fd	|	I dH }|om|
jd
k}|s|rt	|r fdd|

 2 S |
 I dH  |
jdkrt|
|rt	|r|
jdur fddt|
j2 S |rt|
j S |
jS )z=
    Run a model and wait for its output asynchronously.
    r   TFr   Nr   r!   r"   r#   r$   c                   $   | z3 d H W }t | V  q6 d S r&   r   r'   r*   r+   r,   r-      
    zasync_run.<locals>.<genexpr>r.   c                   rA   r&   r   r'   r*   r+   r,   r-      rB   r+   )r   r/   r0   async_creater2   r3   r   	async_getr5   r6   async_output_iterator
async_waitr   r8   _make_async_iteratorr   r9   r+   r*   r,   	async_runa   sT   






rH   r   c                 C   sF   t | j| j}|di di di }|ddko"|ddkS )N
componentsschemasOutputtypearrayzx-cog-array-typeiterator)r   openapi_schemacog_versionr4   )r   schemar8   r+   r+   r,   r6      s   r6   listc                 C  s   | D ]}|V  qd S r&   r+   )rR   itemr+   r+   r,   rG      s   rG   __all__r&   )'typingr   r   r   r   r   r   r   r	   typing_extensionsr
   	replicater   replicate.exceptionsr   replicate.helpersr   replicate.modelr   replicate.schemar   replicate.versionr   r   replicate.clientr   replicate.identifierr   replicate.predictionr   strboolr@   rH   r6   rR   rG   rT   __annotations__r+   r+   r+   r,   <module>   s^   * 
I
I
