o
    1Îj¹
  ã                   @   s   d dl Z d dlZdd„ ZdS )é    Nc            	      C   sö   zddl } W n
 ty   Y dS w t| dƒsg | _dd„ }|d| dƒ}|d|d	ƒ}t|d
ƒsMzddlm} ||_W n tyL   G dd„ dƒ}||_Y nw |d| dƒ}t|dƒsyzddlm} ||_W dS  tyx   G dd„ dƒ}||_Y dS w dS )zÑ
    A compatibility shim for LangChain to handle breaking changes in newer versions.
    Specifically addresses the removal of 'langchain.docstore' and relocation of
    'RecursiveCharacterTextSplitter'.
    r   NÚ__path__c                 S   sD   t ||ƒst | ¡}t |dƒsg |_|tj| < t|||ƒ t||ƒS )Nr   )ÚhasattrÚtypesÚ
ModuleTyper   ÚsysÚmodulesÚsetattrÚgetattr)ÚnameÚparentÚattrÚmod© r   ú]/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddlex/utils/langchain_shim.pyÚcreate_shim$   s   




z)apply_langchain_shim.<locals>.create_shimzlangchain.docstoreÚdocstorezlangchain.docstore.documentÚdocumentÚDocument)r   c                   @   s   e Zd Zddd„ZdS )z*apply_langchain_shim.<locals>.MockDocumentNc                 S   s   || _ |pi | _d S ©N)Úpage_contentÚmetadata)Úselfr   r   r   r   r   Ú__init__9   s   z3apply_langchain_shim.<locals>.MockDocument.__init__r   ©Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   ÚMockDocument7   s    r   zlangchain.text_splitterÚtext_splitterÚRecursiveCharacterTextSplitter)r   c                   @   s   e Zd Zdd„ ZdS )z*apply_langchain_shim.<locals>.MockSplitterc                 _   s   d S r   r   )r   ÚargsÚkwargsr   r   r   r   L   s   z3apply_langchain_shim.<locals>.MockSplitter.__init__Nr   r   r   r   r   ÚMockSplitterJ   s    r"   )Ú	langchainÚImportErrorr   r   Zlangchain_core.documentsr   Zlangchain_text_splittersr   )	r#   r   r   r   ZRealDocumentr   r   ZRealSplitterr"   r   r   r   Úapply_langchain_shim   s8   ÿ




ø
ùùr%   )r   r   r%   r   r   r   r   Ú<module>   s   