
     h(&                     @   d dl mZ d dlmZmZ d dlmZ d dlZd Zd Z	d Z
d Z ed	g d
          Zdej        _         G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  ZdS )    )unicode_literals)OrderedDict
namedtuple)string_typesNc                     t          | t                    rt          |           S t          | t                    rt	          |           S | S N)
isinstancedictObjectlistArray)values    L/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/coreapi/document.py_to_immutabler      sC    % e}}	E4	 	  U||L    c                 H    ddl m}  |                                |           S )Nr   )PythonCodec)coreapi.codecs.pythonr   encode)noder   s     r   _reprr      s.    111111;==%%%r   c                 H    ddl m}  |                                |           S )Nr   )DisplayCodec)coreapi.codecs.displayr   r   )r   r   s     r   _strr      s.    333333<>>  &&&r   c                     | \  }}t          |t                    r,dddddd                    |j        d          }d|j        |ffS d|fS )z
    Document and Object sorting.
    Regular attributes sorted alphabetically.
    Links are sorted based on their URL and action.
    r               )getpostputpatchdelete   )r	   Linkr!   actionurl)itemkeyr   action_prioritys       r   _key_sortingr-      sm     JC% 1
 
 #elA

 	 EI/00s8Or   Field)namerequiredlocationschemadescriptiontypeexample)F NNNNc                        e Zd ZdZddZd Zd Zd Zd Z fdZ	e
d	             Ze
d
             Ze
d             Ze
d             Ze
d             Ze
d             Z xZS )Documentz
    The Core API document type.

    Expresses the data that the client may access,
    and the actions that the client may perform.
    Nc                    |i n|}|$t          |t                    st          d          |$t          |t                    st          d          |$t          |t                    st          d          |$t          |t                    st          d          t          |t                    st          d          t	          d |                                D                       rt          d          |dn|| _        |dn|| _        |dn|| _        |dn|| _	        d	 |
                                D             | _        d S )
Nz'url' must be a string.'title' must be a string.z'description' must be a string.z'media_type' must be a string.'content' must be a dict.c                 :    g | ]}t          |t                     S  r	   r   .0r+   s     r   
<listcomp>z%Document.__init__.<locals>.<listcomp>K   s%    LLLcJsL111LLLr   content keys must be strings.r6   c                 4    i | ]\  }}|t          |          S r=   r   r@   r+   r   s      r   
<dictcomp>z%Document.__init__.<locals>.<dictcomp>R   s&    RRRJCc=//RRRr   )r	   r   	TypeErrorr
   anykeys_url_title_description_media_typeitems_data)selfr)   titler3   
media_typecontents         r   __init__zDocument.__init__>   sU    ""w?:c<#@#@?5666Z|%D%D7888":k<+P+P"=>>>!*Z*N*N!<==='4(( 	97888LLW\\^^LLLMM 	=;<<<;BBS	"]bb#.#6BB[","422:RR'--//RRR


r   c                 \    |                      | j        | j        | j        | j        |          S r   )	__class__r)   rQ   r3   rR   )rP   datas     r   clonezDocument.cloneT   s&    ~~dh
D4DdoW[\\\r   c                     t          | j                                        t                    }t	          d |D                       S )Nr+   c                     g | ]\  }}|S r=   r=   rE   s      r   rA   z%Document.__iter__.<locals>.<listcomp>Y       111ZS%S111r   sortedrO   rN   r-   iterrP   rN   s     r   __iter__zDocument.__iter__W   ?    tz''))|<<<115111222r   c                      t          |           S r   r   rP   s    r   __repr__zDocument.__repr__[       T{{r   c                      t          |           S r   r   re   s    r   __str__zDocument.__str__^       Dzzr   c                     | j         |j         k    r0| j        |j        k    o| j        |j        k    o| j        |j        k    S t	          t
          |                               |          S r   )rV   r)   rQ   rO   superr8   __eq__)rP   otherrV   s     r   rn   zDocument.__eq__a   se    >U_,,EI% *
ek)*
ek)
 Xt$$++E222r   c                     | j         S r   rJ   re   s    r   r)   zDocument.urlj   
    yr   c                     | j         S r   rK   re   s    r   rQ   zDocument.titlen   
    {r   c                     | j         S r   rL   re   s    r   r3   zDocument.descriptionr         r   c                     | j         S r   )rM   re   s    r   rR   zDocument.media_typev   s    r   c                 X    t          d |                                 D                       S )Nc                 F    g | ]\  }}t          |t                    ||fS r=   r	   r'   rE   s      r   rA   z!Document.data.<locals>.<listcomp>|   @     
 
 
'S%eT**
%L
 
 
r   r   rN   re   s    r   rW   zDocument.dataz   8     
 
+/::<<
 
 
   	r   c                 X    t          d |                                 D                       S )Nc                 F    g | ]\  }}t          |t                    ||fS r=   r|   rE   s      r   rA   z"Document.links.<locals>.<listcomp>   @     
 
 
'S%%&&
%L
 
 
r   r~   re   s    r   linkszDocument.links   r   r   )NNNNN)__name__
__module____qualname____doc__rT   rX   ra   rf   rj   rn   propertyr)   rQ   r3   rR   rW   r   __classcell__)rV   s   @r   r8   r8   7   s;        S S S S,] ] ]3 3 3    3 3 3 3 3   X   X ! ! X!     X    X   X    r   r8   c                   V    e Zd ZdZd Zd Zd Zd Zed             Z	ed             Z
dS )	r   z4
    An immutable mapping of strings to values.
    c                     t          |i |}t          d |                                D                       rt          d          d |                                D             | _        d S )Nc                 :    g | ]}t          |t                     S r=   r>   r?   s     r   rA   z#Object.__init__.<locals>.<listcomp>   %    IIIcJsL111IIIr   zObject keys must be strings.c                 4    i | ]\  }}|t          |          S r=   rD   rE   s      r   rF   z#Object.__init__.<locals>.<dictcomp>   &    OOOJCc=//OOOr   )r
   rH   rI   rG   rN   rO   )rP   argskwargsrW   s       r   rT   zObject.__init__   sk    T$V$$IITYY[[IIIJJ 	<:;;;OO$**,,OOO


r   c                     t          | j                                        t                    }t	          d |D                       S )NrZ   c                     g | ]\  }}|S r=   r=   rE   s      r   rA   z#Object.__iter__.<locals>.<listcomp>   r\   r   r]   r`   s     r   ra   zObject.__iter__   rb   r   c                      t          |           S r   rd   re   s    r   rf   zObject.__repr__   rg   r   c                      t          |           S r   ri   re   s    r   rj   zObject.__str__   rk   r   c                 X    t          d |                                 D                       S )Nc                 F    g | ]\  }}t          |t                    ||fS r=   r|   rE   s      r   rA   zObject.data.<locals>.<listcomp>   r}   r   r~   re   s    r   rW   zObject.data   r   r   c                 X    t          d |                                 D                       S )Nc                 F    g | ]\  }}t          |t                    ||fS r=   r|   rE   s      r   rA   z Object.links.<locals>.<listcomp>   r   r   r~   re   s    r   r   zObject.links   r   r   N)r   r   r   r   rT   ra   rf   rj   r   rW   r   r=   r   r   r   r      s         P P P3 3 3       X   X  r   r   c                   $    e Zd ZdZd Zd Zd ZdS )r   z+
    An immutable list type container.
    c                 6    d t          | D             | _        d S )Nc                 ,    g | ]}t          |          S r=   rD   )r@   r   s     r   rA   z"Array.__init__.<locals>.<listcomp>   s     DDDumE**DDDr   )r   rO   )rP   r   s     r   rT   zArray.__init__   s    DDdDDD


r   c                      t          |           S r   rd   re   s    r   rf   zArray.__repr__   rg   r   c                      t          |           S r   ri   re   s    r   rj   zArray.__str__   rk   r   N)r   r   r   r   rT   rf   rj   r=   r   r   r   r      sN         E E E      r   r   c                       e Zd ZdZddZed             Zed             Zed             Zed             Z	ed             Z
ed	             Zed
             Zd Zd Zd ZdS )r'   z@
    Links represent the actions that a client may perform.
    Nc                 D   |$t          |t                    st          d          |$t          |t                    st          d          |$t          |t                    st          d          |$t          |t                    st          d          |$t          |t                    st          d          |$t          |t                    st          d          |+t          |t          t          f          st          d          |(t          d |D                       rt          d	          |d
n|| _        |d
n|| _        |d
n|| _        |d
n|| _	        |d
n|| _
        |d
n|| _        |dnt	          d |D                       | _        d S )Nz Argument 'url' must be a string.z#Argument 'action' must be a string.z%Argument 'encoding' must be a string.z&Argument 'transform' must be a string.z"Argument 'title' must be a string.z(Argument 'description' must be a string.z!Argument 'fields' must be a list.c                 d    g | ]-}t          |t                    pt          |t                     .S r=   )r	   r   r.   r@   r*   s     r   rA   z!Link.__init__.<locals>.<listcomp>   sD     )
 )
 )
 D,//J:dE3J3JK)
 )
 )
r   z6Argument 'fields' must be a list of strings or fields.r6   r=   c                 `    g | ]+}t          |t                    r|nt          |d d          ,S )Fr6   )r0   r1   )r	   r.   r   s     r   rA   z!Link.__init__.<locals>.<listcomp>   sK     :
 :
 :
 tU++YDDteVX1Y1Y1Y:
 :
 :
r   )r	   r   rG   r   tuplerH   rJ   _action	_encoding
_transformrK   rL   _fields)rP   r)   r(   encoding	transformrQ   r3   fieldss           r   rT   zLink.__init__   s   Ojl&C&CO>???FL)I)IABBB :h+M+M CDDD!Jy,,O,O!DEEE
5,(G(G@AAA#jl.S.S#FGGGFT5M)J)J?@@@C )
 )
)
 )
 )
 % % TUUU;BBS	$nrr6 ( 0x!*!2"""]bb#.#6BB[$nrr5 :
 :
:
 :
 :
 4 4r   c                     | j         S r   rq   re   s    r   r)   zLink.url   rr   r   c                     | j         S r   )r   re   s    r   r(   zLink.action   
    |r   c                     | j         S r   )r   re   s    r   r   zLink.encoding   s
    ~r   c                     | j         S r   )r   re   s    r   r   zLink.transform   s
    r   c                     | j         S r   rt   re   s    r   rQ   z
Link.title   ru   r   c                     | j         S r   rw   re   s    r   r3   zLink.description   rx   r   c                     | j         S r   )r   re   s    r   r   zLink.fields   r   r   c                 ,   t          |t                    o| j        |j        k    oo| j        |j        k    o_| j        |j        k    oO| j        |j        k    o?| j        |j        k    o/t          | j        d           t          |j        d           k    S )Nc                     | j         S r   r/   fs    r   <lambda>zLink.__eq__.<locals>.<lambda>  s    af r   rZ   c                     | j         S r   r   r   s    r   r   zLink.__eq__.<locals>.<lambda>  s
    \]\b r   )	r	   r'   r)   r(   r   r   r3   r^   r   rP   ro   s     r   rn   zLink.__eq__   s    ud## dH	!dK5<'d MU^+d Neo-	d
  11d 4;$4$4555RbRb9c9c9cc	
r   c                      t          |           S r   rd   re   s    r   rf   zLink.__repr__  rg   r   c                      t          |           S r   ri   re   s    r   rj   zLink.__str__  rk   r   )NNNNNNN)r   r   r   r   rT   r   r)   r(   r   r   rQ   r3   r   rn   rf   rj   r=   r   r   r'   r'      s           @   X   X   X   X   X ! ! X!   X	
 	
 	
      r   r'   c                   J    e Zd Zd	dZd Zd Zd Zd Zed             Z	d Z
dS )
ErrorNc                 z   |i n|}|$t          |t                    st          d          |$t          |t                    st          d          t	          d |                                D                       rt          d          |dn|| _        d |                                D             | _        d S )Nr:   r;   c                 :    g | ]}t          |t                     S r=   r>   r?   s     r   rA   z"Error.__init__.<locals>.<listcomp>  r   r   rB   r6   c                 4    i | ]\  }}|t          |          S r=   rD   rE   s      r   rF   z"Error.__init__.<locals>.<dictcomp>  r   r   )	r	   r   rG   r
   rH   rI   rK   rN   rO   )rP   rQ   rS   rW   s       r   rT   zError.__init__  s    orrGZ|%D%D7888z'4'@'@7888IITYY[[IIIJJ 	=;<<<"]bbOO$**,,OOO


r   c                     t          | j                                        t                    }t	          d |D                       S )NrZ   c                     g | ]\  }}|S r=   r=   rE   s      r   rA   z"Error.__iter__.<locals>.<listcomp>  r\   r   r]   r`   s     r   ra   zError.__iter__  rb   r   c                      t          |           S r   rd   re   s    r   rf   zError.__repr__  rg   r   c                      t          |           S r   ri   re   s    r   rj   zError.__str__!  rk   r   c                 l    t          |t                    o| j        |j        k    o| j        |j        k    S r   )r	   r   rQ   rO   r   s     r   rn   zError.__eq__$  s6    ue$$ &J%+%&J%+%	
r   c                     | j         S r   rt   re   s    r   rQ   zError.title+  ru   r   c                     g }|                                  D ]&}t          |t                    r|d |D             z  }'|S )Nc                 <    g | ]}t          |t                    |S r=   r>   r   s     r   rA   z&Error.get_messages.<locals>.<listcomp>3  s7       !j|.L.L  r   )valuesr	   r   )rP   messagesr   s      r   get_messageszError.get_messages/  s^    [[]] 	 	E%''   %*    r   )NN)r   r   r   rT   ra   rf   rj   rn   r   rQ   r   r=   r   r   r   r     s        P P P P3 3 3    
 
 
   X    r   r   )
__future__r   collectionsr   r   coreapi.compatr   itypesr   r   r   r-   r.   __new____defaults__Dictr8   r   Listr   r'   r   r=   r   r   <module>r      s   ' ' ' ' ' ' / / / / / / / / ' ' ' ' ' '   & & &
' ' '
  . 	
7hhhii@ 
O O O O Ov{ O O Od         V[      F    FK   O O O O O6= O O Od* * * * *FK * * * * *r   