o
    i!R                     @   s"  d dl mZ d dlZeeZd dlmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZmZmZ d dlmZmZmZmZmZ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(m)Z)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3 G dd de$Z4dS )    )print_functionN)isgenerator)Iterable)etreehtml)E)NS_XSINS_SOAP11_ENV
SOAP11_ENV)PushBaseComplexModelBaseAnyXmlFaultAnyDictAnyHtml	ModelBase	ByteArrayXmlDataAnyAnyUriImageUriXmlAttribute)EnumBase)OutProtocolBase)SchemaValidationError)	coroutineBreaksix)cdict)dict_to_etree)RB)string_typesc                       s   e Zd Z		d4 fdd	Zdd Zed5dd	Zd
d Zed5ddZ	edd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd6d(d)Zed6d*d+Zed,d- Z	d7d.d/Zd0d1 Zd2d3 Z  ZS )8ToParentMixinNFTc                    sz   t t| j||||d || _d| _tt| jt| j	t
| jt| jt| jt| jt| jt| jt| jt| jt| jt| ji| _d S )N)app	mime_typeignore_uncapignore_wrappersT)superr#   __init__polymorphicuse_global_null_handlerr   r   model_base_to_parentr   any_xml_to_parentr   any_uri_to_parentr   imageuri_to_parentr   any_dict_to_parentr   any_html_to_parentr   any_to_parentr   fault_to_parentr   enum_to_parentr   byte_array_to_parentr   complex_to_parentr   !schema_validation_error_to_parentserialization_handlers)selfr$   r%   r&   r'   r*   	__class__ ^/var/www/html/LicenciasMIG/venv/lib/python3.10/site-packages/spyne/protocol/cloth/to_parent.pyr)   /   s&   zToParentMixin.__init__c                 K   s.   |j js
| || | j|||||fi |S )zThis is what subserialize calls)outprot_ctxdoctype_writtenwrite_doctype	to_parentr9   ctxclsinstparentnamekwargsr<   r<   r=   start_to_parentH   s   zToParentMixin.start_to_parentc                 C   s&   |j }|d ur|s|| jjvr|S d S N)protprotocol
prot_stack)rC   	cls_attrs	nosubprotsubprotr<   r<   r=   get_subprotQ   s
   zToParentMixin.get_subprotc                 K   s   |j |||||fi |S rJ   )subserialize)r9   rC   rD   rE   rF   rG   rP   rH   r<   r<   r=   
to_subprotY      zToParentMixin.to_subprotc                 k   sT   d}d}	| j j}
| ||\}}| |}|jr)td||j |j}| |}| ||}| |||}|d urPtd| | | j	||||||fi |}n| j
|||||fi |\}	}|	rd|}n|j}|d u rrt|rr| }|d u ry|j}|d u r| jr|
d }td|||  | j|||||fi | d S | jrt|tr| ||\}}|dd}|s|jjdkr| j|||||fi |}nGz| j| }W n ty   | jrtd| Y d S td	| ||  w |jj|||f d
}tdt d| || ||||||fi |}t!|rz	 d V }|"| q t#y } z[z4z|$| W n t#t%t&fy>   Y nw W |	rI| '|| |r]tdt(d| || |jj)  n|	rg| '|| |r|tdt(d| || |jj)  w w W Y d }~d S d }~ww |	r| '|| |rtdt(d| || |jj)  d S d S )NFzout_type from %r to %rzSubprot from %r to %rz.null_to_parentzWriting %s using %s for %s.from_arr   zIgnore uncap %rz)%r is missing handler for %r for field %rTz%s %r pushed %r using %r$z%s %r popped %r %r)*r;   __name__get_polymorphic_targetget_cls_attrsout_typeloggerdebug	_sanitizerQ   rS   check_class_clothsdefault_factorycallabledefaultr+   get_type_namenull_to_parentr'   
issubclassr   strip_wrappersget
Attributes
max_occursarray_to_parentr8   KeyErrorr&   errorr>   
inst_stackappendr    r   sendr   throwStopIterationGeneratorExit_close_clothr!   pop)r9   rC   rD   rE   rF   rG   rO   rH   pushed	has_cloth	prot_nameswitchedrN   rP   ret
cor_handle_df
identifierrU   handlersv2er<   r<   r=   rA   \   s   





zToParentMixin.to_parentc                 k   s   |d u rd}|  || |}t|tr|j| d}z	 d V }	d|d< ||d< |d ur;|j|||||fi | | j|||	||fi |}
|d7 }t|
rzAz
	 d V }|
	| qS t
y~ } zz|
| W n	 tys   Y nw W Y d }~nd }~ww W |d ur|j|||||fi | n$|d ur|j|||||fi | w w |d ur|j|||||fi | q t
y   Y d S w t|tsJ d|f t|D ]\}}	d|d< ||d< |d ur|j|||||fi | | j|||	||fi |}
t|
rZzEz	 d V }|
	| q t
y1 } zz|
| W n
 ty&   Y nw W Y d }~nd }~ww W |d urE|j|||||fi | q|d urY|j|||||fi | w w |d url|j|||||fi | qd S )Nr<   r   TrU   array_indexrV   z%r is not iterable)rQ   rZ   
isinstancer   pusher_stackrn   column_table_before_rowrA   r   ro   r   rp   rq   column_table_after_rowr   	enumerate)r9   rC   rD   rE   rF   rG   rH   ser_subprotisvry   r~   r   r<   r<   r=   rj      s   



,






	
zToParentMixin.array_to_parentc                 O   s   | j s	td| d S )NzSerializing %r not supported!)r&   NotImplementedError)r9   rC   rD   argsrH   r<   r<   r=   not_supportedF  s   zToParentMixin.not_supportedc                 K      | j |||||fi | d S rJ   r,   rB   r<   r<   r=   r.   J     zToParentMixin.any_uri_to_parentc                 K   r   rJ   r   rB   r<   r<   r=   r/   M  r   z ToParentMixin.imageuri_to_parentc              	   K   s    | t|| ||| j d S rJ   )writer   
to_unicodebinary_encodingrB   r<   r<   r=   r5   P  s    z"ToParentMixin.byte_array_to_parentc                 K   s   | t|| || d S rJ   )r   r   r   rB   r<   r<   r=   r,   S  s   z"ToParentMixin.model_base_to_parentc                 K   s"   | t|fi dt di d S )Nz{%s}niltrue)r   r   r   rB   r<   r<   r=   rd   V  s   "zToParentMixin.null_to_parentc                 K   s   |  ||t||| d S rJ   )r,   strrB   r<   r<   r=   r4   Y  rT   zToParentMixin.enum_to_parentc                 K   s(   t |tr
t|}|t|| d S rJ   )r   r"   r   
fromstringr   r   rB   r<   r<   r=   r-   \  s   

zToParentMixin.any_xml_to_parentc                 K   s   t |ttjfrt|}|S rJ   )r   r   r   	text_typer   r   )r9   rD   rE   _r<   r<   r=   any_html_to_unicodeb  s   
z!ToParentMixin.any_html_to_unicodec                 K   sf   |  |}|jrt|tst|tjst|}nt|ts$t|tjr)t|}|	t
|| d S rJ   )rZ   	as_stringr   r   r   r   r   tostringr   r   r   )r9   rC   rD   rE   rF   rG   rH   rN   r<   r<   r=   r1   h  s   


z ToParentMixin.any_html_to_parentc                 K   s   | t|| d S rJ   )r   r   rB   r<   r<   r=   r2   u  s   zToParentMixin.any_to_parentc                 K   s&   t |}t|| |t || d S rJ   )r   r   r   )r9   rC   rD   rE   rF   rG   rH   eltr<   r<   r=   r0   x  s   
z ToParentMixin.any_dict_to_parentc                 C   s\   | j d ur|d u r| j }|j}|d u r| }|j}|d u r |}|r*d||f }|S |}|S )Nz{%s}%s)use_nssub_nsget_namespacesub_name)r9   rD   rN   kr   r   r   rG   r<   r<   r=   _gen_sub_name}  s   zToParentMixin._gen_sub_namec                 k   sl   | j d ur|d u r| j }| |D ]\}}| |}	|	jr*| jj}
td||
 qt|t	r0qzt
||d }W n   d }Y | ||	||}t|trit|jtrX|| n| |j|}|d urh|| q|d usr|	jdkr| j|||||fd|i|}|d urz
	 d V }|| q ty } zz|| W n	 ty   Y nw W Y d }~qd }~ww qd S )Nz%s: excluded for %s.r   r   )r   sort_fieldsrZ   excr;   rX   r\   r]   re   r   getattrr   r   typer   r   r   
min_occursrA   ro   r   rp   rq   )r9   rC   rD   rE   rF   r   rH   r   vattrrw   subvaluer   	subvalstrry   r~   br<   r<   r=   _write_members  sZ   




zToParentMixin._write_membersc                 k   s    | d | j||||fi |}|d ur>z
	 d V }|| q ty=   z
|t  W Y d S  ty<   Y Y d S w w d S )N )r   r   ro   r   rp   rq   )r9   rC   rD   rE   rF   rH   ry   r~   r<   r<   r=   _complex_to_parent_do  s"   

z#ToParentMixin._complex_to_parent_doc           
      K   s   |s| |}| |||}	| jr#| j||||fd|i| d S |d u s+|dkr?| || || |}t	d|| |j
||	d | j||||fd|i| W d    d S 1 s`w   Y  d S )NrU    z*name is empty, long live name: %s, cls: %r)attrib)get_serialization_instance_gen_attrib_dictget_flat_type_infoskip_root_tagr   r   rZ   rc   r\   r]   element)
r9   rC   rD   rE   rF   rG   rU   r   rH   r   r<   r<   r=   r6     s.   

"zToParentMixin.complex_to_parentc                 C   s   |j jjt }td}||8 |tdd||jf td|j	td|j
 t|jtjr8|t|j | |||| W d    d S 1 sKw   Y  d S Nr   	faultcodez%s:%sfaultstring
faultactor)r$   	interfaceprefmapr	   r
   r   r   r   r   r   r   r   detailr   _Elementr   )r9   rC   rD   rE   rF   rG   PREF_SOAP_ENVtag_namer<   r<   r=   r3     s   

"zToParentMixin.fault_to_parentc              	   K   s   |j jjt }td}||< |tdd||jf tdt	
|jjtd|j t|jtjr<|t|j | |||| W d    d S 1 sOw   Y  d S r   )r$   r   r   r	   r
   r   r   r   r   r   r   r   textr   r   r   r   r   r   )r9   rC   rD   rE   rF   r   r   r   r<   r<   r=   r7     s   
"z/ToParentMixin.schema_validation_error_to_parent)NNFFT)FrJ   )FN)rX   
__module____qualname__r)   rI   staticmethodrQ   rS   r   rA   rj   r   r.   r/   r5   r,   rd   r4   r-   r   r1   r2   r0   r   r   r   r6   r3   r7   __classcell__r<   r<   r:   r=   r#   .   sB    	}
k
/

r#   )5
__future__r   logging	getLoggerrX   r\   inspectr   $spyne.util.six.moves.collections_abcr   lxmlr   r   lxml.builderr   spyne.const.xmlr   r	   r
   spyne.modelr   r   r   r   r   r   r   r   r   r   r   r   r   spyne.model.enumr   spyne.protocolr   spyne.protocol.xmlr   
spyne.utilr   r   r   spyne.util.cdictr   spyne.util.etreeconvr   spyne.util.colorr    r!   spyne.util.sixr"   r#   r<   r<   r<   r=   <module>   s$   
<