o
    i                     @   s   d Z ddlmZ ddlZeeZddl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
e Zed
 Zde Zed ZG dd deZG dd deZG dd deZdd Zdd ZdS )zThe ``spyne.server.null`` module contains the NullServer class and its helper
objects.

The name comes from the "null modem connection". Look it up.
    )absolute_importN)MethodContextBODY_STYLE_BAREComplexModelBaseBODY_STYLE_EMPTYIgnored)Factory)	LIGHT_RED)
LIGHT_BLUE)	END_COLOR)
ServerBasez(========================================z--------------------c                       sN   e Zd ZdZdZeZd fdd	Z fdd	Zd
d Zdd Z	dd Z
  ZS )
NullServeraS  A server that doesn't support any transport at all -- it's implemented
    to test services without having to run a server.

    Note that:
        1) ``**kwargs`` overwrite ``*args``.
        2) You can do: ::

            logging.getLogger('spyne.server.null').setLevel(logging.CRITICAL)

        to hide context delimiters in logs.
    znoconn://null.spyneFCTc                    s\   || _ tt| | t| | jdd| _t| | jdd| _t| j| _	|| _
|| _d| _d S )NF)is_asyncTzhttp://spyne.io/null)
do_appinitsuperr   __init___FunctionProxyappservicer   r   factoryostrlocaleurl)selfr   r   r   appinit	__class__ Q/var/www/html/LicenciasMIG/venv/lib/python3.10/site-packages/spyne/server/null.pyr   ?   s   
zNullServer.__init__c                    s   | j rtt|   d S d S N)r   r   r   r   r   r   r   r   r   K   s   zNullServer.appinitc                 C   s   | j | jS r    )r   get_interface_documentr   r!   r   r   r   get_wsdlO   s   zNullServer.get_wsdlc                 K   s   | d| jj| j_d S )Nsoapheaders)getr   	in_header)r   kwargsr   r   r   set_optionsR   s   zNullServer.set_optionsc                 C   s
   | j jjS r    )r   	interfaceservice_method_mapr!   r   r   r   get_servicesV      
zNullServer.get_services)Fr   T)__name__
__module____qualname____doc__	transportr   r   r   r#   r(   r+   __classcell__r   r   r   r   r   /   s    r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )r   c                 C   s   || _ || _d | _|| _d S r    )_app_serverr&   r   )r   serverr   r   r   r   r   r   [   s   
z_FunctionProxy.__init__c                 C   s$   t | j| j|| j| jj| jj| jS r    )_FunctionCallr3   r4   r&   r   r   r   r   keyr   r   r   __getattr__a   s   z_FunctionProxy.__getattr__c                 C   s
   |  |S r    )r9   r7   r   r   r   __getitem__e   r,   z_FunctionProxy.__getitem__N)r-   r.   r/   r   r9   r:   r   r   r   r   r   Z   s    r   c                   @   s   e Zd Zdd Zdd ZdS )r6   c                 C   s.   || _ || _|| _|| _|| _|| _|| _d S r    )r   _keyr4   
_in_header_ostr_locale_async)r   r   r5   r8   r&   r   r   async_r   r   r   r   j   s   
z_FunctionCall.__init__c                 O   s  | j | tj}| j|_| j|_tj|j_	| j
|_| jj|}d }tdttf  | jr4ddlm} t|D ]\}}|jjj}	d gt|	 |_tt|D ]	}
||
 |j|
< qOt|	 D ]\}
}||d }|d urr||j|
< q_|jjt kr|jj!|j|_|dkr|}n
|jj"j#||d d tdt$t%f  t&d|j'|jj(f  z| j)| W tdt$t%f  n
tdt$t%f  w |dkr| jrt*|j+d |r|j+d }|,t-|||  q8t.||| }q8| js|/  tdttf  |S )	Nz%s start request %sr   )Deferred)errorz%s start context %sz%r.%rz%s  end context  %sz%s  end request  %s)0r4   r   SERVERr;   method_request_stringr<   r&   r   r1   typer>   r   r   in_protocolgenerate_method_contextsloggerwarning_big_header_big_footerr?   twisted.internet.deferrA   	enumerate
descriptor
in_message
_type_infolen	in_objectrangekeysr%   
body_styler   get_serialization_instanceauxinitialize_context_small_header_small_footerinfoservice_classfunctionprocess_request
isinstance
out_objectaddCallback	_cb_async_cb_syncclose)r   argsr'   initial_ctxcontextsretvalrA   cntctxrP   ikvalp_ctxr   r   r   __call__t   sd   





z_FunctionCall.__call__N)r-   r.   r/   r   ro   r   r   r   r   r6   i   s    
r6   c                 C   sb   t |jjtr't|jjjdkrd g|_nt|jjjdkr#| g|_n| |_n| g|_t|||S Nr      )
issubclassrN   out_messager   rQ   rP   r`   rc   )retrj   ri   fcr   r   r   rb      s   

rb   c                 C   s   d }| j r| j t| jttfr%t| jdkr%t| jd tr%| jd }n2| j r0| jd }n'| jj	t
u r9d }nt| jjjdkrEd }nt| jjjdkrT| jd }n| j}|dkrg|jrg|j|  | j}|dkro|   |S rp   )	out_errorr_   r`   listtuplerQ   r   rN   is_out_barerU   r   rs   rP   r=   r4   get_out_string
out_stringrd   )rj   ri   ru   rh   r   r   r   rc      s.   
rc   )r0   
__future__r   logging	getLoggerr-   rH   spyner   r   r   r   r   spyne.clientr   spyne.const.ansi_colorr	   r
   r   spyne.serverr   rJ   rK   rY   rZ   r   objectr   r6   rb   rc   r   r   r   r   <module>   s&   
+N