§
    æ˜ºh>  ã                   ó|   — d dl mZmZmZmZ d dlZd dlmZ d dlm	Z	 dZ
e
dz   Ze
dz   Ze
dz   Z G d	„ d
e	¦  «        ZdS )é    )ÚAnyÚDictÚListÚOptionalN)ÚDocument)Ú
BaseLoaderzhttps://api.notion.com/v1z/databases/{database_id}/queryz/pages/{page_id}z/blocks/{block_id}/childrenc            	       óú   — e Zd ZdZ	 ddededee         ddfd„Zdee	         fd	„Z
d
difdeeef         deeeef                  fd„Zdeeef         de	fd„Zddededefd„Zdi fdededeeef         defd„ZdS )ÚNotionDBLoadera.  Load from `Notion DB`.

    Reads content from pages within a Notion Database.
    Args:
        integration_token (str): Notion integration token.
        database_id (str): Notion database id.
        request_timeout_sec (int): Timeout for Notion requests in seconds.
            Defaults to 10.
    é
   Úintegration_tokenÚdatabase_idÚrequest_timeout_secÚreturnNc                 óš   — |st          d¦  «        ‚|st          d¦  «        ‚|| _        || _        d| j        z   dddœ| _        || _        dS )zInitialize with parameters.z"integration_token must be providedzdatabase_id must be providedzBearer zapplication/jsonz
2022-06-28)ÚAuthorizationzContent-TypezNotion-VersionN)Ú
ValueErrorÚtokenr   Úheadersr   )Úselfr   r   r   s       úu/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/document_loaders/notiondb.pyÚ__init__zNotionDBLoader.__init__   sp   € ð !ð 	CÝÐAÑBÔBÐBØð 	=ÝÐ;Ñ<Ô<Ð<à&ˆŒ
Ø&ˆÔà&¨¬Ñ3Ø.Ø*ð
ð 
ˆŒð
 $7ˆÔ Ð Ð ó    c                 ób   ‡ — ‰                       ¦   «         }t          ˆ fd„|D ¦   «         ¦  «        S )zqLoad documents from the Notion database.
        Returns:
            List[Document]: List of documents.
        c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S )N)Ú	load_page)Ú.0Úpage_summaryr   s     €r   ú	<genexpr>z&NotionDBLoader.load.<locals>.<genexpr>5   s/   øè è € ÐTÐT°\�D—N’N <Ñ0Ô0ÐTÐTÐTÐTÐTÐTr   )Ú_retrieve_page_summariesÚlist)r   Úpage_summariess   ` r   ÚloadzNotionDBLoader.load.   s9   ø€ ð
 ×6Ò6Ñ8Ô8ˆåÐTÐTÐTÐTÀ^ÐTÑTÔTÑTÔTÐTr   Ú	page_sizeéd   Ú
query_dictc                 ó&  — g }	 |                       t                               | j        ¬¦  «        d|¬¦  «        }|                     |                     d¦  «        ¦  «         |                     d¦  «        sn|                     d¦  «        |d<   Œ�|S )	z)Get all the pages from a Notion database.T)r   ÚPOST)Úmethodr%   ÚresultsÚhas_moreÚnext_cursorÚstart_cursor)Ú_requestÚDATABASE_URLÚformatr   ÚextendÚget)r   r%   ÚpagesÚdatas       r   r   z'NotionDBLoader._retrieve_page_summaries7   sž   € ð ')ˆð	AØ—=’=Ý×#Ò#°Ô0@Ð#ÑAÔAØØ%ð !ñ ô ˆDð �LŠL˜Ÿš )Ñ,Ô,Ñ-Ô-Ð-à—8’8˜JÑ'Ô'ð Øà)-¯ª°-Ñ)@Ô)@ˆJ�~Ñ&ð	Að ˆr   r   c                 ó   — |d         }i }|d                               ¦   «         D �]°\  }}|d         }|dk    r |d         r|d         d         d         nd}�ne|dk    r |d         r|d         d         d         nd}�n?|d	k    r|d	         rd
„ |d	         D ¦   «         ng }�n|dk    r
|d         }�n|dk    r*|d         r|d         d         › d|d         d         › �nd}nÛ|dk    r|d         r|d         d         nd}n¼|dk    r|d         rd„ |d         D ¦   «         ng }n™|dk    r|d         r|d         nd}n€|dk    r|d         r|d         nd}ng|dk    r|d         r|d         nd}nN|dk    r	|d         }n?|dk    r	|d         }n0|dk    r	|d         }n!|dk    r|d         r|d         d         nd}nd}|||                     ¦   «         <   �Œ²||d<   t          |                      |¦  «        |¬¦  «        S )z\Read a page.

        Args:
            page_summary: Page summary from Notion API.
        ÚidÚ
propertiesÚtypeÚ	rich_textr   Ú
plain_textNÚtitleÚmulti_selectc                 ó   — g | ]
}|d          ‘ŒS ©Úname© ©r   Úitems     r   ú
<listcomp>z,NotionDBLoader.load_page.<locals>.<listcomp>g   s   € ÐHÐHÐH d�T˜&”\ÐHÐHÐHr   ÚurlÚ	unique_idÚprefixú-ÚnumberÚstatusr>   Úpeoplec                 ó   — g | ]
}|d          ‘ŒS r=   r?   r@   s     r   rB   z,NotionDBLoader.load_page.<locals>.<listcomp>w   s   € ÐBÐBÐB d�T˜&”\ÐBÐBÐBr   ÚdateÚlast_edited_timeÚcreated_timeÚcheckboxÚemailÚselect)Úpage_contentÚmetadata)ÚitemsÚlowerr   Ú_load_blocks)r   r   Úpage_idrR   Ú	prop_nameÚ	prop_dataÚ	prop_typeÚvalues           r   r   zNotionDBLoader.load_pageM   sú  € ð ˜tÔ$ˆð $&ˆà$0°Ô$>×$DÒ$DÑ$FÔ$Fð 8	0ñ 8	0Ñ ˆI�yØ! &Ô)ˆIà˜KÒ'Ð'ð ! Ô-ð�I˜kÔ*¨1Ô-¨lÔ;Ð;àð ‘ð
 ˜gÒ%Ð%à;DÀWÔ;MÐW�I˜gÔ& qÔ)¨,Ô7Ð7ÐSWð ‘ð ˜nÒ,Ð,ð ! Ô0ðÐHÐH¨i¸Ô.GÐHÑHÔHÐHàð ‘ð
 ˜eÒ#Ð#Ø! %Ô(�‘Ø˜kÒ)Ð)ð ! Ô-ð�y Ô-¨hÔ7Ð\Ð\¸)ÀKÔ:PÐQYÔ:ZÐ\Ð\Ð\àð �ð
 ˜hÒ&Ð&Ø7@ÀÔ7JÐT˜	 (Ô+¨FÔ3Ð3ÐPT��Ø˜hÒ&Ð&ð ! Ô*ðÐBÐB¨i¸Ô.AÐBÑBÔBÐBàð �ð
 ˜fÒ$Ð$Ø-6°vÔ->ÐH˜	 &Ô)Ð)ÀD��ØÐ0Ò0Ð0ð !Ð!3Ô4ð�IÐ0Ô1Ð1àð �ð
 ˜nÒ,Ð,Ø5>¸~Ô5NÐX˜	 .Ô1Ð1ÐTX��Ø˜jÒ(Ð(Ø! *Ô-��Ø˜gÒ%Ð%Ø! 'Ô*��Ø˜hÒ&Ð&Ø! (Ô+��Ø˜hÒ&Ð&Ø7@ÀÔ7JÐT˜	 (Ô+¨FÔ3Ð3ÐPT��à�à*/ˆH�Y—_’_Ñ&Ô&Ñ'Ñ'à ˆ�‰å T×%6Ò%6°wÑ%?Ô%?È(ÐSÑSÔSÐSr   r   Úblock_idÚnum_tabsc                 ó<  — g }|}|�r|                       t                               |¬¦  «        ¦  «        }|d         D ]²}||d                  }d|vrŒg }|d         D ]-}	d|	v r'|                     d|z  |	d         d         z   ¦  «         Œ.|d         r5|                      |d	         |d
z   ¬¦  «        }
|                     |
¦  «         |                     d                     |¦  «        ¦  «         Œ³|                     d¦  «        }|�°d                     |¦  «        S )zRead a block and its children.)r[   r)   r7   r8   Útextú	ÚcontentÚhas_childrenr5   é   )r\   ú
r+   )r-   Ú	BLOCK_URLr/   ÚappendrU   Újoinr1   )r   r[   r\   Úresult_lines_arrÚcur_block_idr3   ÚresultÚ
result_objÚcur_result_text_arrr8   Úchildren_texts              r   rU   zNotionDBLoader._load_blocks–   s\  € à&(ÐØ$ˆàñ 	3Ø—=’=¥×!1Ò!1¸<Ð!1Ñ!HÔ!HÑIÔIˆDà˜yœ/ð Hð H�Ø# F¨6¤NÔ3�
à jÐ0Ð0Øà13Ð#à!+¨KÔ!8ð ð �IØ Ð*Ð*Ø+×2Ò2Ø  8™O¨i¸Ô.?À	Ô.JÑJñô ð øð ˜.Ô)ð >Ø$(×$5Ò$5Ø˜tœ¨x¸!©|ð %6ñ %ô %�Mð (×.Ò.¨}Ñ=Ô=Ð=à ×'Ò'¨¯	ª	Ð2EÑ(FÔ(FÑGÔGÐGÐGàŸ8š8 MÑ2Ô2ˆLð3 ñ 	3ð6 �yŠyÐ)Ñ*Ô*Ð*r   ÚGETrC   r(   c                 ó˜   — t          j        ||| j        || j        ¬¦  «        }|                     ¦   «          |                     ¦   «         S )N)r   ÚjsonÚtimeout)ÚrequestsÚrequestr   r   Úraise_for_statusro   )r   rC   r(   r%   Úress        r   r-   zNotionDBLoader._request¸   sQ   € õ ÔØØØ”LØØÔ,ð
ñ 
ô 
ˆð 	×ÒÑÔÐØ�xŠx‰zŒzÐr   )r   )r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   Úintr   r   r   r"   r   r   r   r   rU   r-   r?   r   r   r
   r
      s€  € € € € € ðð ð .0ð	7ð 7àð7ð ð7ð & cœ]ð	7ð
 
ð7ð 7ð 7ð 7ð*U�d˜8”nð Uð Uð Uð Uð -8¸Ð+=ðð Ø˜s C˜xœ.ðà	ˆd�3˜�8ŒnÔ	ðð ð ð ð,GT d¨3°¨8¤nð GT¸ð GTð GTð GTð GTðR +ð  + Sð  +°Cð  +Àð  +ð  +ð  +ð  +ðF ',È"ðð ØðØ #ðØ9=¸cÀ3¸h¼ðà	ðð ð ð ð ð r   r
   )Útypingr   r   r   r   rq   Úlangchain_core.documentsr   Ú)langchain_community.document_loaders.baser   ÚNOTION_BASE_URLr.   ÚPAGE_URLrd   r
   r?   r   r   ú<module>r€      sº   ðØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à €€€Ø -Ð -Ð -Ð -Ð -Ð -à @Ð @Ð @Ð @Ð @Ð @à-€ØÐ!AÑA€ØÐ/Ñ/€ØÐ;Ñ;€	ðuð uð uð uð u�Zñ uô uð uð uð ur   