
    9tf                     r    d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	 d Z
d Zd Zd Zd	 Zd
 Zd Zd Zd Zy)    N)OrderedDict)urlparse)
get_methodget_encodingget_locationget_links_from_documentc                 ^   t        j                   | j                        }t               }d|d<   t               |d<   | j                  |d   d<   | j                  |d   d<   d|d   d<   |j
                  r|j
                  |d<   |j                  r|j                  g|d	<   t        |       |d
<   |S )z-
    Generates root of the Swagger spec.
    z2.0swaggerinfotitledescription versionhostschemespaths)r   urlr   r   r   netlocscheme_get_paths_object)document
parsed_urlr
   s      ^/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/openapi_codec/encode.pygenerate_swagger_objectr      s     ""8<<0JmGGI!mGFO'~~GFOG%-%9%9GFOM"!#GFOI$++(//0	(2GGN    c                 2    | \  }}}|r|d   dz   |z   }|||fS )Nr   _ )itemoperation_idlinktagss       r   _add_tag_prefixr#      s0    #L$Aw}|3$%%r   c                 f   g }t        |       D ]I  \  }}t        |      dkD  rdj                  |dd       }|d   g}n|d   }g }|j                  |||f       K |D cg c]  }|d   	 }}t        t	        |            t        |      k(  }|s|D cg c]  }t        |       c}S |S c c}w c c}w )z7
    Return a list of (operation_id, link, [tags])
       r   Nr   )r   lenjoinappendsetr#   )	r   linkskeysr!   r    r"   r   operation_idsuniques	            r   
_get_linksr.   &   s    
 E-h7 1
dt9q=88DH-LG9D7LDlD$/01 *//T!W/M/]#$E
2F 278$%88L 0
 9s   B)B.c                     t               }t        |       }|D ]c  \  }}}|j                  |vrt               ||j                  <   t        |      }t	        |||      }||j                     j                  ||i       e |S )N)r   r.   r   r   _get_operationupdate)r   r   r*   r    r!   r"   method	operations           r   r   r   @   s~    MEx E$) 4 dD885 )mE$((OD!"<t<	dhh	234 Lr   c                     t        |      }|j                  j                         }|r|j                         d   nd }| t	        |      t        ||      d}|r||d<   |r||d<   |r|g|d<   |r||d<   |S )Nr   )operationId	responses
parametersr   summaryconsumesr"   )r   r   strip
splitlines_get_responses_get_parameters)r    r!   r"   encodingr   r8   r3   s          r   r0   r0   P   s    D!H""((*K-8k$$&q)dG $#D)%dH5I #.	- &	)!)
	* 	&r   c                 z    t        | dd       | j                  S | j                  y| j                  j                  S )Nr   r   )getattrr   schemafields    r   _get_field_descriptionrD   f   s:    umT*6   ||<<###r   c                 Z   t        | dd       | j                  S | j                  yt        j                  dt        j
                  dt        j                  dt        j                  dt        j                  dt        j                  dij                  | j                  j                  d      S )Ntypestringintegernumberbooleanarrayobject)r@   rF   rA   
coreschemaStringIntegerNumberBooleanArrayObjectget	__class__rB   s    r   _get_field_typerV   q   s    ufd#/zz|| 	8I8I'8 
c%,,
 
 (+,r   c                    g }i }g }| j                   D ].  }t        | |      }t        |      }t        |      }|dk(  r|dv r:|j                  |j
                  d||d}	|dk(  rddi|	d<   |j                  |	       i||d	}
|dk(  rddi|
d<   |
||j                  <   |j
                  s|j                  |j                         |d
k(  r;|dk(  rddd}ni }|j                  |j
                  |||d}	|j                  |	       |j                  |j
                  |||xs dd}	|dk(  rddi|	d<   |j                  |	       1 |r$dd
d|dd}	|r||	d   d<   |j                  |	       |S )z2
    Generates Swagger Parameter Item object.
    form)zmultipart/form-dataz!application/x-www-form-urlencodedformData)namerequiredinr   rF   rK   rF   rG   items)r   rF   bodyzapplication/octet-streambinary)rF   format)rZ   r[   r\   r   rA   datarL   )rF   
properties)rZ   r\   rA   rA   r[   )fieldsr   rD   rV   rZ   r[   r(   )r!   r>   r7   rb   r[   rC   locationfield_description
field_type	parameterschema_propertyrA   s               r   r=   r=      s    JJH 6)e,259$U+
vWW "JJ %$#4&	 (*0();Ig&!!), $5&# (06/AOG,)8
5::&>>OOEJJ/55"*h?

!NN0 I i( 

!NN0".hI W$&,h%7	'"i(m6)p  (
	 .6Ih
+)$r   c                     ddi}| j                   j                         dk(  rd|iS | j                   j                         dk(  rd|iS d|iS )zZ
    Returns minimally acceptable responses object based
    on action / method type.
    r   r   post201delete204200)actionlower)r!   templates     r   r<   r<      sY    
 r"H{{f$x  {{h&x  8r   )rM   collectionsr   coreapi.compatr   openapi_codec.utilsr   r   r   r   r   r#   r.   r   r0   rD   rV   r=   r<   r   r   r   <module>ru      sC     # # _ _0&4 ,$,$M`
r   