
    @j#	                        d Z ddlZddl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 ddl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 ddlmZ  ej        ej                    ej        e          Z  eedg          Z! e            Z"d%dZ#edefd            Z$ edde$          Z%e!e%j&        _!        e%'                    ee           e%(                    e           e%(                    eej)        ddgdg           ddl*m+Z, ddl-m+Z. e%/                    e,ddg           e%/                    e.dd g           e%0                    d!          d"             Z1e%0                    d#          d$             Z2dS )&u.   LSEG Credit Analytics — FastAPI application.    N)asynccontextmanager)FastAPI)CORSMiddleware)FileResponse)Path)Limiter_rate_limit_exceeded_handler)RateLimitExceeded)SlowAPIMiddleware)get_remote_address)settings)run_sync)ServiceRegistry)levelz
120/minute)key_funcdefault_limitsreturnc                     K   	 t          t          j        j                   d{V  t                              d           dS # t          $ r t                              d           Y dS w xY w)zRFetch and cache bond data at startup so the first real request isn't the slow one.NzLSEG: bond cache pre-warmedu@   LSEG: bond cache pre-warm failed — will retry on first request)r   registrylseg_bond_serviceget_all_bondsloggerinfo	Exception	exception     /app/app/main.py_warm_bond_cacher      s      ]x1?@@@@@@@@@122222 ] ] ][\\\\\\]s   >A $A,+A,appc                "  K   t                                            t           | j        _         t                              dt
          j                   t           j                                         d W V  t                              d           d S )Nu'   LSEG Credit API ready — data path: %szLSEG Credit API shutting down)	r   
initializestater   r   r   lseg_data_pathr   start_background_load)r    s    r   lifespanr&   $   ss      !CI
KK98;RSSS44666	EEEE
KK/00000r   zLSEG Credit Analytics APIz1.0.0)titleversionr&   F*)allow_originsallow_credentialsallow_methodsallow_headers)routerz/api/lseg-creditzlseg-credit)prefixtagsz
peer-curvez/api/healthc                     K   ddiS )Nstatusokr   r   r   r   healthr4   B   s      dr   /c                  d   K   t          t          t                    j        d         dz            S )N   ztest-ui.html)r   r   __file__parentsr   r   r   uir:   G   s'      X.q1NBCCCr   )r   N)3__doc__asynciologging
contextlibr   fastapir   fastapi.middleware.corsr   fastapi.responsesr   pathlibr   slowapir   r	   slowapi.errorsr
   slowapi.middlewarer   slowapi.utilr   
app.configr   app.dependenciesr   app.services.registryr   basicConfigINFO	getLogger__name__r   limiterr   r   r&   r    r#   add_exception_handleradd_middlewarecors_origin_listapp.routers.lseg_creditr.   lseg_credit_routerapp.routers.peer_curvepeer_curve_routerinclude_routergetr4   r:   r   r   r   <module>rX      s   4 4   * * * * * *       2 2 2 2 2 2 * * * * * *       9 9 9 9 9 9 9 9 , , , , , , 0 0 0 0 0 0 + + + + + +       % % % % % % 1 1 1 1 1 1  ', ' ' ' '		8	$	$
'-|n
M
M
M?] ] ] ] 1 1 1 1 1 g/8TTT	    +-I J J J   $ % % %   +%%     A @ @ @ @ @ > > > > > >   %.@  W W W   $-?|n  U U U    D D D D Dr   