§
    æ˜ºhî+  ã                  ó  — d Z ddlmZ ddlZddlZddlZddlmZmZm	Z	m
Z
mZmZmZ ddlZddlZddlmZ ddlmZmZmZmZ ddlmZ  ej        e¦  «        Z ej        dd	¦  «        Zerdd
lmZ  G d„ de¦  «        Z	 ddd„Z dd„Z!dS )z#Wrapper around a Power BI endpoint.é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚDictÚIterableÚListÚOptionalÚUnion)ÚServerTimeoutError)Ú	BaseModelÚFieldÚroot_validatorÚ	validator)ÚTimeoutÚPOWERBI_BASE_URLz"https://api.powerbi.com/v1.0/myorg)ÚTokenCredentialc                  óà  — e Zd ZU dZded<   ded<   dZded<   dZd	ed
<   dZded<   dZded<    e	ddd¬¦  «        Z
ded<    e	e¬¦  «        Zded<   dZded<    G d„ d¦  «        Z edd¬¦  «        d:d„¦   «         Z edd¬¦  «        d;d!„¦   «         Zed<d"„¦   «         Zed=d#„¦   «         Zd>d%„Zd<d&„Zed<d'„¦   «         Z	 d?d@d*„ZdAd,„ZdBd-„Z	 d?dCd.„Z	 d?dCd/„ZdDd2„ZdDd3„ZdEd6„Z dFd8„Z!dFd9„Z"dS )GÚPowerBIDatasetaO  Create PowerBI engine from dataset ID and credential or token.

    Use either the credential or a supplied token to authenticate.
    If both are supplied the credential is used to generate a token.
    The impersonated_user_name is the UPN of a user to be impersonated.
    If the model is not RLS enabled, this will be ignored.
    ÚstrÚ
dataset_idú	List[str]Útable_namesNúOptional[str]Úgroup_idzOptional[TokenCredential]Ú
credentialÚtokenÚimpersonated_user_nameé   r   é
   )ÚdefaultÚgtÚleÚintÚsample_rows_in_table_info)Údefault_factoryúDict[str, str]ÚschemaszOptional[aiohttp.ClientSession]Ú
aiosessionc                  ó   — e Zd ZdZdZdS )úPowerBIDataset.Configz'Configuration for this pydantic object.TN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úarbitrary_types_allowed© ó    úm/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/utilities/powerbi.pyÚConfigr*   *   s   € € € € € Ø5Ð5à"&ÐÐÐr1   r3   T)Úallow_reuseÚreturnc                ó   — d„ |D ¦   «         S )zFix the table names.c                ó,   — g | ]}t          |¦  «        ‘ŒS r0   ©Úfix_table_name©Ú.0Útables     r2   ú
<listcomp>z2PowerBIDataset.fix_table_names.<locals>.<listcomp>2   s    € Ð?Ð?Ð?¨%•˜uÑ%Ô%Ð?Ð?Ð?r1   r0   )Úclsr   s     r2   Úfix_table_nameszPowerBIDataset.fix_table_names/   s   € ð @Ð?°;Ð?Ñ?Ô?Ð?r1   )Úprer4   ÚvaluesúDict[str, Any]c                ó4   — d|v sd|v r|S t          d¦  «        ‚)z?Validate that at least one of token and credentials is present.r   r   z.Please provide either a credential or a token.)Ú
ValueError)r>   rA   s     r2   Útoken_or_credential_presentz*PowerBIDataset.token_or_credential_present4   s-   € ð �fÐÐ °Ð 6Ð 6ØˆMÝÐIÑJÔJÐJr1   c                óh   — | j         rt          › d| j         › d| j        › d�S t          › d| j        › d�S )zGet the request url.z/groups/z
/datasets/z/executeQueries)r   ÚBASE_URLr   ©Úselfs    r2   Úrequest_urlzPowerBIDataset.request_url;   sK   € ð Œ=ð 	bÝÐaÐa¨¬ÐaÐaÀÄÐaÐaÐaÐaÝÐFÐF d¤oÐFÐFÐFÐFr1   c                óæ   — | j         rdd| j         z   dœS ddlm} | j        rF	 | j                             d¦  «        j         }dd|z   dœS # t
          $ r} |d¦  «        |‚d}~ww xY w |d	¦  «        ‚)
zGet the token.zapplication/jsonzBearer )zContent-TypeÚAuthorizationr   )ÚClientAuthenticationErrorz1https://analysis.windows.net/powerbi/api/.defaultz4Could not get a token from the supplied credentials.Nz No credential or token supplied.)r   Úazure.core.exceptionsrM   r   Ú	get_tokenÚ	Exception)rI   rM   r   Úexcs       r2   ÚheaderszPowerBIDataset.headersB   så   € ð Œ:ð 	à 2Ø!*¨T¬ZÑ!7ðð ð ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð Œ?ð 	ðØœ×1Ò1ØGñô äð ð %7Ø%.°Ñ%6ðð ð øõ ð ð ð Ø/Ð/ØJñô àðøøøøðøøøð (Ð'Ð(JÑKÔKÐKs   £&A
 Á

A%ÁA Á A%úIterable[str]c                ó   — | j         S )zGet names of tables available.©r   rH   s    r2   Úget_table_nameszPowerBIDataset.get_table_names]   s   € àÔÐr1   c                ó€   — | j         r6d                     d„ | j                              ¦   «         D ¦   «         ¦  «        S dS )zGet the available schema's.ú, c                ó"   — g | ]\  }}|› d |› �‘ŒS )z: r0   )r;   ÚkeyÚvalues      r2   r=   z.PowerBIDataset.get_schemas.<locals>.<listcomp>d   s*   € ÐWÐWÐW±J°C¸ Ð/Ð/¨Ð/Ð/ÐWÐWÐWr1   z9No known schema's yet. Use the schema_powerbi tool first.)r'   ÚjoinÚitemsrH   s    r2   Úget_schemaszPowerBIDataset.get_schemasa   sB   € àŒ<ð 	YØ—9’9ÐWÐWÀ$Ä,×BTÒBTÑBVÔBVÐWÑWÔWÑXÔXÐXØJÐJr1   c                ó*   — |                       ¦   «         S )z-Information about all tables in the database.)Úget_table_inforH   s    r2   Ú
table_infozPowerBIDataset.table_infog   s   € ð ×"Ò"Ñ$Ô$Ð$r1   úOptional[Union[List[str], str]]úOptional[List[str]]c                óÞ  ‡ ‡— |�ãt          |t          ¦  «        r}t          |¦  «        dk    rj|d         dk    r^d„ |D ¦   «         }ˆ fd„|D ¦   «         Š‰r.t                               dd                     ‰¦  «        ¦  «         ˆfd„|D ¦   «         }|r|ndS t          |t          ¦  «        r<|dk    r6|‰ j        vrt                               d	|¦  «         dS t          |¦  «        gS ‰ j        S )
zHGet the tables names that need to be queried, after checking they exist.Nr   Ú c                ó,   — g | ]}t          |¦  «        ‘ŒS r0   r8   r:   s     r2   r=   z7PowerBIDataset._get_tables_to_query.<locals>.<listcomp>v   s    € ÐOÐOÐO¸%¥¨uÑ 5Ô 5ÐOÐOÐOr1   c                ó&   •— g | ]}|‰j         v¯|‘ŒS r0   rU   ©r;   r<   rI   s     €r2   r=   z7PowerBIDataset._get_tables_to_query.<locals>.<listcomp>w   s-   ø€ ð 'ð 'ð 'Ø#°uÀDÔDTÐ7TÐ7T�EÐ7TÐ7TÐ7Tr1   z!Table(s) %s not found in dataset.rX   c                ó   •— g | ]}|‰v¯|‘Œ	S r0   r0   )r;   r<   Únon_existing_tabless     €r2   r=   z7PowerBIDataset._get_tables_to_query.<locals>.<listcomp>   s+   ø€ ð ð ð Ø#°uÐDWÐ7WÐ7W�EÐ7WÐ7WÐ7Wr1   zTable %s not found in dataset.)	Ú
isinstanceÚlistÚlenÚloggerÚwarningr\   r   r   r9   )rI   r   Úfixed_tablesÚtablesrj   s   `   @r2   Ú_get_tables_to_queryz#PowerBIDataset._get_tables_to_queryl   sF  øø€ ð Ð"å˜;­Ñ-Ô-ð2å˜Ñ$Ô$ qÒ(Ð(Ø ”N bÒ(Ð(àOÐOÀ;ÐOÑOÔO�ð'ð 'ð 'ð 'Ø'3ð'ñ 'ô 'Ð#ð 'ð Ý—N’NØ;ØŸ	š	Ð"5Ñ6Ô6ñô ð ðð ð ð Ø'3ðñ ô �ð "(Ð1�v�v¨TÐ1Ý˜+¥sÑ+Ô+ð 5°¸rÒ0AÐ0AØ dÔ&6Ð6Ð6Ý—N’NÐ#CÀ[ÑQÔQÐQØ˜4Ý& {Ñ3Ô3Ð4Ð4ØÔÐr1   Útables_todoc                ó    ‡ — ˆ fd„|D ¦   «         S )z-Get the tables that still need to be queried.c                ó&   •— g | ]}|‰j         v¯|‘ŒS r0   )r'   rh   s     €r2   r=   z3PowerBIDataset._get_tables_todo.<locals>.<listcomp>Œ   s%   ø€ ÐLÐLÐL˜%°%¸t¼|Ð2KÐ2K�Ð2KÐ2KÐ2Kr1   r0   )rI   rs   s   ` r2   Ú_get_tables_todozPowerBIDataset._get_tables_todoŠ   s   ø€ àLÐLÐLÐL ;ÐLÑLÔLÐLr1   c                óx   ‡— ˆfd„| j                              ¦   «         D ¦   «         }d                     |¦  «        S )z=Create a string of the table schemas for the supplied tables.c                ó"   •— g | ]\  }}|‰v ¯	|‘ŒS r0   r0   )r;   r<   Úschemar   s      €r2   r=   z9PowerBIDataset._get_schema_for_tables.<locals>.<listcomp>�   s.   ø€ ð 
ð 
ð 
Ù$�u˜fÀÈÐ@TÐ@TˆFÐ@TÐ@TÐ@Tr1   rX   )r'   r]   r\   )rI   r   r'   s    ` r2   Ú_get_schema_for_tablesz%PowerBIDataset._get_schema_for_tablesŽ   sM   ø€ ð
ð 
ð 
ð 
Ø(,¬×(:Ò(:Ñ(<Ô(<ð
ñ 
ô 
ˆð �yŠy˜Ñ!Ô!Ð!r1   c                ó¼   — |                       |¦  «        }|€dS |                      |¦  «        }|D ]}|                      |¦  «         Œ|                      |¦  «        S )ú'Get information about specified tables.NúNo (valid) tables requested.)rr   rv   Ú_get_schemarz   )rI   r   Útables_requestedrs   r<   s        r2   r`   zPowerBIDataset.get_table_info•   ss   € ð  ×4Ò4°[ÑAÔAÐØÐ#Ø1Ð1Ø×+Ò+Ð,<Ñ=Ô=ˆØ ð 	$ð 	$ˆEØ×Ò˜UÑ#Ô#Ð#Ð#Ø×*Ò*Ð+;Ñ<Ô<Ð<r1   c              ƒ  óÎ   ‡ K  — ‰                       |¦  «        }|€dS ‰                      |¦  «        }t          j        ˆ fd„|D ¦   «         Ž ƒ d{V —† ‰                      |¦  «        S )r|   Nr}   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r0   )Ú_aget_schemarh   s     €r2   r=   z2PowerBIDataset.aget_table_info.<locals>.<listcomp>©   s'   ø€ ÐQÐQÐQ¸E˜t×0Ò0°Ñ7Ô7ÐQÐQÐQr1   )rr   rv   ÚasyncioÚgatherrz   )rI   r   r   rs   s   `   r2   Úaget_table_infozPowerBIDataset.aget_table_info¡   s†   øè è € ð  ×4Ò4°[ÑAÔAÐØÐ#Ø1Ð1Ø×+Ò+Ð,<Ñ=Ô=ˆÝŒnÐQÐQÐQÐQÀ[ÐQÑQÔQÐRÐRÐRÐRÐRÐRÐRÐRØ×*Ò*Ð+;Ñ<Ô<Ð<r1   r<   ÚNonec                ó’  — 	 |                       d| j        › d|› d�¦  «        }t          |d         d         d         d         d         ¦  «        | j        |<   dS # t          $ r) t
                               d|¦  «         d	| j        |<   Y dS t          $ r1}t
                               d
||¦  «         d	| j        |<   Y d}~dS d}~ww xY w)úGet the schema for a table.úEVALUATE TOPN(rX   ú)Úresultsr   rq   Úrowsú'Timeout while getting table info for %sÚunknownú)Error while getting table info for %s: %sN)Úrunr$   Ú
json_to_mdr'   r   rn   ro   rP   ©rI   r<   ÚresultrQ   s       r2   r~   zPowerBIDataset._get_schema¬   sø   € ð
	,Ø—X’XØK Ô!?ÐKÐKÀ5ÐKÐKÐKñô ˆFõ #-¨V°IÔ->¸qÔ-AÀ(Ô-KÈAÔ-NÈvÔ-VÑ"WÔ"WˆDŒL˜ÑÐÐøÝð 	,ð 	,ð 	,Ý�NŠNÐDÀeÑLÔLÐLØ"+ˆDŒL˜ÑÐÐÐÝð 	,ð 	,ð 	,Ý�NŠNÐFÈÈsÑSÔSÐSØ"+ˆDŒL˜ÑÐÐÐÐÐÐøøøøð	,øøøs   ‚AA Á/CÂ	CÂ&CÃCc              ƒ  ó¢  K  — 	 |                       d| j        › d|› d�¦  «        ƒ d{V —†}t          |d         d         d         d         d         ¦  «        | j        |<   dS # t          $ r) t
                               d	|¦  «         d
| j        |<   Y dS t          $ r1}t
                               d||¦  «         d
| j        |<   Y d}~dS d}~ww xY w)rˆ   r‰   rX   rŠ   Nr‹   r   rq   rŒ   r�   rŽ   r�   )Úarunr$   r‘   r'   r   rn   ro   rP   r’   s       r2   r‚   zPowerBIDataset._aget_schemaº   s  è è € ð
	,ØŸ9š9ØK Ô!?ÐKÐKÀ5ÐKÐKÐKñô ð ð ð ð ð ð ˆFõ #-¨V°IÔ->¸qÔ-AÀ(Ô-KÈAÔ-NÈvÔ-VÑ"WÔ"WˆDŒL˜ÑÐÐøÝ!ð 	,ð 	,ð 	,Ý�NŠNÐDÀeÑLÔLÐLØ"+ˆDŒL˜ÑÐÐÐÝð 	,ð 	,ð 	,Ý�NŠNÐFÈÈsÑSÔSÐSØ"+ˆDŒL˜ÑÐÐÐÐÐÐøøøøð	,øøøs   „AA" Á"/CÂ	CÂ&C	Ã	CÚcommandúdict[str, Any]c                ó$   — d|› ig| j         ddidœS )z(Create the json content for the request.ÚqueryÚincludeNullsT)ÚqueriesÚimpersonatedUserNameÚserializerSettings)r   )rI   r–   s     r2   Ú_create_json_contentz#PowerBIDataset._create_json_contentÈ   s.   € ð ! g -Ð0Ð1Ø$(Ô$?Ø#1°4Ð"8ð
ð 
ð 	
r1   r   c                óæ   — t                                d|¦  «         t          j        | j        |                      |¦  «        | j        d¬¦  «        }|j        dk    r	 dS |                     ¦   «         S )zAExecute a DAX command and return a json representing the results.úRunning command: %sr   )ÚjsonrR   Útimeouté“  úFTokenError: Could not login to PowerBI, please check your credentials.)	rn   ÚdebugÚrequestsÚpostrJ   rž   rR   Ústatus_coder¡   )rI   r–   Úresponses      r2   r�   zPowerBIDataset.runÐ   sy   € å�ŠÐ*¨GÑ4Ô4Ð4Ý”=ØÔØ×*Ò*¨7Ñ3Ô3Ø”LØð	
ñ 
ô 
ˆð Ô 3Ò&Ð&àXðð ð �}Š}‰ŒÐr1   c              ƒ  ó¨  K  — t                                d|¦  «         | j        r¨| j                             | j        | j        |                      |¦  «        d¬¦  «        4 ƒd{V —†	 }|j        dk    r	 ddd¦  «        ƒd{V —† dS |                     |j	        ¬¦  «        ƒ d{V —†}|cddd¦  «        ƒd{V —† S # 1 ƒd{V —†swxY w Y   t          j        ¦   «         4 ƒd{V —†}|                     | j        | j        |                      |¦  «        d¬¦  «        4 ƒd{V —†	 }|j        dk    r%	 ddd¦  «        ƒd{V —† ddd¦  «        ƒd{V —† dS |                     |j	        ¬¦  «        ƒ d{V —†}|cddd¦  «        ƒd{V —† cddd¦  «        ƒd{V —† S # 1 ƒd{V —†swxY w Y   	 ddd¦  «        ƒd{V —† dS # 1 ƒd{V —†swxY w Y   dS )z;Execute a DAX command and return the result asynchronously.r    r   )rR   r¡   r¢   Nr£   r¤   )Úcontent_type)rn   r¥   r(   r§   rJ   rR   rž   Ústatusr¡   r«   ÚaiohttpÚClientSession)rI   r–   r©   Úresponse_jsonÚsessions        r2   r•   zPowerBIDataset.arunß   s_  è è € å�ŠÐ*¨GÑ4Ô4Ð4ØŒ?ð 
	%Ø”×+Ò+ØÔ ØœØ×.Ò.¨wÑ7Ô7Øð	 ,ñ ô ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð
 Ø”? cÒ)Ð)Øcð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð '/§m¢mÀÔAV mÑ&WÔ&WÐ WÐ WÐ WÐ WÐ WÐ W�Ø$ð	%ð 	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%õ Ô(Ñ*Ô*ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%¨gØ—|’|ØÔ ØœØ×.Ò.¨wÑ7Ô7Øð	 $ñ ô ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð
 Ø”? cÒ)Ð)Øcð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð
	%ð 
	%ð 
	%ñ 
	%ô 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð '/§m¢mÀÔAV mÑ&WÔ&WÐ WÐ WÐ WÐ WÐ WÐ W�Ø$ð	%ð 	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð
	%ð 
	%ð 
	%ð 
	%ñ 
	%ô 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð
	%ð 
	%ð 
	%ñ 
	%ô 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%øøøð 
	%ð 
	%ð 
	%ð 
	%ð 
	%ð 
	%sZ   Á'B<Â"B<Â<
CÃ	CÃ&=GÄ$FÄ1GÅ"FÅ7GÆ
F&	Æ&GÆ)F&	Æ*GÇ
GÇG)r   r   r5   r   )rA   rB   r5   rB   )r5   r   )r5   r&   )r5   rS   ©N)r   rb   r5   rc   )rs   r   r5   r   )r   r   r5   r   )r   rb   r5   r   )r<   r   r5   r†   )r–   r   r5   r—   )r–   r   r5   r   )#r+   r,   r-   r.   Ú__annotations__r   r   r   r   r   r$   Údictr'   r(   r3   r   r?   r   rE   ÚpropertyrJ   rR   rV   r^   ra   rr   rv   rz   r`   r…   r~   r‚   rž   r�   r•   r0   r1   r2   r   r      sß  € € € € € € ðð ð €O€O�OØÐÐÑØ"€HÐ"Ð"Ð"Ñ"Ø,0€JÐ0Ð0Ð0Ñ0Ø€EÐÐÐÑØ,0ÐÐ0Ð0Ð0Ñ0Ø%* U°1¸¸rÐ%BÑ%BÔ%BÐÐBÐBÐBÑBØ#˜e°DÐ9Ñ9Ô9€GÐ9Ð9Ð9Ñ9Ø26€JÐ6Ð6Ð6Ñ6ð'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ð
 €Yˆ}¨$Ð/Ñ/Ô/ð@ð @ð @ñ 0Ô/ð@ð €^˜¨$Ð/Ñ/Ô/ðKð Kð Kñ 0Ô/ðKð ðGð Gð Gñ „XðGð ðLð Lð Lñ „XðLð4 ð  ð  ð  ðKð Kð Kð Kð ð%ð %ð %ñ „Xð%ð
 >Bð ð  ð  ð  ð  ð<Mð Mð Mð Mð"ð "ð "ð "ð >Bð
=ð 
=ð 
=ð 
=ð 
=ð >Bð	=ð 	=ð 	=ð 	=ð 	=ð,ð ,ð ,ð ,ð,ð ,ð ,ð ,ð
ð 
ð 
ð 
ðð ð ð ð%ð %ð %ð %ð %ð %r1   r   Újson_contentsú'List[Dict[str, Union[str, int, float]]]Ú
table_namer   r5   r   c                ól  — t          | ¦  «        dk    rdS d}| d                              ¦   «         }|D ]P}|                     dd¦  «                             dd¦  «         |r|                     |› d�d¦  «         |d|› d�z  }ŒQ|dz  }| D ]'}|                     ¦   «         D ]}|d|› d�z  }Œ|dz  }Œ(|S )	z+Converts a JSON object to a markdown table.r   re   ú[ú.ú]z| ú z|
)rm   ÚkeysÚreplacerA   )rµ   r·   Ú	output_mdrR   ÚheaderÚrowr[   s          r2   r‘   r‘   ú   sù   € õ
 ˆ=ÑÔ˜QÒÐØˆrØ€IØ˜AÔ×#Ò#Ñ%Ô%€GØð $ð $ˆØ�Š�s˜CÑ Ô ×(Ò(¨¨bÑ1Ô1Ð1Øð 	1Ø�NŠN˜jÐ+Ð+Ð+¨RÑ0Ô0Ð0Ø�^˜&�^�^�^Ñ#ˆ	ˆ	Ø�Ñ€IØð ð ˆØ—Z’Z‘\”\ð 	'ð 	'ˆEØ˜˜e˜˜˜Ñ&ˆIˆIØ�UÑˆ	ˆ	ØÐr1   r<   c                ón   — d| v r0|                       d¦  «        s|                      d¦  «        sd| › d�S | S )z9Add single quotes around table names that contain spaces.r¼   ú')Ú
startswithÚendswith)r<   s    r2   r9   r9     s@   € à
ˆe€|€|˜E×,Ò,¨SÑ1Ô1€|¸%¿.º.ÈÑ:MÔ:M€|Ø�5ˆ|ˆ|ˆ|ÐØ€Lr1   r±   )rµ   r¶   r·   r   r5   r   )r<   r   r5   r   )"r.   Ú
__future__r   rƒ   ÚloggingÚosÚtypingr   r   r   r   r   r	   r
   r­   r¦   r   Úlangchain_core.pydantic_v1r   r   r   r   Úrequests.exceptionsr   Ú	getLoggerr+   rn   ÚgetenvrG   Úazure.core.credentialsr   r   r‘   r9   r0   r1   r2   ú<module>rÏ      sx  ðØ )Ð )Ø "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 	€	€	€	Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ Là €€€Ø €€€Ø &Ð &Ð &Ð &Ð &Ð &Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ 'Ð 'Ð 'Ð 'Ð 'Ð 'à	ˆÔ	˜8Ñ	$Ô	$€àˆ2Œ9Ð'Ð)MÑNÔN€àð 7Ø6Ð6Ð6Ð6Ð6Ð6ð`%ð `%ð `%ð `%ð `%�Yñ `%ô `%ð `%ðJ !%ðð ð ð ð ð,ð ð ð ð ð r1   