
    Ng                     ^    d dl Z d dlmZmZmZ d dlZd dlmZ d dlm	Z	  G d de	          Z
dS )    N)DictIteratorList)Document)
BaseLoaderc                      e Zd ZdZddedefdZedeeef         fd            Zde	fdZ
d	e	dee         fd
Zde	dee	         fdZde	de	defdZdedefdZededefd            ZdedefdZdee         fdZdee         fdZdS )YuqueLoaderLoad documents from `Yuque`.https://www.yuque.comaccess_tokenapi_urlc                 "    || _         || _        dS )zInitialize with Yuque access_token and api_url.

        Args:
            access_token: Personal access token - see https://www.yuque.com/settings/tokens.
            api_url: Yuque API url.
        N)r   r   )selfr   r   s      f/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/document_loaders/yuque.py__init__zYuqueLoader.__init__   s     )    returnc                     d| j         dS )Nzapplication/json)zContent-TypezX-Auth-Token)r   r   s    r   headerszYuqueLoader.headers   s     / -
 
 	
r   c                 ^    | j          d}|                     |          }|d         d         S )Nz/api/v2/userurldataidr   http_getr   r   responses      r   get_user_idzYuqueLoader.get_user_id   s5    +++==S=))%%r   user_idc                 X    | j          d| d}|                     |          }|d         S )Nz/api/v2/users/z/reposr   r   r   )r   r!   r   r   s       r   	get_bookszYuqueLoader.get_books$   s8    <<W<<<==S=))r   book_idc                 l    | j          d| d}|                     |          }d |d         D             S )N/api/v2/repos/z/docsr   c                     g | ]
}|d          S )r    ).0documents     r   
<listcomp>z0YuqueLoader.get_document_ids.<locals>.<listcomp>.   s    @@@8@@@r   r   r   )r   r$   r   r   s       r   get_document_idszYuqueLoader.get_document_ids*   sF    ;;W;;;==S=))@@x/?@@@@r   document_idc                 \    | j          d| d| }|                     |          }|d         S )Nr&   z/docs/r   r   r   )r   r$   r-   r   r   s        r   get_documentzYuqueLoader.get_document0   s=    IIWIIKII==S=))r   r*   c                     |                      |d                   }|d         |d         |d         |d         d}t          ||          S )Nbodytitledescription
created_at
updated_at)r2   r3   r4   r5   )page_contentmetadata)parse_document_bodyr   )r   r*   contentr7   s       r   parse_documentzYuqueLoader.parse_document6   s[    **8F+;<<g&#M2"<0"<0	
 
 Wx@@@@r   r1   c                 ^    t          j        dd|           }t          j        dd|          }|S )Nz<a name="(.*)"></a> z	<br\s*/?>)resub)r1   results     r   r8   zYuqueLoader.parse_document_bodyA   s.    .D99b&11r   r   c                     t          j        || j                  }|                                 |                                S )N)r   )requestsgetr   raise_for_statusjsonr   s      r   r   zYuqueLoader.http_getH   s8    <T\:::!!###}}r   c              #     K   |                                  }|                     |          }|D ]S}|d         }|                     |          }|D ]1}|                     ||          }|                     |          }|V  2Td S )Nr   )r    r#   r,   r/   r:   )	r   r!   booksbookr$   document_idsr-   r*   parsed_documents	            r   get_documentszYuqueLoader.get_documentsN   s      ""$$w'' 	& 	&D4jG0099L+ & &,,WkBB"&"5"5h"?"?%%%%%&	& 	&r   c                 D    t          |                                           S )r
   )listrJ   r   s    r   loadzYuqueLoader.loadZ   s    D&&(()))r   N)r   )__name__
__module____qualname____doc__strr   propertyr   r   intr    r   r#   r,   r/   r   r:   staticmethodr8   r   r   rJ   rM   r(   r   r   r	   r	   
   s       && S 3     
c3h 
 
 
 X
&S & & & &   d        A AS	 A A A A C  c  d        	At 	A 	A 	A 	A 	A # #    \C D    
&x1 
& 
& 
& 
&*d8n * * * * * *r   r	   )r=   typingr   r   r   rA   langchain_core.documentsr   )langchain_community.document_loaders.baser   r	   r(   r   r   <module>rY      s    				 ' ' ' ' ' ' ' ' ' '  - - - - - - @ @ @ @ @ @R* R* R* R* R** R* R* R* R* R*r   