
    [Bj              	       2   d Z ddlm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mZ  e            Ze                    d	           ej        d
           ed           ee          fdedee         defd                        ZdS )uF   Credit Peer Curve router — OAS term structure across peer universes.    )List)	APIRouterDependsHTTPExceptionQueryRequest)JSONResponse)limiter)get_registry)ServiceRegistry)PeerCurveResponsePeerCurveUniverseOASz/peer-curvez	10/minute.requestissuerregistryc                 N  K   d |D             }|st          dd          t          |          dk    r|d         n|d          dt          |          dz
   d}|j                            ||          }|t	          d	d
id          S d|v rt          d|d                   d |d                                         D             }t          |d         |                    d          |                    d          |                    dd          |                    dd          |                    d          |                    dg           |                    d          |                    d          ||d         |d         |                    dd                     S )!Nc                 ^    g | ]*}|                                 |                                 +S  )strip).0is     /app/app/routers/peer_curve.py
<listcomp>zpeer_curve.<locals>.<listcomp>   s-    666QAGGII6qwwyy666    i  zAt least one issuer is required)status_codedetail   r   z + z morestatusloading   )r   	__error__i  c                 .    i | ]\  }}|t          d i |S )r   )r   )r   bucketrows      r   
<dictcomp>zpeer_curve.<locals>.<dictcomp>   s=       FC 	$++s++  r   tabler   sector
sub_sectorsector_labelSectorsub_sector_labelzIndustry Grouprating_bucketrating_peer_bucketslower_rating_bucketupper_rating_bucketbond_counts
chart_dataspread_sourcez_spread)r   r'   r(   r)   r+   r,   r-   r.   r/   r&   r0   r1   r2   )r   lenpeer_curve_servicebuildr	   itemsr   get)r   r   r   issuersdisplay_nameresultr&   s          r   
peer_curver<      s      76&666G W4UVVVV!$W!2!271::71:8a8a#g,,YZJZ8a8a8aL(..wEEF~Xy1sCCCCfF;4GHHHH !'?0022  E
 hzz(##::l++ZZ99$68HIIjj11"JJ'<bAA"JJ'<=="JJ'<===),'jj*==   r   N)__doc__typingr   fastapir   r   r   r   r   fastapi.responsesr	   app.mainr
   app.dependenciesr   app.services.registryr   app.models.schemasr   r   routerr8   limitstrr<   r   r   r   <module>rH      s=   L L       E E E E E E E E E E E E E E * * * * * *       ) ) ) ) ) ) 1 1 1 1 1 1 F F F F F F F F	 M{ c

 ' 5 5" ""I" " " "  " " "r   