
    ih                     V    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
y)    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y)YuqueLoaderLoad documents from `Yuque`.access_tokenapi_urlc                      || _         || _        y)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      h/var/www/html/dev/engine/venv/lib/python3.12/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                 T    | j                    d}| j                  |      }|d   d   S )Nz/api/v2/userurldataidr   http_getr   r   responses      r   get_user_idzYuqueLoader.get_user_id   s2    l+==S=)%%r   user_idc                 T    | j                    d| d}| j                  |      }|d   S )Nz/api/v2/users/z/reposr   r   r   )r   r    r   r   s       r   	get_bookszYuqueLoader.get_books$   s3    nWIV<==S=)r   book_idc                     | j                    d| d}| j                  |      }|d   D cg c]  }|d   	 c}S c c}w )N/api/v2/repos/z/docsr   r   r   r   )r   r#   r   r   documents        r   get_document_idszYuqueLoader.get_document_ids*   sE    nWIU;==S=)/7/?@8@@@s   ;document_idc                 X    | j                    d| d| }| j                  |      }|d   S )Nr%   z/docs/r   r   r   )r   r#   r(   r   r   s        r   get_documentzYuqueLoader.get_document0   s7    nWIVK=I==S=)r   r&   c                 j    | j                  |d         }|d   |d   |d   |d   d}t        ||      S )Nbodytitledescription
created_at
updated_at)r-   r.   r/   r0   )page_contentmetadata)parse_document_bodyr   )r   r&   contentr2   s       r   parse_documentzYuqueLoader.parse_document6   sM    **8F+;<g&#M2"<0"<0	
 Wx@@r   r,   c                 b    t        j                  dd|       }t        j                  dd|      }|S )Nz<a name="(.*)"></a> z	<br\s*/?>)resub)r,   results     r   r3   zYuqueLoader.parse_document_bodyA   s,    .D9b&1r   r   c                     t        j                  || j                        }|j                          |j	                         S )N)r   )requestsgetr   raise_for_statusjsonr   s      r   r   zYuqueLoader.http_getH   s.    <<T\\:!!#}}r   c              #      K   | j                         }| j                  |      }|D ]F  }|d   }| j                  |      }|D ])  }| j                  ||      }| j	                  |      }| + H y w)Nr   )r   r"   r'   r*   r5   )	r   r    booksbookr#   document_idsr(   r&   parsed_documents	            r   get_documentszYuqueLoader.get_documentsN   s     ""$w' 	&D4jG009L+ &,,WkB"&"5"5h"?%%&	&s   A.A0c                 4    t        | j                               S )r
   )listrE   r   s    r   loadzYuqueLoader.loadZ   s    D&&())r   N)zhttps://www.yuque.com)__name__
__module____qualname____doc__strr   propertyr   r   intr   r   r"   r'   r*   r   r5   staticmethodr3   r   r   rE   rH    r   r   r	   r	   
   s    &S 3  
c3h 
 
&S &   d  A AS	 A C  c  d  	At 	A 	A # #  C D 
&x1 
&*d8n *r   r	   )r8   typingr   r   r   r<   langchain_core.documentsr   )langchain_community.document_loaders.baser   r	   rQ   r   r   <module>rU      s%    	 ' '  - @R** R*r   