o
    _�¿j`  ã                   @  s„   d 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r4ddlmZ dd	lmZ 	
		dddd„ZdgZdS )zExchange client factory.é    )Úannotations)ÚTYPE_CHECKING)ÚConfigurationError)ÚExchangeClient)Ú	BSEClient)Ú	NSEClient)ÚCircuitBreaker)ÚSettingsÚNSENÚexchangeÚstrÚsettingsúSettings | NoneÚbreakerúCircuitBreaker | NoneÚreturnr   c                 C  sH   |   ¡  ¡ }|dkrt||d�S |dkrt||d�S td| ›d�dd�‚)a¢  Return the appropriate :class:`ExchangeClient` for *exchange*.

    Args:
        exchange: ``"NSE"`` or ``"BSE"`` (case-insensitive).
        settings: Optional :class:`~indiaopt.config.settings.Settings` override.
        breaker:  Optional :class:`~indiaopt.circuit.CircuitBreaker` override.

    Returns:
        :class:`~indiaopt.exchanges.nse.NSEClient` or
        :class:`~indiaopt.exchanges.bse.BSEClient`
    r
   )r   r   ÚBSEzUnsupported exchange z. Must be 'NSE' or 'BSE'.z&Pass exchange='NSE' or exchange='BSE'.)Úrecovery)ÚstripÚupperr   r   r   )r   r   r   Úex© r   úU/home/dinkstrade/pdmp/venv/lib/python3.10/site-packages/indiaopt/exchanges/factory.pyÚ
get_client   s   
þr   )r
   NN)r   r   r   r   r   r   r   r   )Ú__doc__Ú
__future__r   Útypingr   Úindiaopt.exceptionsr   Úindiaopt.exchanges.baser   Úindiaopt.exchanges.bser   Úindiaopt.exchanges.nser   Úindiaopt.circuitr   Úindiaopt.config.settingsr	   r   Ú__all__r   r   r   r   Ú<module>   s    ý
