Ë
    µŒjô  ã                   ó^   — d Z ddlZddlmZmZmZ ddlZddlmZ ddl	m
Z
 dZ G d„ de
«      Zy)	zp
Util that calls several of financial datasets stock market REST APIs.
Docs: https://docs.financialdatasets.ai/
é    N)ÚAnyÚListÚOptional)Úget_from_dict_or_env)Ú	BaseModelz!https://api.financialdatasets.ai/c            	       óØ   ‡ — e Zd ZU dZdZee   ed<   defˆ fd„Z	e
defd„«       Zded	ed
ee   dee   fd„Zded	ed
ee   dee   fd„Zded	ed
ee   dee   fd„Zdedededefd„Zˆ xZS )ÚFinancialDatasetsAPIWrapperz#Wrapper for financial datasets API.NÚfinancial_datasets_api_keyÚdatac                 óH   •— t        ‰| �  di |¤Ž t        |dd«      | _        y )Nr
   ÚFINANCIAL_DATASETS_API_KEY© )ÚsuperÚ__init__r   r
   )Úselfr   Ú	__class__s     €úz/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/utilities/financial_datasets.pyr   z$FinancialDatasetsAPIWrapper.__init__   s)   ø€ Ü‰ÑÑ ˜4Ò Ü*>ØÐ.Ð0Ló+
ˆÕ'ó    Úreturnc                 óH   — | j                   €t        d«      ‚| j                   S )Na#  API key is required for the FinancialDatasetsAPIWrapper. Please provide the API key by either:
1. Manually specifying it when initializing the wrapper: FinancialDatasetsAPIWrapper(financial_datasets_api_key='your_api_key')
2. Setting it as an environment variable: FINANCIAL_DATASETS_API_KEY)r
   Ú
ValueError)r   s    r   Ú_api_keyz$FinancialDatasetsAPIWrapper._api_key   s/   € à×*Ñ*Ð2ÜðWóð ð ×.Ñ.Ð.r   ÚtickerÚperiodÚlimitc                 óº   — t         › d|› d|› d|r|nd› �}d| j                  i}t        j                  ||¬«      }|j	                  «       }|j                  dd«      S )	av  
        Get the income statements for a stock `ticker` over a `period` of time.

        :param ticker: the stock ticker
        :param period: the period of time to get the balance sheets for.
            Possible values are: annual, quarterly, ttm.
        :param limit: the number of results to return, default is 10
        :return: a list of income statements
        z%financials/income-statements/?ticker=ú&period=ú&limit=é
   ú	X-API-KEY©ÚheadersÚincome_statementsN©ÚFINANCIAL_DATASETS_BASE_URLr   ÚrequestsÚgetÚjson©r   r   r   r   Úurlr"   Úresponser   s           r   Úget_income_statementsz1FinancialDatasetsAPIWrapper.get_income_statements'   sp   € ô  +Ð+ð ,Ø�hØ�v�hØ™u‘e¨"Ð-ð/ð 	ð  §¡Ð.ˆô —<‘< ¨WÔ5ˆØ�}‰}‹ˆà�x‰xÐ+¨TÓ2Ð2r   c                 óº   — t         › d|› d|› d|r|nd› �}d| j                  i}t        j                  ||¬«      }|j	                  «       }|j                  dd«      S )	ap  
        Get the balance sheets for a stock `ticker` over a `period` of time.

        :param ticker: the stock ticker
        :param period: the period of time to get the balance sheets for.
            Possible values are: annual, quarterly, ttm.
        :param limit: the number of results to return, default is 10
        :return: a list of balance sheets
        z"financials/balance-sheets/?ticker=r   r   r   r    r!   Úbalance_sheetsNr$   r)   s           r   Úget_balance_sheetsz.FinancialDatasetsAPIWrapper.get_balance_sheetsF   sp   € ô  +Ð+ð ,Ø�hØ�v�hØ™u‘e¨"Ð-ð/ð 	ð  §¡Ð.ˆô —<‘< ¨WÔ5ˆØ�}‰}‹ˆà�x‰xÐ(¨$Ó/Ð/r   c                 óº   — t         › d|› d|› d|r|nd› �}d| j                  i}t        j                  ||¬«      }|j	                  «       }|j                  dd«      S )	a|  
        Get the cash flow statements for a stock `ticker` over a `period` of time.

        :param ticker: the stock ticker
        :param period: the period of time to get the balance sheets for.
            Possible values are: annual, quarterly, ttm.
        :param limit: the number of results to return, default is 10
        :return: a list of cash flow statements
        z(financials/cash-flow-statements/?ticker=r   r   r   r    r!   Úcash_flow_statementsNr$   r)   s           r   Úget_cash_flow_statementsz4FinancialDatasetsAPIWrapper.get_cash_flow_statementse   sp   € ô" +Ð+ð ,Ø�hØ�v�hØ™u‘e¨"Ð-ð/ð 	ð  §¡Ð.ˆô —<‘< ¨WÔ5ˆØ�}‰}‹ˆà�x‰xÐ.°Ó5Ð5r   ÚmodeÚkwargsc                 óú  — |dk(  rJ|j                  dd«      }|j                  dd«      }t        j                  | j                  |||«      «      S |dk(  rJ|j                  dd«      }|j                  dd«      }t        j                  | j	                  |||«      «      S |dk(  rJ|j                  dd«      }|j                  dd«      }t        j                  | j                  |||«      «      S t        d|› d	�«      ‚)
Nr,   r   Úannualr   r   r/   r2   zInvalid mode z for financial datasets API.)r'   r(   Údumpsr,   r/   r2   r   )r   r3   r   r4   r   r   s         r   ÚrunzFinancialDatasetsAPIWrapper.run…   sì   € ØÐ*Ò*Ø—Z‘Z ¨(Ó3ˆFØ—J‘J˜w¨Ó+ˆEÜ—:‘:˜d×8Ñ8¸ÀÈÓOÓPÐPØÐ)Ò)Ø—Z‘Z ¨(Ó3ˆFØ—J‘J˜w¨Ó+ˆEÜ—:‘:˜d×5Ñ5°f¸fÀeÓLÓMÐMØÐ/Ò/Ø—Z‘Z ¨(Ó3ˆFØ—J‘J˜w¨Ó+ˆEÜ—:‘:˜d×;Ñ;¸FÀFÈEÓRÓSÐSä˜}¨T¨FÐ2NÐOÓPÐPr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   ÚstrÚ__annotations__r   r   Úpropertyr   ÚintÚdictr,   r   r/   r2   r8   Ú__classcell__)r   s   @r   r	   r	      sü   ø… Ù-à04Ð ¨¡Ó4ð
˜sõ 
ð ð	/˜#ò 	/ó ð	/ð3àð3ð ð3ð ˜‰}ð	3ð
 
�$‰ó3ð>0àð0ð ð0ð ˜‰}ð	0ð
 
ˆd‰ó0ð>6àð6ð ð6ð ˜‰}ð	6ð
 
ˆd‰ó6ð@Q˜ð Q Sð Q°Cð Q¸C÷ Qr   r	   )r<   r(   Útypingr   r   r   r&   Úlangchain_core.utilsr   Úpydanticr   r%   r	   r   r   r   Ú<module>rF      s4   ðñó
 ß &Ñ &ã Ý 5Ý àAÐ ôCQ )õ CQr   