o
    |!gW                     @   s   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	 ddl
mZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ zd dlZejdrSed dlmZ W n eyg   d dlZY nw e e jdZ G dd dZ!G dd dZ"dS )    N)JSONDecodeError   )ApiError)AsyncClientWrapperSyncClientWrapper)jsonable_encoder)remove_none_from_dict)UnprocessableEntityError)HttpValidationError)Project)ProjectCreate)UsageAndPlanz1..c                	   @   >  e Zd ZdefddZddddeje deje deje	 fd	d
Z
dddeje dede	fddZdddeje dede	fddZdddeje deje de	fddZdddeje deje dede	fddZdddeje deje ddfddZddddeje deje deje defddZdS )ProjectsClientclient_wrapperc                C   
   || _ d S N_client_wrapperselfr    r   g/mnt/skqttb/ctump_chatbot/chatbot/lib/python3.10/site-packages/llama_cloud/resources/projects/client.py__init__      
zProjectsClient.__init__Norganization_idproject_namer   r   returnc                C   s   | j jjdtj| j   ddt||d| j  dd}d|j	  kr*dk r7n nt
tjt | S |j	d	krFtt
t| z| }W n ty[   t|j	|jd
w t|j	|d
)a]  
        List projects or get one by name

        Parameters:
            - organization_id: typing.Optional[str].

            - project_name: typing.Optional[str].
        ---
        from llama_cloud.client import LlamaCloud

        client = LlamaCloud(
            token="YOUR_TOKEN",
        )
        client.projects.list_projects()
        GET/api/v1/projectsr   <   paramsheaderstimeout   ,    status_codebodyr   httpx_clientrequesturllibparseurljoinget_base_urlr   get_headersr+   pydanticparse_obj_astypingListr   jsonr	   r
   r   r   textr   r   r   	_response_response_jsonr   r   r   list_projects!   s"   
zProjectsClient.list_projectsr   r/   c                C      | j jjdtj| j   ddtd|it|| j 	 dd}d|j
  kr,dk r6n ntt| S |j
d	krEttt| z| }W n tyZ   t|j
|jd
w t|j
|d
)a  
        Create a new project.

        Parameters:
            - organization_id: typing.Optional[str].

            - request: ProjectCreate.
        ---
        from llama_cloud import ProjectCreate
        from llama_cloud.client import LlamaCloud

        client = LlamaCloud(
            token="YOUR_TOKEN",
        )
        client.projects.create_project(
            request=ProjectCreate(
                name="string",
            ),
        )
        POSTr    r!   r   r"   r$   r9   r%   r&   r'   r(   r)   r*   r   r.   r/   r0   r1   r2   r3   r   r   r4   r+   r5   r6   r   r9   r	   r
   r   r   r:   r   r   r/   r<   r=   r   r   r   create_projectD   s$   

zProjectsClient.create_projectc                C   r@   )a-  
        Upsert a project.
        Updates if a project with the same name already exists. Otherwise, creates a new project.

        Parameters:
            - organization_id: typing.Optional[str].

            - request: ProjectCreate.
        ---
        from llama_cloud import ProjectCreate
        from llama_cloud.client import LlamaCloud

        client = LlamaCloud(
            token="YOUR_TOKEN",
        )
        client.projects.upsert_project(
            request=ProjectCreate(
                name="string",
            ),
        )
        PUTr    r!   r   r"   rB   r'   r(   r)   r*   rC   rD   r   r   r   upsert_projectk   s$   

zProjectsClient.upsert_project
project_idc                C   s   | j jjdtj| j   dd| td|i| j  dd}d|j	  kr,dk r6n nt
t| S |j	d	krEtt
t| z| }W n tyZ   t|j	|jd
w t|j	|d
)aM  
        Get a project by ID.

        Parameters:
            - project_id: typing.Optional[str].

            - organization_id: typing.Optional[str].
        ---
        from llama_cloud.client import LlamaCloud

        client = LlamaCloud(
            token="YOUR_TOKEN",
        )
        client.projects.get_project()
        r   r    api/v1/projects/r   r"   r#   r'   r(   r)   r*   r   r.   r/   r0   r1   r2   r3   r   r4   r+   r5   r6   r   r9   r	   r
   r   r   r:   r   rH   r   r<   r=   r   r   r   get_project   s"   

zProjectsClient.get_projectnamec                C   s   | j jjdtj| j   dd| td|itd|i| j 	 dd}d|j
  kr1d	k r;n ntt| S |j
d
krJttt| z| }W n ty_   t|j
|jdw t|j
|d)a  
        Update an existing project.

        Parameters:
            - project_id: typing.Optional[str].

            - organization_id: typing.Optional[str].

            - name: str.
        ---
        from llama_cloud.client import LlamaCloud

        client = LlamaCloud(
            token="YOUR_TOKEN",
        )
        client.projects.update_existing_project(
            name="string",
        )
        rF   r    rI   r   rM   r"   rB   r'   r(   r)   r*   rC   r   rH   r   rM   r<   r=   r   r   r   update_existing_project   s$   


z&ProjectsClient.update_existing_projectc                C   s   | j jjdtj| j   dd| td|i| j  dd}d|j	  kr-dk r.d	S  |j	d
kr=t
tt| z| }W n tyR   t|j	|jdw t|j	|d)aS  
        Delete a project by ID.

        Parameters:
            - project_id: typing.Optional[str].

            - organization_id: typing.Optional[str].
        ---
        from llama_cloud.client import LlamaCloud

        client = LlamaCloud(
            token="YOUR_TOKEN",
        )
        client.projects.delete_project()
        DELETEr    rI   r   r"   r#   r'   r(   Nr)   r*   r   r.   r/   r0   r1   r2   r3   r   r4   r+   r	   r5   r6   r
   r9   r   r   r:   rK   r   r   r   delete_project   s$   

zProjectsClient.delete_projectget_current_invoice_totalr   rT   c                C   s   | j jjdtj| j   dd| dt||d| j  dd}d|j	  kr.d	k r8n nt
t| S |j	d
krGtt
t| z| }W n ty\   t|j	|jdw t|j	|d)a  
        Get usage for a project

        Parameters:
            - project_id: typing.Optional[str].

            - get_current_invoice_total: typing.Optional[bool].

            - organization_id: typing.Optional[str].
        ---
        from llama_cloud.client import LlamaCloud

        client = LlamaCloud(
            token="YOUR_TOKEN",
        )
        client.projects.get_project_usage()
        r   r    rI   /usagerS   r"   r#   r'   r(   r)   r*   r   r.   r/   r0   r1   r2   r3   r   r4   r+   r5   r6   r   r9   r	   r
   r   r   r:   r   rH   rT   r   r<   r=   r   r   r   get_project_usage   s&    	
z ProjectsClient.get_project_usage)__name__
__module____qualname__r   r   r7   Optionalstrr8   r   r>   r   rE   rG   rL   rO   rR   boolr   rX   r   r   r   r   r      sF    
"#"'(("
((%r   c                	   @   r   )AsyncProjectsClientr   c                C   r   r   r   r   r   r   r   r   *  r   zAsyncProjectsClient.__init__Nr   r   r   r   c                   s   | j jjdtj| j   ddt||d| j  ddI dH }d|j	  kr.d	k r;n nt
tjt | S |j	d
krJtt
t| z| }W n ty_   t|j	|jdw t|j	|d)am  
        List projects or get one by name

        Parameters:
            - organization_id: typing.Optional[str].

            - project_name: typing.Optional[str].
        ---
        from llama_cloud.client import AsyncLlamaCloud

        client = AsyncLlamaCloud(
            token="YOUR_TOKEN",
        )
        await client.projects.list_projects()
        r   r    r!   r   r"   r#   Nr'   r(   r)   r*   r-   r;   r   r   r   r>   -  s$   
z!AsyncProjectsClient.list_projectsr?   r/   c                      | j jjdtj| j   ddtd|it|| j 	 ddI dH }d|j
  kr0d	k r:n ntt| S |j
d
krIttt| z| }W n ty^   t|j
|jdw t|j
|d)a  
        Create a new project.

        Parameters:
            - organization_id: typing.Optional[str].

            - request: ProjectCreate.
        ---
        from llama_cloud import ProjectCreate
        from llama_cloud.client import AsyncLlamaCloud

        client = AsyncLlamaCloud(
            token="YOUR_TOKEN",
        )
        await client.projects.create_project(
            request=ProjectCreate(
                name="string",
            ),
        )
        rA   r    r!   r   r"   rB   Nr'   r(   r)   r*   rC   rD   r   r   r   rE   P  s&   

z"AsyncProjectsClient.create_projectc                   r`   )a=  
        Upsert a project.
        Updates if a project with the same name already exists. Otherwise, creates a new project.

        Parameters:
            - organization_id: typing.Optional[str].

            - request: ProjectCreate.
        ---
        from llama_cloud import ProjectCreate
        from llama_cloud.client import AsyncLlamaCloud

        client = AsyncLlamaCloud(
            token="YOUR_TOKEN",
        )
        await client.projects.upsert_project(
            request=ProjectCreate(
                name="string",
            ),
        )
        rF   r    r!   r   r"   rB   Nr'   r(   r)   r*   rC   rD   r   r   r   rG   w  s&   

z"AsyncProjectsClient.upsert_projectrH   c                   s   | j jjdtj| j   dd| td|i| j  ddI dH }d|j	  kr0d	k r:n nt
t| S |j	d
krItt
t| z| }W n ty^   t|j	|jdw t|j	|d)a]  
        Get a project by ID.

        Parameters:
            - project_id: typing.Optional[str].

            - organization_id: typing.Optional[str].
        ---
        from llama_cloud.client import AsyncLlamaCloud

        client = AsyncLlamaCloud(
            token="YOUR_TOKEN",
        )
        await client.projects.get_project()
        r   r    rI   r   r"   r#   Nr'   r(   r)   r*   rJ   rK   r   r   r   rL     s$   

zAsyncProjectsClient.get_projectrM   c                   s   | j jjdtj| j   dd| td|itd|i| j 	 ddI dH }d	|j
  kr5d
k r?n ntt| S |j
dkrNttt| z| }W n tyc   t|j
|jdw t|j
|d)a  
        Update an existing project.

        Parameters:
            - project_id: typing.Optional[str].

            - organization_id: typing.Optional[str].

            - name: str.
        ---
        from llama_cloud.client import AsyncLlamaCloud

        client = AsyncLlamaCloud(
            token="YOUR_TOKEN",
        )
        await client.projects.update_existing_project(
            name="string",
        )
        rF   r    rI   r   rM   r"   rB   Nr'   r(   r)   r*   rC   rN   r   r   r   rO     s&   


z+AsyncProjectsClient.update_existing_projectc                   s   | j jjdtj| j   dd| td|i| j  ddI dH }d|j	  kr1d	k r2dS  |j	d
krAt
tt| z| }W n tyV   t|j	|jdw t|j	|d)ac  
        Delete a project by ID.

        Parameters:
            - project_id: typing.Optional[str].

            - organization_id: typing.Optional[str].
        ---
        from llama_cloud.client import AsyncLlamaCloud

        client = AsyncLlamaCloud(
            token="YOUR_TOKEN",
        )
        await client.projects.delete_project()
        rP   r    rI   r   r"   r#   Nr'   r(   r)   r*   rQ   rK   r   r   r   rR     s&   

z"AsyncProjectsClient.delete_projectrS   rT   c                   s   | j jjdtj| j   dd| dt||d| j  ddI dH }d	|j	  kr2d
k r<n nt
t| S |j	dkrKtt
t| z| }W n ty`   t|j	|jdw t|j	|d)a  
        Get usage for a project

        Parameters:
            - project_id: typing.Optional[str].

            - get_current_invoice_total: typing.Optional[bool].

            - organization_id: typing.Optional[str].
        ---
        from llama_cloud.client import AsyncLlamaCloud

        client = AsyncLlamaCloud(
            token="YOUR_TOKEN",
        )
        await client.projects.get_project_usage()
        r   r    rI   rU   rS   r"   r#   Nr'   r(   r)   r*   rV   rW   r   r   r   rX     s(    	
z%AsyncProjectsClient.get_project_usage)rY   rZ   r[   r   r   r7   r\   r]   r8   r   r>   r   rE   rG   rL   rO   rR   r^   r   rX   r   r   r   r   r_   )  sb    
"#"')
$
)
'r_   )#r7   urllib.parser0   json.decoderr   core.api_errorr   core.client_wrapperr   r   core.jsonable_encoderr   core.remove_none_from_dictr   !errors.unprocessable_entity_errorr	   types.http_validation_errorr
   types.projectr   types.project_creater   types.usage_and_planr   r5   __version__
startswithImportErrorpydantic.v1v1castAnyOMITr   r_   r   r   r   r   <module>   s2     