Ë
    µŒjô  ã                   óª   — d Z ddlmZ ddlmZmZmZmZmZ ddl	Z	ddl
mZ ddlmZmZmZmZmZ ddlmZmZ ddlmZ  G d	„ d
e«      Z G d„ dee«      Zy)z!Loads data from OneNote Notebooksé    )ÚPath)ÚAnyÚDictÚIteratorÚListÚOptionalN)ÚDocument)Ú	BaseModelÚFieldÚFilePathÚ	SecretStrÚmodel_validator)ÚBaseSettingsÚSettingsConfigDict)Ú
BaseLoaderc                   ó\   — e Zd ZU  ed«      Zeed<    ed«      Zeed<    e	ddddd¬	«      Z
y
)Ú_OneNoteGraphSettings.Ú	client_idÚclient_secretFTz.envÚ	MS_GRAPH_Úignore)Úcase_sensitiveÚpopulate_by_nameÚenv_fileÚ
env_prefixÚextraN)Ú__name__Ú
__module__Ú__qualname__r   r   ÚstrÚ__annotations__r   r   r   Úmodel_config© ó    úv/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/document_loaders/onenote.pyr   r      s7   … Ù˜3“Z€IˆsÓÙ$ S›z€M�9Ó)á%ØØØØØô�Lr$   r   c                   ó¶  — e Zd ZU dZ ee¬«      Zeed<   	 dZe	ed<   	 dZ
eed<   	 dZeed	<   	 d
Zeed<   	  ej                  «       dz  dz  Zeed<   	 dZee   ed<   	 dZee   ed<   	 dZee   ed<   	 dZeee      ed<   	  ed¬«      ededefd„«       «       Zdee   fd„Zdedefd„Z e!deeef   fd„«       Z"e!dee   fd„«       Z#d d„Z$e!defd„«       Z%y)!ÚOneNoteLoaderz"Load pages from OneNote notebooks.)Údefault_factoryÚsettingsFÚauth_with_tokenÚ Úaccess_tokenz+https://graph.microsoft.com/v1.0/me/onenoteÚonenote_api_base_urlz,https://login.microsoftonline.com/consumers/Úauthority_urlz.credentialszonenote_graph_token.txtÚ
token_pathNÚnotebook_nameÚsection_nameÚ
page_titleÚ
object_idsÚbefore)ÚmodeÚvaluesÚreturnc                 óV   — d|v r$t        |d   t        «      rt        di |d   ¤Ž|d<   |S )zInitialize the class.r)   r#   )Ú
isinstanceÚdictr   )Úclsr6   s     r%   ÚinitzOneNoteLoader.init9   s6   € ð ˜Ñ¤J¨v°jÑ/AÄ4Ô$HÜ!6Ñ!L¸À
Ñ9KÑ!LˆF�:ÑØˆr$   c              #   óì  K  — | j                  «        	 ddlm} | j                  �r| j                  D ]b  }| j                  |«      } ||d«      }d}|j                  }|r|j                  d¬«      }|j                  d	d¬
«      }t        |d|i¬«      –— Œd y| j                  }|dk7  r²t        j                  || j                  d¬«      }	|	j                  «        |	j                  «       }
|
d   D ]U  }|d   }| j                  |«      } ||d«      }d}|j                  }|r|j                  d	d¬
«      }t        d|i¬«      –— ŒW d|
v r|
d   }nd}|dk7  rŒ±yy# t        $ r t        d«      ‚w xY w­w)zÌ
        Get pages from OneNote notebooks.

        Returns:
            A list of Documents with attributes:
                - page_content
                - metadata
                    - title
        r   )ÚBeautifulSoupzJbeautifulsoup4 package not found, please install it with `pip install bs4`Nzhtml.parserr+   T)ÚstripÚ
)Ú	separatorr?   Útitle)Úpage_contentÚmetadataé
   ©ÚheadersÚtimeoutÚvalueÚidz@odata.nextLink)Ú_authÚbs4r>   ÚImportErrorr3   Ú_get_page_contentrB   Úget_textr	   Ú_urlÚrequestsÚgetÚ_headersÚraise_for_statusÚjson)Úselfr>   Ú	object_idÚpage_content_htmlÚsoupr2   Ú	title_tagrC   Úrequest_urlÚresponseÚpagesÚpageÚpage_ids                r%   Ú	lazy_loadzOneNoteLoader.lazy_loadA   s”  è ø€ ð 	�
‰
Œð	Ý)ð �?‰?Ð&Ø!Ÿ_œ_�	Ø$(×$:Ñ$:¸9Ó$EÐ!Ù$Ð%6¸ÓF�Ø�
Ø ŸJ™J�	ÙØ!*×!3Ñ!3¸$Ð!3Ó!?�JØ#Ÿ}™}°tÀ4˜}ÓH�ÜØ!-¸À*Ð8Môó ñ -ð Ÿ)™)ˆKà Ò#Ü#Ÿ<™<¨¸T¿]¹]ÐTVÔW�Ø×)Ñ)Ô+Ø Ÿ™›�à! 'œN�DØ" 4™j�GØ(,×(>Ñ(>¸wÓ(GÐ%Ù(Ð):¸MÓJ�DØ!#�JØ $§
¡
�IÙ Ø'+§}¡}¸tÈ4 }Ó'P˜Ü"Ø%1¸WÀjÐ<Qôó ð +ð %¨Ñ-Ø"'Ð(9Ñ":‘Kà"$�Kð)  Õ#øô+ ò 	Üð$óð ð	üs"   ‚E4”E šD?E4ÅE4ÅE1Å1E4r_   c                 ó¤   — | j                   d|› d�z   }t        j                  || j                  d¬«      }|j	                  «        |j
                  S )z!Get page content from OneNote APIz/pages/z/contentrE   rF   )r-   rQ   rR   rS   rT   Útext)rV   r_   r[   r\   s       r%   rN   zOneNoteLoader._get_page_contentz   sG   € à×/Ñ/°G¸G¸9ÀHÐ2MÑMˆÜ—<‘< °T·]±]ÈBÔOˆØ×!Ñ!Ô#Ø�}‰}Ðr$   c                 ó$   — dd| j                   › �iS )z*Return headers for requests to OneNote APIÚAuthorizationzBearer )r,   ©rV   s    r%   rS   zOneNoteLoader._headers�   s!   € ð ˜w t×'8Ñ'8Ð&9Ð:ð
ð 	
r$   c                 ó   — dgS )zReturn required scopes.z
Notes.Readr#   re   s    r%   Ú_scopeszOneNoteLoader._scopesˆ   s   € ð ˆ~Ðr$   c                 óT  — | j                   dk7  ry| j                  r:| j                  j                  d«      5 }|j	                  «       | _         ddd«       y	 ddlm}  || j                  j                  | j                  j                  j                  «       | j                  ¬«      }|j                  | j                  «      }t        d«       t        |«       t!        d	«      }|j#                  d
«      d   j#                  d«      d   }|j%                  || j                  ¬«      }|d   | _         	 | j                  j&                  j)                  «       s&| j                  j&                  j+                  d¬«       | j                  j                  d«      5 }|j/                  | j                   «       ddd«       y# 1 sw Y   yxY w# t        $ r}t        d«      |‚d}~ww xY w# t,        $ r,}t-        d| j                  j&                  › d�dz   «      |‚d}~ww xY w# 1 sw Y   yxY w)z%Authenticate with Microsoft Graph APIr+   NÚrr   )ÚConfidentialClientApplicationzAMSAL package not found, please install it with `pip install msal`)r   Úclient_credentialÚ	authorityz(Visit the following url to give consent:z"Paste the authenticated url here:
zcode=é   Ú&)ÚcodeÚscopesr,   T)ÚparentszCould not create the folder Ú zto store the access token.Úw)r,   r*   r/   ÚopenÚreadÚmsalrj   rM   r)   r   r   Úget_secret_valuer.   Úget_authorization_request_urlrg   ÚprintÚinputÚsplitÚ#acquire_token_by_authorization_codeÚparentÚexistsÚmkdirÚ	ExceptionÚwrite)	rV   Ú
token_filerj   ÚeÚclient_instanceÚauthorization_request_urlÚauthorization_urlÚauthorization_codeÚaccess_token_jsons	            r%   rK   zOneNoteLoader._auth�   sø  € à×Ñ Ò"Øà×ÒØ—‘×%Ñ% cÔ*¨jØ$.§O¡OÓ$5�Ô!÷ +Ð*ðÝ>ñ <ØŸ-™-×1Ñ1Ø"&§-¡-×"=Ñ"=×"NÑ"NÓ"PØ×,Ñ,ôˆOð )8×(UÑ(UØ—‘ó)Ð%ô Ð<Ô=ÜÐ+Ô,Ü %Ð&KÓ LÐà!2×!8Ñ!8¸Ó!AÀ!Ñ!D×!JÑ!JÈ3Ó!OÐPQÑ!RÐØ /× SÑ SØ'°·±ð !Tó !Ðð !2°.Ñ AˆDÔðØ—‘×-Ñ-×4Ñ4Ô6Ø—O‘O×*Ñ*×0Ñ0¸Ð0Ô>ð —‘×%Ñ% cÔ*¨jØ× Ñ  ×!2Ñ!2Ô3÷ +Ð*÷M +Ð*ûô
 ò Ü!ØWóàðûðûô6 ò ÜØ2°4·?±?×3IÑ3IÐ2JÈ!ÐLØ2ñ3óð ðûðú÷ +Ð*úsH   ¸F=ÁG	 Ä3A
G& ÆHÆ=GÇ		G#ÇGÇG#Ç&	HÇ/'HÈHÈH'c                 ó  — g }g }g }|j                  d«       | j                  �C|j                  dd| j                  j                  dd«      › d�z   «       |j                  d«       | j                  �C|j                  dd| j                  j                  dd«      › d�z   «       |j                  d«       | j                  �2|j                  d	d| j                  j                  dd«      › d�z   «       t        |«      d
kD  r#|j                  ddj                  |«      z   «       t        |«      d
kD  r#|j                  ddj                  |«      z   «       dj                  |«      }|dk7  rd|z   }| j                  › d|› �S )z8Create URL for getting page ids from the OneNoteApi API.z
$select=idz"parentNotebook/displayName%20eq%20Ú'rr   z%20ÚparentNotebookz!parentSection/displayName%20eq%20ÚparentSectionztitle%20eq%20r   z$expand=Ú,z$filter=z	%20and%20rn   r+   Ú?z/pages)Úappendr0   Úreplacer1   r2   ÚlenÚjoinr-   )rV   Úquery_params_listÚfilter_listÚexpand_listÚquery_paramss        r%   rP   zOneNoteLoader._url¼   s’  € ð ÐØˆØˆà× Ñ  Ô.Ø×ÑÐ)Ø×ÑØ4Ø�d×(Ñ(×0Ñ0°°eÓ<Ð=¸QÐ?ñ@ôð ×ÑÐ/Ô0Ø×ÑÐ(Ø×ÑØ3Ø�d×'Ñ'×/Ñ/°°UÓ;Ð<¸AÐ>ñ?ôð ×Ñ˜Ô/Ø�?‰?Ð&Ø×ÑØ A d§o¡o×&=Ñ&=¸cÀ5Ó&IÐ%JÈ!Ð"LÑLôô ˆ{Ó˜aÒØ×$Ñ$ Z°#·(±(¸;Ó2GÑ%GÔHÜˆ{Ó˜aÒØ×$Ñ$ Z°+×2BÑ2BÀ;Ó2OÑ%OÔPà—x‘xÐ 1Ó2ˆØ˜2ÒØ Ñ-ˆLØ×+Ñ+Ð,¨F°<°.ÐAÐAr$   )r7   N)&r   r   r   Ú__doc__r   r   r)   r!   r*   Úboolr,   r    r-   r.   r   Úhomer/   r   r0   r   r1   r2   r3   r   r   Úclassmethodr   r   r<   r   r	   r`   rN   ÚpropertyrS   rg   rK   rP   r#   r$   r%   r'   r'   !   so  … Ù,á&+Ð<QÔ&R€HÐ#ÓRØ6Ø!€O�TÓ!ØIØ€L�#ÓØØ MÐ˜#ÓMØ0ØG€M�3ÓGØ1Ø$˜4Ÿ9™9›;¨Ñ7Ð:SÑS€J�ÓSØ;Ø#'€M�8˜C‘=Ó'Ø!Ø"&€L�(˜3‘-Ó&Ø Ø $€J�˜‘Ó$Ø Ø&*€J�˜˜c™Ñ#Ó*Ø4á˜(Ô#Øð˜$ð  3ò ó ó $ðð7%˜8 HÑ-ó 7%ðr¨ð °ó ð ð
˜$˜s C˜x™.ò 
ó ð
ð ð˜˜c™ò ó ðó-4ð^ ð B�cò  Bó ñ Br$   r'   )r—   Úpathlibr   Útypingr   r   r   r   r   rQ   Úlangchain_core.documentsr	   Úpydanticr
   r   r   r   r   Úpydantic_settingsr   r   Ú)langchain_community.document_loaders.baser   r   r'   r#   r$   r%   Ú<module>r¢      sG   ðÙ 'å ß 6Õ 6ã Ý -÷õ ÷ ?å @ô
˜Lô 
ô|B�J 	õ |Br$   