o
    iA0                  
   @   s  d dl Z e eZd dlZd dlZd dlZd dl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mZmZ zd dlmZ d dlmZ d dlmZmZ W n  eyq Z zdZdZeZd	d
 Zdd ZW Y dZ[ndZ[ww 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'm(Z(m)Z)m*Z* d dl+m,Z, G dd deZ-e-ej.j/j0j1d< G dd deZ2G dd deZ3e3ej.j/j0j1d< G dd de3Z4e4ej.j/j0j1d< G dd deZ5G d d! d!eZ6G d"d# d#e6Z7dS )$    N)uuid1)mmapACCESS_READ)closing)joinabspathdirnamebasenameisfile)etree)html)get_object_as_xmlget_xml_as_objectc                  O      t N_local_import_error___ r   _/var/www/html/LicenciasMIG/venv/lib/python3.10/site-packages/spyne/store/relational/document.pyr   ,      r   c                  O   r   r   r   r   r   r   r   r   .   r   r   )UserDefinedType)ValidationError)FileData)six)binary_type	text_typeBytesIOStringIO)SeekableFileProxyc                       s:   e Zd Z		d fdd	Zdd Zdd Zd	d
 Z  ZS )PGXmlFUTF-8c                    s$   t t|   || _|| _|| _d S r   )superr"   __init__xml_declarationpretty_printencoding)selfr'   r&   r(   	__class__r   r   r%   <   s   
zPGXml.__init__c                 K      dS Nxmlr   r)   r   r   r   r   get_col_specC   r   zPGXml.get_col_specc                        fdd}|S )Nc                    sN   | d u st | tjtjfr| S tjrtj|  j jddS tj|  jdddS )NF)r'   r(   r&   unicode)	
isinstancer   r   r   PY2r   tostringr'   r(   valuer)   r   r   processG   s   

z%PGXml.bind_processor.<locals>.processr   r)   dialectr9   r   r8   r   bind_processorF      zPGXml.bind_processorc                 C      dd }|S )Nc                 S   s   | d ur	t | S | S r   )r   
fromstringr6   r   r   r   r9   V   s   
z'PGXml.result_processor.<locals>.processr   r)   r;   col_typer9   r   r   r   result_processorU      zPGXml.result_processor)FFr#   __name__
__module____qualname__r%   r0   r<   rB   __classcell__r   r   r*   r   r"   ;   s    r"   r.   c                       s6   e Zd Zd fdd	Zdd Zdd Zd	d
 Z  ZS )PGHtmlFr#   c                    s   t t|   || _|| _d S r   )r$   rI   r%   r'   r(   )r)   r'   r(   r*   r   r   r%   a   s   
zPGHtml.__init__c                 K   r,   )Ntextr   r/   r   r   r   r0   g   r   zPGHtml.get_col_specc                    r1   )Nc                    s2   t | tjtjfs| d u r| S tj|  j jdS )N)r'   r(   )r3   r   r   r   r   r5   r'   r(   r6   r8   r   r   r9   k   s   
z&PGHtml.bind_processor.<locals>.processr   r:   r   r8   r   r<   j   s   zPGHtml.bind_processorc                 C   r>   )Nc                 S   s"   | d urt | dkrt| S d S )Nr   )lenr   r?   r6   r   r   r   r9   u   s   
z(PGHtml.result_processor.<locals>.processr   r@   r   r   r   rB   t   rC   zPGHtml.result_processor)Fr#   rD   r   r   r*   r   rI   `   s
    
rI   c                   @   s.   e Zd ZdddZdd Zdd Zdd	 Zd
S )PGJsonr#   c                 C   s
   || _ d S r   r(   )r)   r(   r   r   r   r%   ~   s   
zPGJson.__init__c                 K   r,   Njsonr   r/   r   r   r   r0      r   zPGJson.get_col_specc                    r1   )Nc                    s:   t | ttfs| d u r| S tjrtj|  jdS t| S )NrM   )r3   r   r   r   r4   rO   dumpsr(   r6   r8   r   r   r9      s
   
z&PGJson.bind_processor.<locals>.processr   r:   r   r8   r   r<      s   zPGJson.bind_processorc                 C   r>   )Nc                 S   s   t | ttfrt| S | S r   )r3   r   r   rO   loadsr6   r   r   r   r9      s   
z(PGJson.result_processor.<locals>.processr   r@   r   r   r   rB      rC   zPGJson.result_processorN)r#   rE   rF   rG   r%   r0   r<   rB   r   r   r   r   rL   }   s
    
rL   rO   c                   @   s   e Zd Zdd ZdS )PGJsonBc                 K   r,   )Njsonbr   r/   r   r   r   r0      r   zPGJsonB.get_col_specN)rE   rF   rG   r0   r   r   r   r   rS      s    rS   rT   c                   @   s2   e Zd Z		dddZdd Zdd Zd	d
 ZdS )PGObjectXmlNFc                 C   s   || _ || _|| _|| _d S r   )clsroot_tag_nameno_namespacer'   )r)   rV   rW   rX   r'   r   r   r   r%      s   
zPGObjectXml.__init__c                 K   r,   r-   r   r/   r   r   r   r0      r   zPGObjectXml.get_col_specc                    r1   )Nc                    s0   | d urt jt|  j j jd jddS d S )Nutf8F)r(   r'   r&   )r   r5   r   rV   rW   rX   r'   r6   r8   r   r   r9      s   z+PGObjectXml.bind_processor.<locals>.processr   r:   r   r8   r   r<      s   zPGObjectXml.bind_processorc                        fdd}|S )Nc                    s   | d urt t|  jS d S r   )r   r   r?   rV   r6   r8   r   r   r9      s   z-PGObjectXml.result_processor.<locals>.processr   r@   r   r8   r   rB      s   zPGObjectXml.result_processor)NFFrR   r   r   r   r   rU      s    
rU   c                   @   s6   e Zd ZdeddfddZdd Zdd	 Zd
d ZdS )PGObjectJsonTrO   rY   c                 C   sF   || _ || _|| _|| _|| _ddlm} ddlm} || _|| _d S )Nr   )get_dict_as_object)get_object_as_json)rV   ignore_wrappers
complex_asdbtr(   spyne.util.dictdocr\   r]   )r)   rV   r^   r_   r`   r(   r\   r]   r   r   r   r%      s   
zPGObjectJson.__init__c                 K   s   | j S r   )r`   r/   r   r   r   r0      s   zPGObjectJson.get_col_specc                    r1   )Nc              
      sX   | d ur*z j |  j j jd jW S  ty) } ztd| |  d }~ww d S )Nr^   r_   z"Failed to serialize %r to json: %r)	r]   rV   r^   r_   decoder(   	Exceptionloggerdebug)r7   er8   r   r   r9      s   
z,PGObjectJson.bind_processor.<locals>.processr   r:   r   r8   r   r<      r=   zPGObjectJson.bind_processorc                    s   ddl m   fdd}|S )Nr   )JsonDocumentc                    sj   | d u rd S t | tjr| j} t | tjr(jt| j	j
j dS j| j	j
j dS )N)r^   r_   protocol)r3   r   r   rc   r(   r   r\   rO   rQ   rV   r^   r_   r6   rh   r)   r   r   r9      s   
z.PGObjectJson.result_processor.<locals>.process)ra   rh   r@   r   rj   r   rB      s   zPGObjectJson.result_processorN)rE   rF   rG   dictr%   r0   r<   rB   r   r   r   r   r[      s    
r[   c                       s.   e Zd Zd	 fdd	Zdd Zdd Z  ZS )

PGFileJsonNrO   c                    s.   |d u rt }tt| j|dt|d || _d S )NT)r^   r_   r`   )r   r$   rl   r%   liststore)r)   rn   typer`   r*   r   r   r%      s   
zPGFileJson.__init__c                    r1   )Nc              	      sZ  | d ur+| j d urEt j| _t j| j}t| js$t| jdt	|d}| j D ]}|
| q-W d    n1 s?w   Y  n| jd urt j| _t j| j}t| jsdt| jdt| jttfrt	|d}|
| j  W d    n1 sw   Y  ntt| j dtd"}t	|d}|
| W d    n1 sw   Y  W d    n1 sw   Y  nR| jd ur| j}t|std|   tt| jkrt jt  }| jrt|| td|| nt|| td|| t|| _|| _ntd j| _t j| j| _ j|  j  j! j"d	S d S )
Nz4Path %r contains relative path operators (e.g. '..')wbr   accesszFile path in %r not foundzmove '%s' => '%s'zcopy '%s' => '%s'zHInvalid file object passed in. All of .data, .handle and .path are None.rb   )#datar   hexpathr   rn   r   
startswithr   openwritehandler3   r    r   getvaluer   r   filenor   r
   re   errorr   get_hexmoveshutilrf   copyr	   
ValueErrorr]   rV   r^   r_   )r7   fpfiledout_filers   in_file_pathdestr8   r   r   r9      st   







z*PGFileJson.bind_processor.<locals>.processr   r:   r   r8   r   r<      s   ?zPGFileJson.bind_processorc                    rZ   )Nc                    s   | d u rd S t | tjrt| } nt | tjr t| d}  j|  j j	 j
d} j|_t j|j |_}d |_dg|_t|tjsXdd l}|  td| |S tt|d }|_t|j jdkr|t| dtd|_|jf|_|S )NrY   rb       r   zFile '%s' is not readablerbrq   )r3   r   r   rO   rQ   r   rc   r\   rV   r^   r_   rn   r   ru   r   ry   rs   osrr   R_OK	tracebackprint_stackre   r|   r!   rw   fstatr{   st_sizer   r   )r7   retvalru   r   hr8   r   r   r9   B  s0   

z,PGFileJson.result_processor.<locals>.processr   r@   r   r8   r   rB   A  s   !zPGFileJson.result_processorrN   )rE   rF   rG   r%   r<   rB   rH   r   r   r*   r   rl      s    Brl   )8logging	getLoggerrE   re   r   rO   r   sqlalchemy.dialects
sqlalchemyuuidr   r   r   
contextlibr   os.pathr   r   r   r	   r
   lxmlr   r   spyne.util.xmlr   r   ImportError_import_errorr   sqlalchemy.sql.type_apir   spyner   spyne.model.relationalr   
spyne.utilr   spyne.util.sixr   r   r   r    spyne.util.fileproxyr!   r"   dialects
postgresqlbaseischema_namesrI   rL   rS   rU   r[   rl   r   r   r   r   <module>   sL   

":