o
    SLNi<
                     @   s|   d dl Z d dlmZmZmZmZ d dlZe eZ	dZ
dZdddeded	ee fd
dZdee deded	efddZdS )    N)AnyDictListOptionalzhttps://www.nseindia.comz0https://www.nseindia.com/api/equity-stockIndices   )timeout_secondsindexr   returnc             
   C   sN  | pd  } | s
g S dddtd dd}t }|j| z	|jt|d W n	 ty0   Y nw z|jtd	| i|d
}|	  |j
rG| ni }W n tye } ztd| | g W  Y d}~S d}~ww |d}t|tsrg S g }t }	|D ]+}
t|
tsqy|
d}t|tsqy|   }|sqy||	v rqy|	| || qy|S )zFetch index constituents from NSE India (best-effort).

    NSE often requires a priming request to set cookies.
    Returns a de-duped, order-preserving list of symbols.
     zuMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36zapplication/json,text/plain,*/*zen-US,en;q=0.9/z
keep-alive)z
User-AgentAcceptzAccept-LanguageReferer
Connection)timeoutr   )paramsr   z"[NSE] Failed fetching index=%s: %sNdatasymbol)strip	_NSE_HOMErequestsSessionheadersupdateget	Exception_NSE_INDEX_APIraise_for_statuscontentjsonloggerwarning
isinstancelistsetdictstrupperaddappend)r   r   r   sessrpayloaderowsoutseenrowsym r2   :/var/www/html/Trade-python/app/v1/libraries/nse_indices.pyfetch_equity_index_symbols   sX   





r4   fetched_at_utc	ttl_hoursnow_utcc                C   sl   z+ddl m }m} t||sW dS t| |sW dS |dkr W dS | ||t|d k W S  ty5   Y dS w )z?Return True if fetched_at is missing/invalid or older than ttl.r   )datetime	timedeltaT)hours)r8   r9   r!   intr   )r5   r6   r7   r8   r9   r2   r2   r3   should_refresh_by_ttlO   s   

r<   )loggingtypingr   r   r   r   r   	getLogger__name__r   r   r   r%   r;   r4   boolr<   r2   r2   r2   r3   <module>   s     
 A