B
    d                 @   s   d Z ddlZddlZddlZddlZddlZddlmZ e	 Z
G dd deZG dd deZee Zdd	 ZG d
d deZdd Zdd Zdd ZdZejdkrddlmZ ddlmZ ddlmZ ddlmZ eeeeef ZdS )zbgRPC's experimental APIs.

These APIs are subject to be removed during any minor version release.
    N)cygrpcc               @   s   e Zd ZdZdZdS )ChannelOptionszIndicates a channel option unique to gRPC Python.

     This enumeration is part of an EXPERIMENTAL API.

     Attributes:
       SingleThreadedUnaryStream: Perform unary-stream RPCs on a single thread.
    SingleThreadedUnaryStreamN)__name__
__module____qualname____doc__r    r	   r	   L/var/www/html/venv/lib/python3.7/site-packages/grpc/experimental/__init__.pyr      s   r   c               @   s   e Zd ZdZdS )
UsageErrorzDRaised by the gRPC library to indicate usage not allowed by the API.N)r   r   r   r   r	   r	   r	   r
   r   )   s   r   c               C   s   t S )zeCreates a ChannelCredentials for use with an insecure channel.

    THIS IS AN EXPERIMENTAL API.
    )_insecure_channel_credentialsr	   r	   r	   r
   insecure_channel_credentials3   s    r   c               @   s   e Zd ZdZdS )ExperimentalApiWarningz&A warning that an API is experimental.N)r   r   r   r   r	   r	   r	   r
   r   ;   s   r   c             C   s8   | t kr4t |  d| d }tj|td| d d S )Nz8'{}' is an experimental API. It is subject to change or z5removal between minor releases. Proceed with caution.   )
stacklevel)_EXPERIMENTAL_APIS_USEDaddformatwarningswarnr   )Zapi_nameZstack_offsetmsgr	   r	   r
   _warn_experimental?   s    
r   c                s   t   fdd}|S )Nc                 s   t  jd  | |S )N   )r   r   )argskwargs)fr	   r
   _wrapperJ   s    z"experimental_api.<locals>._wrapper)	functoolswraps)r   r   r	   )r   r
   experimental_apiH   s    r   c             C   sh   |sdS |j s:|js&|j| |jdS |j| |jdS n*|jsR|j| |jdS |j| |jdS dS )a  Wraps the server method handler function.

    The server implementation requires all server handlers being wrapped as
    RpcMethodHandler objects. This helper function ease the pain of writing
    server handler wrappers.

    Args:
        wrapper: A wrapper function that takes in a method handler behavior
          (the actual function) and returns a wrapped function.
        handler: A RpcMethodHandler object to be wrapped.

    Returns:
        A newly created RpcMethodHandler.
    N)unary_unary)unary_stream)stream_unary)stream_stream)Zrequest_streamingZresponse_streaming_replacer    r!   r"   r#   )wrapperhandlerr	   r	   r
   wrap_server_method_handlerR   s    r'   )r   r   r   r   r'   )      )r#   )r"   )r!   )r    )r   copyr   sysr   ZgrpcZgrpc._cythonr   Z_cygrpcsetr   objectr   	Exceptionr   ZChannelCredentialsZchannel_credentials_insecurer   r   Warningr   r   r   r'   __all__version_infoZgrpc._simple_stubsr#   r"   r!   r    r	   r	   r	   r
   <module>   s.   
	
"
