§
    šŠtj‡Q  ã                   ó¸   — d dl Z d dlZd dlZd dlmZ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  G d„ dee¦  «        Z G d„ d	e¦  «        Z G d
„ de¦  «        ZdS )é    N)ÚABCÚabstractmethod)ÚDictÚIteratorÚOptionalÚTupleÚUnion)ÚDocument)Ú
BaseLoaderc            !       óŠ  — e Zd ZdZdddddddd	d	dddd
d
dœdedededeeef         dededededededeeef         deeef         deeef         dee         dee         dd
f d„Z	de
e         fd„Zedefd„¦   «         Zdedefd „Zd!ed"ede
e         fd#„Z	 d(d!eded$ee         de
e         fd%„Zd&edeeef         fd'„Zd
S ))ÚDedocBaseLoadera  
    Base Loader that uses `dedoc` (https://dedoc.readthedocs.io).

    Loader enables extracting text, tables and attached files from the given file:
        * `Text` can be split by pages, `dedoc` tree nodes, textual lines
            (according to the `split` parameter).
        * `Attached files` (when with_attachments=True)
            are split according to the `split` parameter.
            For attachments, langchain Document object has an additional metadata field
            `type`="attachment".
        * `Tables` (when with_tables=True) are not split - each table corresponds to one
            langchain Document object.
            For tables, Document object has additional metadata fields `type`="table"
            and `text_as_html` with table HTML representation.
    ÚdocumentTFé
   Ú
auto_tabbyúrus+engú:ÚautoN)ÚsplitÚwith_tablesÚwith_attachmentsÚrecursion_deep_attachmentsÚpdf_with_text_layerÚlanguageÚpagesÚis_one_column_documentÚdocument_orientationÚneed_header_footer_analysisÚneed_binarizationÚneed_pdf_table_analysisÚ	delimiterÚencodingÚ	file_pathr   r   r   r   r   r   r   r   r   r   r   r   r    r!   Úreturnc                ó.  — d„ t          ¦   «                              ¦   «         D ¦   «         | _        h d£| _        || j        vrt	          d|› d| j        › d�¦  «        ‚|| _        || _        || _        | j        dk    rdnd}|| j        d	<   || j        d
<   dS )a«
  
        Initialize with file path and parsing parameters.

        Args:
            file_path: path to the file for processing
            split: type of document splitting into parts (each part is returned
                separately), default value "document"
                "document": document text is returned as a single langchain Document
                    object (don't split)
                "page": split document text into pages (works for PDF, DJVU, PPTX, PPT,
                    ODP)
                "node": split document text into tree nodes (title nodes, list item
                    nodes, raw text nodes)
                "line": split document text into lines
            with_tables: add tables to the result - each table is returned as a single
                langchain Document object

            Parameters used for document parsing via `dedoc`
                (https://dedoc.readthedocs.io/en/latest/parameters/parameters.html):

                with_attachments: enable attached files extraction
                recursion_deep_attachments: recursion level for attached files
                    extraction, works only when with_attachments==True
                pdf_with_text_layer: type of handler for parsing PDF documents,
                    available options
                    ["true", "false", "tabby", "auto", "auto_tabby" (default)]
                language: language of the document for PDF without a textual layer and
                    images, available options ["eng", "rus", "rus+eng" (default)],
                    the list of languages can be extended, please see
                    https://dedoc.readthedocs.io/en/latest/tutorials/add_new_language.html
                pages: page slice to define the reading range for parsing PDF documents
                is_one_column_document: detect number of columns for PDF without
                    a textual layer and images, available options
                    ["true", "false", "auto" (default)]
                document_orientation: fix document orientation (90, 180, 270 degrees)
                    for PDF without a textual layer and images, available options
                    ["auto" (default), "no_change"]
                need_header_footer_analysis: remove headers and footers from the output
                    result for parsing PDF and images
                need_binarization: clean pages background (binarize) for PDF without a
                    textual layer and images
                need_pdf_table_analysis: parse tables for PDF without a textual layer
                    and images
                delimiter: column separator for CSV, TSV files
                encoding: encoding of TXT, CSV, TSV
        c                 ó"   — i | ]\  }}|d v¯	||“ŒS )>   Úselfr   r"   r   © )Ú.0ÚkeyÚvalues      úh/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/document_loaders/dedoc.pyú
<dictcomp>z,DedocBaseLoader.__init__.<locals>.<dictcomp>d   s4   € ð #
ð #
ð #
á��UØÐGÐGÐGð �àGÐGÐGó    >   ÚlineÚnodeÚpager   úGot ú$ for `split`, but should be one of `ú`r/   ÚtreeÚlinearÚstructure_typeÚneed_content_analysisN)ÚlocalsÚitemsÚparsing_parametersÚvalid_split_valuesÚ
ValueErrorr   r   r"   )r&   r"   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r6   s                    r+   Ú__init__zDedocBaseLoader.__init__#   sØ   € ðB#
ð #
å$™hœhŸnšnÑ.Ô.ð#
ñ #
ô #
ˆÔð
 #GÐ"FÐ"FˆÔØ˜Ô/Ð/Ð/Ýð/�uð /ð /ØÔ+ð/ð /ð /ñô ð ð ˆŒ
Ø&ˆÔØ"ˆŒà#'¤:°Ò#7Ð#7˜˜¸XˆØ4BˆÔÐ 0Ñ1Ø;KˆÔÐ 7Ñ8Ð8Ð8r-   c              #   óî  K  — ddl }	 ddlm} n# t          $ r t          d¦  «        ‚w xY w ||                      ¦   «         ¬¦  «        }d|j        d         _        |                     ¦   «         5 }|                     | j	        i | j
        ¥d|i¥¬	¦  «        }ddd¦  «         n# 1 swxY w Y   |                      |                     ¦   «                              ¦   «         | j        ¬
¦  «        E d{V —† dS )úLazily load documents.r   N)ÚDedocManagerzE`dedoc` package not found, please install it with `pip install dedoc`)Úmanager_configTÚloggerÚattachments_dir)r"   Ú
parameters©Údocument_treer   )ÚtempfileÚdedocr@   ÚImportErrorÚ_make_configÚconfigÚdisabledÚTemporaryDirectoryÚparser"   r:   Ú_split_documentÚto_api_schemaÚdictr   )r&   rG   r@   Údedoc_managerÚtmpdirrF   s         r+   Ú	lazy_loadzDedocBaseLoader.lazy_loadw   sˆ  è è € àˆˆˆð	Ø*Ð*Ð*Ð*Ð*Ð*Ð*øÝð 	ð 	ð 	ÝØWñô ð ð	øøøð %˜°D×4EÒ4EÑ4GÔ4GÐHÑHÔHˆØ26ˆÔ˜XÔ&Ô/à×(Ò(Ñ*Ô*ð 	¨fØ)×/Ò/Øœ.ØQ˜dÔ5ÐQÐ7HÈ&ÐQÐQð 0ñ ô ˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð
 ×'Ò'Ø'×5Ò5Ñ7Ô7×<Ò<Ñ>Ô>ÀdÄjð (ñ 
ô 
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
s   ˆ �)Á0(B$Â$B(Â+B(c                 ó   — dS )zu
        Make configuration for DedocManager according to the file extension and
        parsing parameters.
        Nr'   ©r&   s    r+   rJ   zDedocBaseLoader._make_config�   s	   € ð 	ˆr-   Ú	paragraphc                 ó„   ‡ — d                      ˆ fd„|d         D ¦   «         ¦  «        }|r|d         › d|› �n|d         }|S )z1Get text (recursively) of the document tree node.ú
c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r'   )Ú	_json2txt)r(   Úsubparagraphr&   s     €r+   ú
<listcomp>z-DedocBaseLoader._json2txt.<locals>.<listcomp>˜   s5   ø€ ð ð ð à ð —’˜|Ñ,Ô,ðð ð r-   ÚsubparagraphsÚtext)Újoin)r&   rW   Úsubparagraphs_textr_   s   `   r+   r[   zDedocBaseLoader._json2txt•   sy   ø€ à!ŸYšYðð ð ð à$-¨oÔ$>ðñ ô ñ
ô 
Ðð "ð#ˆy˜Ô Ð8Ð8Ð$6Ð8Ð8Ð8à˜6Ô"ð 	ð
 ˆr-   rF   Údocument_metadatac              #   óÖ   K  — t          |d         ¦  «        dk    r*|d         D ]}|                      ||¬¦  «        E d{V —† Œ dS t          |d         i |¥|d         ¥¬¦  «        V — dS )z4Parse recursively document tree obtained by `dedoc`.r^   r   ©rF   rb   Nr_   Úmetadata©Úpage_contentre   )ÚlenÚ_parse_subparagraphsr
   )r&   rF   rb   r\   s       r+   ri   z$DedocBaseLoader._parse_subparagraphs¤   sÌ   è è € õ ˆ}˜_Ô-Ñ.Ô.°Ò2Ð2Ø -¨oÔ >ð ð �Ø×4Ò4Ø".ÐBSð 5ñ ô ð ð ð ð ð ð ð ð ðð õ
 Ø*¨6Ô2ØKÐ-ÐK°¸zÔ1JÐKðñ ô ð ð ð ð ð r-   Úadditional_metadatac              #   óF  K  — |d         }|ri |¥|¥}|dk    r7|                       |d         d         ¬¦  «        }t          ||¬¦  «        V — �nQ|dk    r°|d         d         d         }|d	         d         d
         }d}|D ]i}	|	d         d
         |k    r||                       |	¦  «        z  }Œ-t          |i |¥d
|i¥¬¦  «        V — |	d         d
         }|                       |	¦  «        }Œjt          |i |¥d
|i¥¬¦  «        V — n›|dk    rJ|d         d         d         D ]4}	|	d         }
t          |                       |	¦  «        i |¥|
¥¬¦  «        V — Œ5nK|dk    r*|                      |d         d         |¬¦  «        E d{V —† nt          d|› d| j        › d�¦  «        ‚| j        rI|d         d         D ]:}|                      |¦  «        \  }}t          |i |d         ¥d|dœ¥¬¦  «        V — Œ;|d         D ]'}|                      || j        ddi¬¦  «        E d{V —† Œ(dS )z=Split document into parts according to the `split` parameter.re   r   ÚcontentÚ	structure)rW   rf   r0   r^   r   Úpage_idÚ r.   r/   rd   Nr1   r2   r3   ÚtablesÚtable)ÚtypeÚtext_as_htmlÚattachmentsrr   Ú
attachment)rF   r   rj   )	r[   r
   ri   r<   r;   r   Ú
_get_tablerO   r   )r&   rF   r   rj   rb   r_   Únodesrn   Ú	page_textr/   Úline_metadatarq   Ú
table_textÚ
table_htmlru   s                  r+   rO   zDedocBaseLoader._split_document³   s‡  è è € ð *¨*Ô5ÐØð 	MØ LÐ#4Ð LÐ8KÐ LÐà�JÒÐØ—>’>¨M¸)Ô,DÀ[Ô,Q�>ÑRÔRˆDÝ¨Ð7HÐIÑIÔIÐIÐIÐIÑIà�fŠ_ˆ_Ø! )Ô,¨[Ô9¸/ÔJˆEØ˜A”h˜zÔ*¨9Ô5ˆGØˆIàð 	5ð 	5�Ø˜
Ô# IÔ.°'Ò9Ð9Ø §¢°Ñ!5Ô!5Ñ5�I�Iå"Ø%.Ø!JÐ$5Ð!J°yÀ'Ð!JÐ!Jðñ ô ð ð ð ð # :Ô.¨yÔ9�GØ $§¢¨tÑ 4Ô 4�I�IåØ&ØBÐ-ÐB¨y¸'ÐBÐBðñ ô ð ð ð ð ð
 �fŠ_ˆ_Ø% iÔ0°Ô=¸oÔNð ð �Ø $ ZÔ 0�ÝØ!%§¢°Ñ!5Ô!5ØCÐ 1ÐC°]ÐCðñ ô ð ð ð ð ðð �fŠ_ˆ_Ø×0Ò0Ø+¨IÔ6°{ÔCØ"3ð 1ñ ô ð ð ð ð ð ð ð ð õ ð/�uð /ð /ØÔ+ð/ð /ð /ñô ð ð
 Ôð 
	Ø& yÔ1°(Ô;ð 	ð 	�Ø)-¯ª¸Ñ)?Ô)?Ñ&�
˜JÝØ!+ðØ 
Ô+ðà 'Ø(2ðð ð ðñ ô ð ð ð ð ð (¨Ô6ð 	ð 	ˆJØ×+Ò+Ø(Ø”jØ%+¨\Ð$:ð ,ñ ô ð ð ð ð ð ð ð ð ð	ð 	r-   rq   c           
      ó   — d}|d         D ]9}|D ]/}|d                      d„ |d         D ¦   «         ¦  «        z  }|dz  }Œ0|dz  }Œ:d}|d         D ]w}|d	z  }|D ]h}d                      d
„ |d         D ¦   «         ¦  «        }t          j        |¦  «        }|dz  }|d         r|dz  }|d|d         › d|d         › d|› d�z  }Œi|dz  }Œx|dz  }||fS )z.Get text and HTML representation of the table.ro   Úcellsú c              3   ó&   K  — | ]}|d          V — ŒdS ©r_   Nr'   ©r(   r.   s     r+   ú	<genexpr>z-DedocBaseLoader._get_table.<locals>.<genexpr>  s&   è è € Ð&NÐ&N¸ t¨F¤|Ð&NÐ&NÐ&NÐ&NÐ&NÐ&Nr-   Úlinesú	rY   zK<table border="1" style="border-collapse: collapse; width: 100%;">
<tbody>
z<tr>
c              3   ó&   K  — | ]}|d          V — ŒdS r€   r'   r�   s     r+   r‚   z-DedocBaseLoader._get_table.<locals>.<genexpr>  s&   è è € Ð%MÐ%M°t d¨6¤lÐ%MÐ%MÐ%MÐ%MÐ%MÐ%Mr-   z<tdÚ	invisiblez style="display: none" z
 colspan="Úcolspanz" rowspan="Úrowspanz">z</td>
z</tr>
z</tbody>
</table>)r`   ÚhtmlÚescape)r&   rq   rz   ÚrowÚcellr{   Ú	cell_texts          r+   rv   zDedocBaseLoader._get_tableþ   s_  € àˆ
Ø˜”>ð 	ð 	ˆCØð #ð #�Ø˜cŸhšhÐ&NÐ&NÀÀWÄÐ&NÑ&NÔ&NÑNÔNÑN�
Ø˜dÑ"�
�
Ø˜$ÑˆJˆJðð 	ð ˜”>ð 	$ð 	$ˆCØ˜(Ñ"ˆJØð 	ð 	�Ø ŸIšIÐ%MÐ%M¸tÀG¼}Ð%MÑ%MÔ%MÑMÔM�	Ý œK¨	Ñ2Ô2�	Ø˜eÑ#�
Ø˜Ô$ð <ØÐ";Ñ;�JØð>  i¤ð >ð >Ø˜Yœð>ð >Ø+4ð>ð >ð >ñ�
�
ð ˜)Ñ#ˆJˆJØÐ*Ñ*ˆ
à˜:Ð%Ð%r-   ©N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚboolr	   Úintr   r=   r   r
   rT   r   rQ   rJ   r[   ri   rO   r   rv   r'   r-   r+   r   r      sz  € € € € € ðð ð(  Ø Ø-2Ø*,Ø#/Ø!ØØ&,Ø$*Ø8=Ø.3Ø48Ø#'Ø"&ð#RLð RLð RLàðRLð ð	RLð
 ðRLð    T 	Ô*ðRLð %(ðRLð !ðRLð ðRLð ðRLð !$ðRLð "ðRLð &+¨3°¨9Ô%5ðRLð !  d Ô+ðRLð "' s¨D yÔ!1ðRLð  ˜C”=ð!RLð" ˜3”-ð#RLð$ 
ð%RLð RLð RLð RLðh
˜8 HÔ-ð 
ð 
ð 
ð 
ð, ð˜dð ð ð ñ „^ðð 4ð ¨Cð ð ð ð ðØ!ðØ6:ðà	�(Ô	ðð ð ð ð& /3ð	Ið IàðIð ðIð & dœ^ð	Ið
 
�(Ô	ðIð Ið Ið IðV& ð &¨¨s°C¨x¬ð &ð &ð &ð &ð &ð &r-   r   c                   ó   — e Zd ZdZdefd„ZdS )ÚDedocFileLoaderaw  
    DedocFileLoader document loader integration to load files using `dedoc`.

    The file loader automatically detects the file type (with the correct extension).
    The list of supported file types is gives at
    https://dedoc.readthedocs.io/en/latest/index.html#id1.
    Please see the documentation of DedocBaseLoader to get more details.

    Setup:
        Install ``dedoc`` package.

        .. code-block:: bash

            pip install -U dedoc

    Instantiate:
        .. code-block:: python

            from langchain_community.document_loaders import DedocFileLoader

            loader = DedocFileLoader(
                file_path="example.pdf",
                # split=...,
                # with_tables=...,
                # pdf_with_text_layer=...,
                # pages=...,
                # ...
            )

    Load:
        .. code-block:: python

            docs = loader.load()
            print(docs[0].page_content[:100])
            print(docs[0].metadata)

        .. code-block:: python

            Some text
            {
                'file_name': 'example.pdf',
                'file_type': 'application/pdf',
                # ...
            }

    Lazy load:
        .. code-block:: python

            docs = []
            docs_lazy = loader.lazy_load()

            for doc in docs_lazy:
                docs.append(doc)
            print(docs[0].page_content[:100])
            print(docs[0].metadata)

        .. code-block:: python

            Some text
            {
                'file_name': 'example.pdf',
                'file_type': 'application/pdf',
                # ...
            }
    r#   c                 óH   — ddl m}  || j        | j        | j        ¬¦  «        S )Nr   )Úmake_manager_config)r"   Úparsing_paramsr   )Údedoc.utils.langchainr™   r"   r:   r   )r&   r™   s     r+   rJ   zDedocFileLoader._make_config`  s>   € Ø=Ð=Ð=Ð=Ð=Ð=à"Ð"Ø”nØÔ2Ø”*ð
ñ 
ô 
ð 	
r-   N)r�   r�   r‘   r’   rQ   rJ   r'   r-   r+   r—   r—     s<   € € € € € ð@ð @ðD
˜dð 
ð 
ð 
ð 
ð 
ð 
r-   r—   c            #       ó@  ‡ — e Zd ZdZdddddddd	d
d
ddddddœdededededeeef         dededededededeeef         deeef         deeef         dee         dee         ddf"ˆ fd„Z	de
e         fd„Zdefd „Zdeded!edeeeeeef         f         fd"„Zˆ xZS )#ÚDedocAPIFileLoaderaU  
    Load files using `dedoc` API.
    The file loader automatically detects the file type (even with the wrong extension).
    By default, the loader makes a call to the locally hosted `dedoc` API.
    More information about `dedoc` API can be found in `dedoc` documentation:
        https://dedoc.readthedocs.io/en/latest/dedoc_api_usage/api.html

    Please see the documentation of DedocBaseLoader to get more details.

    Setup:
        You don't need to install `dedoc` library for using this loader.
        Instead, the `dedoc` API needs to be run.
        You may use Docker container for this purpose.
        Please see `dedoc` documentation for more details:
            https://dedoc.readthedocs.io/en/latest/getting_started/installation.html#install-and-run-dedoc-using-docker

        .. code-block:: bash

            docker pull dedocproject/dedoc
            docker run -p 1231:1231

    Instantiate:
        .. code-block:: python

            from langchain_community.document_loaders import DedocAPIFileLoader

            loader = DedocAPIFileLoader(
                file_path="example.pdf",
                # url=...,
                # split=...,
                # with_tables=...,
                # pdf_with_text_layer=...,
                # pages=...,
                # ...
            )

    Load:
        .. code-block:: python

            docs = loader.load()
            print(docs[0].page_content[:100])
            print(docs[0].metadata)

        .. code-block:: python

            Some text
            {
                'file_name': 'example.pdf',
                'file_type': 'application/pdf',
                # ...
            }

    Lazy load:
        .. code-block:: python

            docs = []
            docs_lazy = loader.lazy_load()

            for doc in docs_lazy:
                docs.append(doc)
            print(docs[0].page_content[:100])
            print(docs[0].metadata)

        .. code-block:: python

            Some text
            {
                'file_name': 'example.pdf',
                'file_type': 'application/pdf',
                # ...
            }
    zhttp://0.0.0.0:1231r   TFr   r   r   r   r   N)Úurlr   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   rž   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r#   c                óŠ   •— t          ¦   «                              ||||||||	|
||||||¬¦  «         || _        d| j        d<   dS )a¬
  Initialize with file path, API url and parsing parameters.

        Args:
            file_path: path to the file for processing
            url: URL to call `dedoc` API
            split: type of document splitting into parts (each part is returned
                separately), default value "document"
                "document": document is returned as a single langchain Document object
                    (don't split)
                "page": split document into pages (works for PDF, DJVU, PPTX, PPT, ODP)
                "node": split document into tree nodes (title nodes, list item nodes,
                    raw text nodes)
                "line": split document into lines
            with_tables: add tables to the result - each table is returned as a single
                langchain Document object

            Parameters used for document parsing via `dedoc`
                (https://dedoc.readthedocs.io/en/latest/parameters/parameters.html):

                with_attachments: enable attached files extraction
                recursion_deep_attachments: recursion level for attached files
                    extraction, works only when with_attachments==True
                pdf_with_text_layer: type of handler for parsing PDF documents,
                    available options
                    ["true", "false", "tabby", "auto", "auto_tabby" (default)]
                language: language of the document for PDF without a textual layer and
                    images, available options ["eng", "rus", "rus+eng" (default)],
                    the list of languages can be extended, please see
                    https://dedoc.readthedocs.io/en/latest/tutorials/add_new_language.html
                pages: page slice to define the reading range for parsing PDF documents
                is_one_column_document: detect number of columns for PDF without
                    a textual layer and images, available options
                    ["true", "false", "auto" (default)]
                document_orientation: fix document orientation (90, 180, 270 degrees)
                    for PDF without a textual layer and images, available options
                    ["auto" (default), "no_change"]
                need_header_footer_analysis: remove headers and footers from the output
                    result for parsing PDF and images
                need_binarization: clean pages background (binarize) for PDF without a
                    textual layer and images
                need_pdf_table_analysis: parse tables for PDF without a textual layer
                    and images
                delimiter: column separator for CSV, TSV files
                encoding: encoding of TXT, CSV, TSV
        )r"   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   ÚjsonÚreturn_formatN)Úsuperr=   rž   r:   )r&   r"   rž   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   Ú	__class__s                    €r+   r=   zDedocAPIFileLoader.__init__´  sp   ø€ õB 	‰Œ×ÒØØØ#Ø-Ø'AØ 3ØØØ#9Ø!5Ø(CØ/Ø$;ØØð 	ñ 	
ô 	
ð 	
ð" ˆŒØ39ˆÔ Ñ0Ð0Ð0r-   c              #   óœ   K  — |                       | j        | j        | j        ¬¦  «        }|                      || j        ¬¦  «        E d{V —† dS )r?   )rž   r"   rD   rE   N)Ú
_send_filerž   r"   r:   rO   r   )r&   Údoc_trees     r+   rT   zDedocAPIFileLoader.lazy_load	  sa   è è € à—?’?Ø” D¤N¸tÔ?Vð #ñ 
ô 
ˆð ×'Ò'°hÀdÄjÐ'ÑQÔQÐQÐQÐQÐQÐQÐQÐQÐQÐQr-   c                 ó   — i S rŽ   r'   rV   s    r+   rJ   zDedocAPIFileLoader._make_config  s   € Øˆ	r-   rD   c                 óœ  — ddl }t          j                             |¦  «        }t	          |d¦  «        5 }d||fi}|                     |› d�||¬¦  «        }ddd¦  «         n# 1 swxY w Y   |j        dk    r)t          d|j         	                    ¦   «         › �¦  «        ‚t          j        |j         	                    ¦   «         ¦  «        }	|	S )	z7Send POST-request to `dedoc` API and return the resultsr   NÚrbÚfilez/upload)ÚfilesÚdataéÈ   zError during file handling: )ÚrequestsÚosÚpathÚbasenameÚopenÚpostÚstatus_coder<   rl   Údecoder    Úloads)
r&   rž   r"   rD   r®   Ú	file_namerª   r«   ÚrÚresults
             r+   r¥   zDedocAPIFileLoader._send_file  s  € ð 	ˆˆˆå”G×$Ò$ YÑ/Ô/ˆ	Ý�)˜TÑ"Ô"ð 	M dØ˜i¨Ð.Ð/ˆEØ—’ ˜o˜o˜o°UÀ�ÑLÔLˆAð	Mð 	Mð 	Mñ 	Mô 	Mð 	Mð 	Mð 	Mð 	Mð 	Mð 	Møøøð 	Mð 	Mð 	Mð 	Mð Œ=˜CÒÐÝÐP¸A¼I×<LÒ<LÑ<NÔ<NÐPÐPÑQÔQÐQå”˜AœI×,Ò,Ñ.Ô.Ñ/Ô/ˆØˆs   ´"A"Á"A&Á)A&)r�   r�   r‘   r’   r“   r”   r	   r•   r   r=   r   r
   rT   rQ   rJ   r   Úlistr¥   Ú__classcell__)r£   s   @r+   r�   r�   j  sú  ø€ € € € € ðGð GðZ )ØØ Ø-2Ø*,Ø#/Ø!ØØ&,Ø$*Ø8=Ø.3Ø48Ø#'Ø"&ð%S:ð S:ð S:àðS:ð ð	S:ð
 ðS:ð ðS:ð    T 	Ô*ðS:ð %(ðS:ð !ðS:ð ðS:ð ðS:ð !$ðS:ð "ðS:ð &+¨3°¨9Ô%5ðS:ð !  d Ô+ðS:ð  "' s¨D yÔ!1ð!S:ð" ˜C”=ð#S:ð$ ˜3”-ð%S:ð& 
ð'S:ð S:ð S:ð S:ð S:ð S:ðjR˜8 HÔ-ð Rð Rð Rð Rð˜dð ð ð ð ðØðØ#&ðØ48ðà	ˆc�5˜˜t S˜Ô)Ð)Ô	*ðð ð ð ð ð ð ð r-   r�   )r‰   r    r¯   Úabcr   r   Útypingr   r   r   r   r	   Úlangchain_core.documentsr
   Ú)langchain_community.document_loaders.baser   r   r—   r�   r'   r-   r+   ú<module>rÀ      sJ  ðØ €€€Ø €€€Ø 	€	€	€	Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #ðð ð ð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -à @Ð @Ð @Ð @Ð @Ð @ðH&ð H&ð H&ð H&ð H&�j #ñ H&ô H&ð H&ðVJ
ð J
ð J
ð J
ð J
�oñ J
ô J
ð J
ðZxð xð xð xð x˜ñ xô xð xð xð xr-   