o
    ;i                     @   sx   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
 d
eddZeeedZdS )    )Optional)api_pb2   )LoadContext)_Object)Resolver)synchronize_api)_Clientc                
   @   s>   e Zd ZdZeddddedee dee dd fdd	ZdS )
_Proxya  Proxy objects give your Modal containers a static outbound IP address.

    This can be used for connecting to a remote address with network whitelist, for example
    a database. See [the guide](https://modal.com/docs/guide/proxy-ips) for more information.
    N)environment_nameclientnamer   r   returnc             	      sH   dt dtdtdtt f fdd}t  |}t j||dt||dd	S )
zReference a Proxy by its name.

        In contrast to most other Modal objects, new Proxy objects must be
        provisioned via the Dashboard and cannot be created on the fly from code.

        selfresolverload_contextexisting_object_idc                    s>   t j |jd}|jj|I d H }| |jj|jd  d S )N)r   r   )	r   ProxyGetRequestr   r   stubProxyGet_hydrateproxyproxy_id)r   r   r   r   reqresponser    ?/home/ubuntu/.local/lib/python3.10/site-packages/modal/proxy.py_load"   s   z_Proxy.from_name.<locals>._loadT)r   r   )is_another_appload_context_overrides)r
   r   r   r   str_repr_from_loader)r   r   r   r   repr   r   r   	from_name   s   "
z_Proxy.from_name)	__name__
__module____qualname____doc__staticmethodr!   r   r	   r%   r   r   r   r   r
      s    r
   pr)type_prefix)target_moduleN)typingr   modal_protor   _load_contextr   _objectr   	_resolverr   _utils.async_utilsr   r   r	   r
   r&   Proxyr   r   r   r   <module>   s   &