o
    ;i                     @   sn   d dl Z d dlZd dlZd dl mZ d dlmZ d dlmZ d dlZ	d dl
mZ ddlmZ G dd	 d	ZdS )
    N)Future)Hashable)Optional)suppress_tb_frame   )LoadContextc                   @   s   e Zd ZU eeef ed< eeef ed< eed< dd Z	e
defddZd	d
dddee fddZddd	d
dddee fddZded
 fddZdS )Resolver_local_uuid_to_future_deduplication_cache_build_startc                 C   sL   i | _ i | _t }t| j| _W d    d S 1 sw   Y  d S N)	r	   r
   tempfileTemporaryFileosfstatfilenost_mtimer   )self	temp_file r   C/home/ubuntu/.local/lib/python3.10/site-packages/modal/_resolver.py__init__   s
   
"zResolver.__init__returnc                 C   s   | j S r   )r   )r   r   r   r   build_start   s   zResolver.build_startobjzmodal._object._Objectparent_load_contextr   existing_object_idc                    s6   |j d ur|j|}| || ||I d H  d S d S r   )_preload_load_context_overridesmerged_with)r   r   r   r   load_contextr   r   r   preload!   s
   
zResolver.preloadN)r   c          	         s  j rjrjjvrt }| |jj< S d }jr) I d H }jj}|sP|d urPj|}|rP|I d H }	|j
|j|  S |sq fdd}j| }|jj< |d urq|j|< t  |I d H W  d    S 1 sw   Y  d S )Nc                      s   t  Y j I d H  tj fdd D  I d H  js-td d I d H  j	sTd urT
drTjkrTtd dj W  d    S 1 s`w   Y  d S )Nc                    s   g | ]} | qS r   )load).0dep)r    r   r   r   
<listcomp>S   s    z1Resolver.load.<locals>.loader.<locals>.<listcomp>zObject z has no loader functionzfu-z+Tried creating an object using existing id z but it has id )r   r   r   apply_defaultsasynciogatherdeps_load	Exception_is_another_app
startswith	object_idr   r   r   r   r   )r    r   loaderL   s(   $
$zResolver.load.<locals>.loader)_is_hydratedr,   
local_uuidr	   r   
set_result_deduplication_keygetr
   _hydrater.   client_get_metadatatask_contextcreate_taskr   )	r   r   r   r   futdeduplication_keycached_futurehydrated_objectr0   r   r/   r   r"   (   s4   


$zResolver.loadc                 C   sF   i }| j  D ]}| std| }||j| qt| S )NzVAll loaded objects have not been resolved yet, can't get all objects for the resolver!)r	   valuesdoneRuntimeErrorresult
setdefaultr.   list)r   unique_objectsr;   r   r   r   r   objectsr   s   zResolver.objects)__name__
__module____qualname__dictstrr   __annotations__r   floatr   propertyr   r   r!   r"   rD   rF   r   r   r   r   r      s.   
 	

Jr   )r'   r   r   r   collections.abcr   typingr   modal._objectmodalmodal._tracebackr   _load_contextr   r   r   r   r   r   <module>   s   