§
    æ˜ºh}  ã                   ó¢   — d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZ ddlmZ ddlmZ  ej        e¦  «        Z G d„ d	e¦  «        ZdS )
z`Load documents from Evernote.

https://gist.github.com/foxmask/7b29c43a161e001ff04afdb2f181e31c
é    N)Ú	b64decode)Ústrptime)ÚAnyÚDictÚIteratorÚListÚOptional)ÚDocument)Ú
BaseLoaderc                   óê   — e Zd ZdZddedefd„Zdee         fd„Z	e
dedefd	„¦   «         Ze
d
edefd„¦   «         Ze
ddedee         defd„¦   «         Ze
dedeeeef                  fd„¦   «         ZdS )ÚEverNoteLoadera­  Load from `EverNote`.

    Loads an EverNote notebook export file e.g. my_notebook.enex into Documents.
    Instructions on producing this file can be found at
    https://help.evernote.com/hc/en-us/articles/209005557-Export-notes-and-notebooks-as-ENEX-or-HTML

    Currently only the plain text in the note is extracted and stored as the contents
    of the Document, any non content metadata (e.g. 'author', 'created', 'updated' etc.
    but not 'content-raw' or 'resource') tags on the note will be extracted and stored
    as metadata on the Document.

    Args:
        file_path (str): The path to the notebook export with a .enex extension
        load_single_document (bool): Whether or not to concatenate the content of all
            notes into a single long Document.
        If this is set to True (default) then the only metadata on the document will be
            the 'source' which contains the file name of the export.
    TÚ	file_pathÚload_single_documentc                 ó"   — || _         || _        dS )zInitialize with file path.N)r   r   )Úselfr   r   s      úu/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/document_loaders/evernote.pyÚ__init__zEverNoteLoader.__init__&   s   € à"ˆŒØ$8ˆÔ!Ð!Ð!ó    Úreturnc                 óÎ   ‡ — ˆ fd„‰                       ‰ j        ¦  «        D ¦   «         }‰ j        s|S t          d                     d„ |D ¦   «         ¦  «        d‰ j        i¬¦  «        gS )z)Load documents from EverNote export file.c           	      ó¶   •— g | ]U}|                      d ¦  «        ®t          |d          i d„ |                     ¦   «         D ¦   «         ¥d‰j        i¥¬¦  «        ‘ŒVS )ÚcontentNc                 ó"   — i | ]\  }}|d v¯	||“ŒS ))r   úcontent-rawÚresource© )Ú.0ÚkeyÚvalues      r   ú
<dictcomp>z2EverNoteLoader.load.<locals>.<listcomp>.<dictcomp>1   s4   € ð ð ð á&˜C ØÐ&LÐLÐLð ˜UàLÐLÐLr   Úsource©Úpage_contentÚmetadata)Úgetr
   Úitemsr   )r   Únoter   s     €r   ú
<listcomp>z'EverNoteLoader.load.<locals>.<listcomp>-   sŽ   ø€ ð 
ð 
ð 
ð Ø�xŠx˜	Ñ"Ô"Ð.õ Ø! )œ_ððð à*.¯*ª*©,¬,ðñ ô ðð   ¤Ð0ðð
ñ 
ô 
ð /Ð.Ð.r   Ú c                 ó   — g | ]	}|j         ‘Œ
S r   )r#   )r   Údocuments     r   r(   z'EverNoteLoader.load.<locals>.<listcomp>B   s   € Ð%VÐ%VÐ%VÀ hÔ&;Ð%VÐ%VÐ%Vr   r!   r"   )Ú_parse_note_xmlr   r   r
   Újoin)r   Ú	documentss   ` r   ÚloadzEverNoteLoader.load+   s–   ø€ ð
ð 
ð 
ð 
ð ×,Ò,¨T¬^Ñ<Ô<ð
ñ 
ô 
ˆ	ð  Ô(ð 	ØÐõ ØŸWšWÐ%VÐ%VÈIÐ%VÑ%VÔ%VÑWÔWØ" D¤NÐ3ðñ ô ð
ð 	
r   r   c                 óž   — 	 dd l }|                      | ¦  «                             ¦   «         S # t          $ r}t          d¦  «        |‚d }~ww xY w)Nr   zËCould not import `html2text`. Although it is not a required package to use Langchain, using the EverNote loader requires `html2text`. Please install `html2text` via `pip install html2text` and try again.)Ú	html2textÚstripÚImportError)r   r1   Úes      r   Ú_parse_contentzEverNoteLoader._parse_contentG   so   € ð		ØÐÐÐà×&Ò& wÑ/Ô/×5Ò5Ñ7Ô7Ð7øÝð 	ð 	ð 	ÝðXñô ð ð	øøøøð	øøøs   ‚*- ­
A·AÁAr   c                 óü   — i }| D ]v}|j         dk    rZ|j        rt          |j        ¦  «        nd||j         <   t          j        ||j                  ¦  «                             ¦   «         |d<   Œg|j        ||j         <   Œw|S )NÚdatar   Úhash)ÚtagÚtextr   ÚhashlibÚmd5Ú	hexdigest)r   Úrsc_dictÚelems      r   Ú_parse_resourcezEverNoteLoader._parse_resourceT   s…   € à#%ˆØð 	/ð 	/ˆDØŒx˜6Ò!Ð!à=A¼YÐ%O¥Y¨t¬yÑ%9Ô%9Ð%9ÈC�˜œÑ"Ý#*¤;¨x¸¼Ô/AÑ#BÔ#B×#LÒ#LÑ#NÔ#N�˜Ñ Ð à%)¤Y�˜œÑ"Ð"àˆr   Nr'   Úprefixc                 ó¤  ‡‡— i }g }dt           dt           fˆfd„Š| D ]ü}|j        dk    r2t                               |j        ¦  «        ||j        <   |j        |d<   Œ?|j        dk    r.|                     t                               |¦  «        ¦  «         Œx|j        dk    s|j        dk    rt          |j        d	¦  «        ||j        <   Œ¬|j        d
k    r6t                               ||j        ¦  «        }| 	                    |¦  «         Œí|j        ||j        <   Œýt          |¦  «        dk    r||d<   ˆfd„|                     ¦   «         D ¦   «         S )NÚelement_tagr   c                 ó   •— ‰€| S ‰› d| › �S )Nú.r   )rC   rA   s    €r   Ú
add_prefixz.EverNoteLoader._parse_note.<locals>.add_prefixf   s"   ø€ Øˆ~Ø"Ð"ØÐ,Ð,˜{Ð,Ð,Ð,r   r   r   r   ÚcreatedÚupdatedz%Y%m%dT%H%M%SZznote-attributesr   c                 ó.   •— i | ]\  }} ‰|¦  «        |“ŒS r   r   )r   r   r   rF   s      €r   r    z.EverNoteLoader._parse_note.<locals>.<dictcomp>   s'   ø€ ÐKÐKÐK©:¨3°�
�
˜3‘” ÐKÐKÐKr   )Ústrr9   r   r5   r:   Úappendr@   r   Ú_parse_noteÚupdateÚlenr&   )r'   rA   Ú	note_dictÚ	resourcesr?   Úadditional_attributesrF   s    `    @r   rL   zEverNoteLoader._parse_notea   s  øø€ à$&ˆ	Øˆ	ð	-¥Cð 	-­Cð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð
 ð 	0ð 	0ˆDØŒx˜9Ò$Ð$Ý&4×&CÒ&CÀDÄIÑ&NÔ&N�	˜$œ(Ñ#à+/¬9�	˜-Ñ(Ð(Ø”˜ZÒ'Ð'Ø× Ò ¥×!?Ò!?ÀÑ!EÔ!EÑFÔFÐFÐFØ”˜YÒ&Ð&¨$¬(°iÒ*?Ð*?Ý&.¨t¬yÐ:JÑ&KÔ&K�	˜$œ(Ñ#Ð#Ø”Ð.Ò.Ð.Ý(6×(BÒ(BØ˜$œ(ñ)ô )Ð%ð × Ò Ð!6Ñ7Ô7Ð7Ð7à&*¤i�	˜$œ(Ñ#Ð#åˆy‰>Œ>˜AÒÐØ$-ˆI�jÑ!àKÐKÐKÐK¸¿ºÑ9JÔ9JÐKÑKÔKÐKr   Úxml_filec              #   ó  K  — 	 ddl m} n.# t          $ r!}t                               d¦  «         |‚d}~ww xY w|                     | dddd¬¦  «        }|D ],\  }}|j        d	k    rt                               |¦  «        V — Œ-dS )
zParse Evernote xml.r   )Úetreez·Could not import `lxml`. Although it is not a required package to use Langchain, using the EverNote loader requires `lxml`. Please install `lxml` via `pip install lxml` and try again.Nzutf-8FT)ÚencodingÚstrip_cdataÚ	huge_treeÚrecoverr'   )	ÚlxmlrT   r3   ÚloggerÚerrorÚ	iterparser9   r   rL   )rR   rT   r4   ÚcontextÚactionr?   s         r   r,   zEverNoteLoader._parse_note_xml�   sÎ   è è € ð	Ø"Ð"Ð"Ð"Ð"Ð"Ð"øÝð 	ð 	ð 	Ý�LŠLð?ñô ð ð
 ˆGøøøøð	øøøð —/’/Ø˜w°EÀTÐSWð "ñ 
ô 
ˆð $ð 	7ð 	7‰LˆF�DØŒx˜6Ò!Ð!Ý$×0Ò0°Ñ6Ô6Ð6Ð6Ð6øð	7ð 	7s   „ ‹
6•1±6)T)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rJ   Úboolr   r   r
   r/   Ústaticmethodr5   ÚlistÚdictr@   r	   rL   r   r   r   r,   r   r   r   r   r      sA  € € € € € ðð ð&9ð 9 #ð 9¸Tð 9ð 9ð 9ð 9ð

�d˜8”nð 
ð 
ð 
ð 
ð8 ð
 ð 
¨ð 
ð 
ð 
ñ „\ð
ð ð
 $ð 
¨4ð 
ð 
ð 
ñ „\ð
ð ðLð L˜$ð L¨°¬ð LÀð Lð Lð Lñ „\ðLð> ð7 #ð 7¨(°4¸¸S¸´>Ô*Bð 7ð 7ð 7ñ „\ð7ð 7ð 7r   r   )rb   r;   ÚloggingÚbase64r   Útimer   Útypingr   r   r   r   r	   Úlangchain_core.documentsr
   Ú)langchain_community.document_loaders.baser   Ú	getLoggerr_   rZ   r   r   r   r   ú<module>rn      så   ððð ð €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6à -Ð -Ð -Ð -Ð -Ð -à @Ð @Ð @Ð @Ð @Ð @à	ˆÔ	˜8Ñ	$Ô	$€ðE7ð E7ð E7ð E7ð E7�Zñ E7ô E7ð E7ð E7ð E7r   