Ë
    µŒjI$  ã                  ó”   — d Z ddl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ZddlmZ ddlmZ ddlmZ dd	lmZ  G d
„ dee«      Zy)z7Loader that loads data from Sharepoint Document Libraryé    )ÚannotationsN)ÚPath)ÚAnyÚDictÚIteratorÚListÚOptional)Ú
BaseLoader)ÚDocument)ÚField)ÚO365BaseLoaderc                  óê   — e Zd ZU dZ ed«      Zded<   	 dZded<   	 dZded	<   	 dZ	ded
<   	 dZ
ded<   	  ej                  «       dz  dz  Zded<   	 dZded<   	 edd„«       Zdd„Zdd„Zdd„Zdd„Zy)ÚSharePointLoaderzLoad  from `SharePoint`..ÚstrÚdocument_library_idNzOptional[str]Úfolder_pathzOptional[List[str]]Ú
object_idsÚ	folder_idFzOptional[bool]Ú	load_authz.credentialszo365_token.txtr   Ú
token_pathÚload_extended_metadatac                ó
   — ddgS )zcReturn required scopes.
        Returns:
            List[str]: A list of required scopes.
        Ú
sharepointÚbasic© )Úselfs    úy/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/document_loaders/sharepoint.pyÚ_scopeszSharePointLoader._scopes%   s   € ð ˜gÐ&Ð&ó    c              #  ó*  K  — 	 ddl m}m} | j	                  «       j                  «       j                  | j                  «      }t        ||«      st        d| j                  › d�«      ‚| j                  �r?|j                  | j                  «      }t        ||«      st        d| j                  › d�«      ‚| j                  |«      D ]ë  }t        |j                  j                  d«      «      }| j                   du r| j#                  |«      }| j$                  du r.| j'                  |«      }|j)                  d	|j*                  i«       | j,                  j/                  |«      D ]L  }	| j                   du r|	j                  d
<   | j$                  du r|	j                  j)                  «       |	–— ŒN Œí | j0                  �r?|j3                  | j0                  «      }t        ||«      st        d| j                  › d�«      ‚| j                  |«      D ]ë  }t        |j                  j                  d«      «      }| j                   du r| j#                  |«      }| j$                  du r.| j'                  |«      }|j)                  d	|j*                  i«       | j,                  j/                  |«      D ]L  }	| j                   du r|	j                  d
<   | j$                  du r|	j                  j)                  «       |	–— ŒN Œí | j4                  rí| j7                  || j4                  «      D ]Î  }t        |j                  j                  d«      «      }| j                   du r| j#                  |«      }| j$                  du r| j'                  |«      }| j,                  j/                  |«      D ]L  }	| j                   du r|	j                  d
<   | j$                  du r|	j                  j)                  «       |	–— ŒN ŒÐ | j                  �st| j0                  �sf| j4                  �sX|j9                  «       }t        ||«      st        d«      ‚| j                  |«      D �]  }t        |j                  j                  d«      «      }| j                   du r| j#                  |«      }| j$                  du r| j'                  |«      }| j,                  j/                  |«      D ]˜  }
|
j                  j)                  |j                  «       | j                   du r|
j                  d
<   | j$                  du rB|
j                  j)                  «       |
j                  j)                  d	|j*                  i«       |
–— Œš �Œ yyyy# t        $ r t        d«      ‚w xY w­w)z¦
        Load documents lazily. Use this when working at a large scale.
        Yields:
            Document: A document object representing the parsed blob.
        r   )ÚDriveÚFolderzAO365 package not found, please install it with `pip install o365`zThere isn't a Drive with id Ú.zThere isn't a folder with path ÚidTÚsource_full_urlÚauthorized_identitieszUnable to fetch root folderN)Ú
O365.driver!   r"   ÚImportErrorÚ_authÚstorageÚ	get_driver   Ú
isinstanceÚ
ValueErrorr   Úget_item_by_pathÚ_load_from_folderr   ÚmetadataÚgetr   r&   r   Úget_extended_metadataÚupdateÚweb_urlÚ_blob_parserÚ
lazy_parser   Úget_itemr   Ú_load_from_object_idsÚget_root_folder)r   r!   r"   ÚdriveÚtarget_folderÚblobÚfile_idÚauth_identitiesÚextended_metadataÚparsed_blobÚ	blob_parts              r   Ú	lazy_loadzSharePointLoader.lazy_load-   sö  è ø€ ð	ß0ð
 —
‘
“×$Ñ$Ó&×0Ñ0°×1IÑ1IÓJˆÜ˜% Ô'ÜÐ;¸D×<TÑ<TÐ;UÐUVÐWÓXÐXØ×ÓØ!×2Ñ2°4×3CÑ3CÓDˆMÜ˜m¨VÔ4Ü Ð#BÀ4×CSÑCSÐBTÐTUÐ!VÓWÐWØ×.Ñ.¨}Ö=�Ü˜dŸm™m×/Ñ/°Ó5Ó6�Ø—>‘> TÑ)Ø&*×&@Ñ&@ÀÓ&I�OØ×.Ñ.°$Ñ6Ø(,×(BÑ(BÀ7Ó(KÐ%Ø%×,Ñ,Ð.?À×AVÑAVÐ-WÔXØ#'×#4Ñ#4×#?Ñ#?ÀÖ#E�KØ—~‘~¨Ñ-ØHW˜×,Ñ,Ð-DÑEØ×2Ñ2°dÑ:Ø#×,Ñ,×3Ñ3Ð4EÔFØ%Ó%ñ $Fð >ð �>‹>Ø!ŸN™N¨4¯>©>Ó:ˆMÜ˜m¨VÔ4Ü Ð#BÀ4×CSÑCSÐBTÐTUÐ!VÓWÐWØ×.Ñ.¨}Ö=�Ü˜dŸm™m×/Ñ/°Ó5Ó6�Ø—>‘> TÑ)Ø&*×&@Ñ&@ÀÓ&I�OØ×.Ñ.°$Ñ6Ø(,×(BÑ(BÀ7Ó(KÐ%Ø%×,Ñ,Ð.?À×AVÑAVÐ-WÔXØ#'×#4Ñ#4×#?Ñ#?ÀÖ#E�KØ—~‘~¨Ñ-ØHW˜×,Ñ,Ð-DÑEØ×2Ñ2°dÑ:Ø#×,Ñ,×3Ñ3Ð4EÔFØ%Ó%ñ $Fð >ð �?Š?Ø×2Ñ2°5¸$¿/¹/ÖJ�Ü˜dŸm™m×/Ñ/°Ó5Ó6�Ø—>‘> TÑ)Ø&*×&@Ñ&@ÀÓ&I�OØ×.Ñ.°$Ñ6Ø(,×(BÑ(BÀ7Ó(KÐ%Ø#'×#4Ñ#4×#?Ñ#?ÀÖ#E�KØ—~‘~¨Ñ-ØHW˜×,Ñ,Ð-DÑEØ×2Ñ2°dÑ:Ø#×,Ñ,×3Ñ3Ð4EÔFØ%Ó%ñ $Fð Kð × Ó  D§N£N°d·o³oØ!×1Ñ1Ó3ˆMÜ˜m¨VÔ4Ü Ð!>Ó?Ð?Ø×.Ñ.¨}×=�Ü˜dŸm™m×/Ñ/°Ó5Ó6�Ø—>‘> TÑ)Ø&*×&@Ñ&@ÀÓ&I�OØ×.Ñ.°$Ñ6Ø(,×(BÑ(BÀ7Ó(KÐ%Ø!%×!2Ñ!2×!=Ñ!=¸dÖ!C�IØ×&Ñ&×-Ñ-¨d¯m©mÔ<Ø—~‘~¨Ñ-ØFU˜	×*Ñ*Ð+BÑCØ×2Ñ2°dÑ:Ø!×*Ñ*×1Ñ1Ð2CÔDØ!×*Ñ*×1Ñ1Ø.°×0EÑ0EÐFôð $“Oò "Dñ >ð	 7F NÐ øôo ò 	ÜØSóð ð	üs   ‚V„U; ŒU/VÕ;VÖVc                ó8  — | j                  «       }|j                  d«      }d| j                  › d|› d�}dd|› �i}t        j                  d||¬«      }|j                  «       }g }|j                  d	«      D ]   }	|	j                  d
«      sŒ|	j                  d
«      j                  d«      xsB |	j                  d
«      j                  d«      xs  |	j                  d
«      j                  d«      }
|
sŒ||
j                  d«      }|sŒ�|j                  |«       Œ¢ |S )a  
        Retrieve the access identities (user/group emails) for a given file.
        Args:
            file_id (str): The ID of the file.
        Returns:
            List: A list of group names (email addresses) that have
                  access to the file.
        Úaccess_tokenú(https://graph.microsoft.com/v1.0/drives/ú/items/z/permissionsÚAuthorizationúBearer ÚGET©ÚheadersÚvalueÚgrantedToV2ÚsiteUserÚuserÚgroupÚemail)Ú_fetch_access_tokenr1   r   ÚrequestsÚrequestÚjsonÚappend)r   r=   ÚdatarD   ÚurlrK   ÚresponseÚaccess_listÚgroup_namesÚaccess_dataÚ	site_datarQ   s               r   r&   z&SharePointLoader.authorized_identities�   s  € ð ×'Ñ'Ó)ˆØ—x‘x Ó/ˆðØ×(Ñ(Ð)¨°°	¸ðGð 	ð # g¨l¨^Ð$<Ð=ˆÜ×#Ñ# E¨3¸Ô@ˆØ—m‘m“oˆàˆà&Ÿ?™?¨7Ö3ˆKØ�‰˜}Õ-à —_‘_ ]Ó3×7Ñ7¸
ÓCò EØ#Ÿ™¨Ó6×:Ñ:¸6ÓBòEà#Ÿ™¨Ó6×:Ñ:¸7ÓCð ò
 Ø%ŸM™M¨'Ó2�EÚØ#×*Ñ*¨5Õ1ð 4ð Ðr   c                ó¨   — t        | j                  d¬«      5 }|j                  «       }ddd«       t        j                  «      }|S # 1 sw Y   Œ xY w)z|
        Fetch the access token from the token file.
        Returns:
            The access token as a dictionary.
        zutf-8)ÚencodingN)Úopenr   ÚreadrU   Úloads)r   ÚfÚsrW   s       r   rR   z$SharePointLoader._fetch_access_token£   s?   € ô �$—/‘/¨GÕ4¸Ø—‘“ˆA÷ 5ä�z‰z˜!‹}ˆØˆ÷ 5Ð4ús   ˜AÁAc                óè  — | j                  «       }|j                  d«      }d| j                  › d|› d�}dd|› �i}t        j                  d||¬«      }|j                  «       }|j                  d	d
«      |j                  di «      j                  di «      j                  dd«      |j                  di «      j                  dd«      j                  d«      d   dz   |j                  dd«      z   dœ}|S )a  
        Retrieve extended metadata for a file in SharePoint.
        As of today, following fields are supported in the extended metadata:
        - size: size of the source file.
        - owner: display name of the owner of the source file.
        - full_path: pretty human readable path of the source file.
        Args:
            file_id (str): The ID of the file.
        Returns:
            dict: A dictionary containing the extended metadata of the file,
                  including size, owner, and full path.
        rD   rE   rF   z,?$select=size,createdBy,parentReference,namerG   rH   rI   rJ   Úsizer   Ú	createdByrO   ÚdisplayNameÚ ÚparentReferenceÚpathÚ:éÿÿÿÿÚ/Úname)rf   ÚownerÚ	full_path)rR   r1   r   rS   rT   rU   Úsplit)	r   r=   rW   rD   rX   rK   rY   r0   Ústaged_metadatas	            r   r2   z&SharePointLoader.get_extended_metadata®   sÿ   € ð ×'Ñ'Ó)ˆØ—x‘x Ó/ˆà6Ø×'Ñ'Ð(¨°¨yØ:ð;ð 	ð
 # g¨l¨^Ð$<Ð=ˆÜ×#Ñ# E¨3¸Ô@ˆØ—=‘=“?ˆà—L‘L ¨Ó+Ø—\‘\ +¨rÓ2ß‰S�˜‹_ß‰S� Ó#Ø!Ÿ™Ð&7¸Ó<ß‰S�˜‹_ß‰U�3‹Z˜ñð ñð �l‰l˜6 2Ó&ñ	'ñ

ˆð Ðr   )Úreturnz	List[str])rt   zIterator[Document])r=   r   rt   r   )rt   r   )r=   r   rt   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__r   r   r   r   r   Úhomer   r   Úpropertyr   rB   r&   rR   r2   r   r   r   r   r      s£   … Ù"á$ S›zÐ˜Ó)ØGØ!%€K�Ó%Ø4Ø&*€JÐ#Ó*Ø4Ø#€Iˆ}Ó#Ø2Ø %€Iˆ~Ó%Ø4Ø �t—y‘y“{ ^Ñ3Ð6FÑF€J�ÓFØ2Ø-2Ð˜NÓ2ØHàò'ó ð'óR$óh óD	ô"r   r   )rx   Ú
__future__r   rU   Úpathlibr   Útypingr   r   r   r   r	   rS   Úlangchain_core.document_loadersr
   Úlangchain_core.documentsr   Úpydanticr   Ú.langchain_community.document_loaders.base_o365r   r   r   r   r   Ú<module>rƒ      s8   ðÙ =å "ã Ý ß 6Õ 6ã Ý 6Ý -Ý õô
}�~ zõ }r   