
    jg                     V   d dl Zd dl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 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m Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z(  ejR                  ejT                  d      Z+ G d d      Z, G d d      Z-y)    N   )AsyncClientWrapperSyncClientWrapper)RequestOptions)BreakdownConfigPublic)FeedbackScoreNames)ProjectDetailed)ProjectMetricResponsePublic)ProjectPagePublic)ProjectPublic)ProjectStatsSummary)SpanFilterPublic)TokenUsageNames)TraceFilterPublic)TraceThreadFilterPublic   )AsyncRawProjectsClientRawProjectsClient)"ProjectMetricRequestPublicInterval)$ProjectMetricRequestPublicMetricType)ProjectUpdateVisibility)ProjectWriteVisibility.c                      e Zd ZdefdZedefd       Zdddddddej                  e
   dej                  e
   d	ej                  e   d
ej                  e   dej                  e   defdZeeddd	edej                  e   dej                  e   dej                  e   ddf
dZdddedej                  e   defdZdddedej                  e   ddfdZeeeddded	ej                  e   dej                  e   dej                  e   dej                  e   ddfdZdddej.                  e   dej                  e   ddfdZddddej                  e   dej                  e   defdZdddedej                  e   defdZeeeeeeeedd	dedej                  e   dej                  e   d ej                  ej@                     d!ej                  ej@                     d"ej                  ej.                  e!      d#ej                  ej.                  e"      d$ej                  ej.                  e#      d%ej                  e$   dej                  e   de%fd&Z&dddddddej                  e
   dej                  e
   d	ej                  e   d
ej                  e   dej                  e   de'fd'Z(ddd	edej                  e   de)fd(Z*y))ProjectsClientclient_wrapperc                &    t        |      | _        y N)r   )r   _raw_clientselfr   s     v/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/rest_api/projects/client.py__init__zProjectsClient.__init__   s    ,NK    returnc                     | j                   S )z
        Retrieves a raw implementation of this client that returns raw responses.

        Returns
        -------
        RawProjectsClient
        r   r    s    r!   with_raw_responsez ProjectsClient.with_raw_response!        r#   Npagesizenamesortingrequest_optionsr+   r,   r-   r.   r/   c                Z    | j                   j                  |||||      }|j                  S )a`  
        Find projects

        Parameters
        ----------
        page : typing.Optional[int]

        size : typing.Optional[int]

        name : typing.Optional[str]

        sorting : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        ProjectPagePublic
            Project resource

        Examples
        --------
        from Opik import OpikApi
        client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        client.projects.find_projects()
        r*   r   find_projectsdatar    r+   r,   r-   r.   r/   	_responses          r!   r2   zProjectsClient.find_projects,   s7    H $$22DtWo 3 
	 ~~r#   
visibilitydescriptionr/   r7   r8   c                X    | j                   j                  ||||      }|j                  S )a,  
        Create project

        Parameters
        ----------
        name : str

        visibility : typing.Optional[ProjectWriteVisibility]

        description : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from Opik import OpikApi
        client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        client.projects.create_project(name='name', )
        r-   r7   r8   r/   r   create_projectr3   r    r-   r7   r8   r/   r5   s         r!   r<   zProjectsClient.create_projectU   s6    @ $$33*+Wf 4 
	 ~~r#   r/   idc                T    | j                   j                  ||      }|j                  S )a  
        Get project by id

        Parameters
        ----------
        id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        ProjectPublic
            Project resource

        Examples
        --------
        from Opik import OpikApi
        client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        client.projects.get_project_by_id(id='id', )
        r>   r   get_project_by_idr3   r    r?   r/   r5   s       r!   rB   z ProjectsClient.get_project_by_idz   s)    , $$66r?6[	~~r#   c                T    | j                   j                  ||      }|j                  S )a  
        Delete project by id

        Parameters
        ----------
        id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from Opik import OpikApi
        client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        client.projects.delete_project_by_id(id='id', )
        r>   r   delete_project_by_idr3   rC   s       r!   rF   z#ProjectsClient.delete_project_by_id   s)    * $$99"o9^	~~r#   r-   r8   r7   r/   c                Z    | j                   j                  |||||      }|j                  S )aR  
        Update project by id

        Parameters
        ----------
        id : str

        name : typing.Optional[str]

        description : typing.Optional[str]

        visibility : typing.Optional[ProjectUpdateVisibility]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from Opik import OpikApi
        client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        client.projects.update_project(id='id', )
        rG   r   update_projectr3   r    r?   r-   r8   r7   r/   r5   s          r!   rJ   zProjectsClient.update_project   s8    F $$33T{z[j 4 
	 ~~r#   idsc                T    | j                   j                  ||      }|j                  S )a  
        Delete projects batch

        Parameters
        ----------
        ids : typing.Sequence[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from Opik import OpikApi
        client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        client.projects.delete_projects_batch(ids=['ids'], )
        rL   r/   r   delete_projects_batchr3   r    rL   r/   r5   s       r!   rP   z$ProjectsClient.delete_projects_batch   s*    . $$::sTc:d	~~r#   project_idsr/   rS   c                T    | j                   j                  ||      }|j                  S )a4  
        Find Feedback Score names By Project Ids

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

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        FeedbackScoreNames
            Feedback Scores resource

        Examples
        --------
        from Opik import OpikApi
        client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        client.projects.find_feedback_score_names_by_project_ids()
        rR   r   (find_feedback_score_names_by_project_idsr3   r    rS   r/   r5   s       r!   rV   z7ProjectsClient.find_feedback_score_names_by_project_ids   s1    0 $$MM#_ N 
	 ~~r#   c                T    | j                   j                  ||      }|j                  S )a  
        Find Token Usage names

        Parameters
        ----------
        id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        TokenUsageNames
            Token Usage names resource

        Examples
        --------
        from Opik import OpikApi
        client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        client.projects.find_token_usage_names(id='id', )
        r>   r   find_token_usage_namesr3   rC   s       r!   rZ   z%ProjectsClient.find_token_usage_names
  s*    0 $$;;BP_;`	~~r#   	metric_typeintervalinterval_startinterval_endspan_filterstrace_filtersthread_filters	breakdownr/   r\   r]   r^   r_   r`   ra   rb   rc   c       	         d    | j                   j                  |||||||||	|

      }|j                  S )a3  
        Gets specified metrics for a project

        Parameters
        ----------
        id : str

        metric_type : typing.Optional[ProjectMetricRequestPublicMetricType]

        interval : typing.Optional[ProjectMetricRequestPublicInterval]

        interval_start : typing.Optional[dt.datetime]

        interval_end : typing.Optional[dt.datetime]

        span_filters : typing.Optional[typing.Sequence[SpanFilterPublic]]

        trace_filters : typing.Optional[typing.Sequence[TraceFilterPublic]]

        thread_filters : typing.Optional[typing.Sequence[TraceThreadFilterPublic]]

        breakdown : typing.Optional[BreakdownConfigPublic]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        ProjectMetricResponsePublic
            Project Metrics

        Examples
        --------
        from Opik import OpikApi
        client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        client.projects.get_project_metrics(id='id', )
        r[   r   get_project_metricsr3   r    r?   r\   r]   r^   r_   r`   ra   rb   rc   r/   r5   s               r!   rf   z"ProjectsClient.get_project_metrics%  sJ    f $$88#)%%')+ 9 
	 ~~r#   c                Z    | j                   j                  |||||      }|j                  S )ag  
        Get Project Stats

        Parameters
        ----------
        page : typing.Optional[int]

        size : typing.Optional[int]

        name : typing.Optional[str]

        sorting : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        ProjectStatsSummary
            Project Stats

        Examples
        --------
        from Opik import OpikApi
        client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        client.projects.get_project_stats()
        r*   r   get_project_statsr3   r4   s          r!   rj   z ProjectsClient.get_project_statsf  s7    H $$66DtWo 7 
	 ~~r#   c                T    | j                   j                  ||      }|j                  S )a  
        Retrieve project

        Parameters
        ----------
        name : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        ProjectDetailed
            Project resource

        Examples
        --------
        from Opik import OpikApi
        client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        client.projects.retrieve_project(name='name', )
        r-   r/   r   retrieve_projectr3   r    r-   r/   r5   s       r!   rn   zProjectsClient.retrieve_project  s*    0 $$554Q`5a	~~r#   )+__name__
__module____qualname__r   r"   propertyr   r(   typingOptionalintstrr   r   r2   OMITr   r<   r   rB   rF   r   rJ   SequencerP   r   rV   r   rZ   r   r   dtdatetimer   r   r   r   r
   rf   r   rj   r	   rn    r#   r!   r   r      s*   L*; L  #4     &*%)%)(,;?' ooc"' ooc"	'
 ooc"' %'  8' 
'Z ?C,0;?# # OO$:;	#
 __S)#  8# 
#J `d C V__^=\ hu 2 cg s P^@_ ko 8 &*,0?C;?&& ooc"	&
 __S)& OO$;<&  8& 
&R `dooc*=C__^=\	6 6:nr$ooc2LROO\jLk	< NR+1??>+J	> NRHL7;59KOMQTX<@;??? __%IJ	?
 //"DE? 4? oobkk2? oofoo6F&GH? v7H'IJ? 8O(PQ? ??#89?  8? 
%?H &*%)%)(,;?' ooc"' ooc"	'
 ooc"' %'  8' 
'T PT-3__^-L	r#   r   c                      e Zd ZdefdZedefd       Zdddddddej                  e
   dej                  e
   d	ej                  e   d
ej                  e   dej                  e   defdZeeddd	edej                  e   dej                  e   dej                  e   ddf
dZdddedej                  e   defdZdddedej                  e   ddfdZeeeddded	ej                  e   dej                  e   dej                  e   dej                  e   ddfdZdddej.                  e   dej                  e   ddfdZddddej                  e   dej                  e   defdZdddedej                  e   defdZeeeeeeeedd	dedej                  e   dej                  e   d ej                  ej@                     d!ej                  ej@                     d"ej                  ej.                  e!      d#ej                  ej.                  e"      d$ej                  ej.                  e#      d%ej                  e$   dej                  e   de%fd&Z&dddddddej                  e
   dej                  e
   d	ej                  e   d
ej                  e   dej                  e   de'fd'Z(ddd	edej                  e   de)fd(Z*y))AsyncProjectsClientr   c                &    t        |      | _        y r   )r   r   r   s     r!   r"   zAsyncProjectsClient.__init__  s    1Pr#   r$   c                     | j                   S )z
        Retrieves a raw implementation of this client that returns raw responses.

        Returns
        -------
        AsyncRawProjectsClient
        r&   r'   s    r!   r(   z%AsyncProjectsClient.with_raw_response  r)   r#   Nr*   r+   r,   r-   r.   r/   c                v   K   | j                   j                  |||||       d{   }|j                  S 7 w)a  
        Find projects

        Parameters
        ----------
        page : typing.Optional[int]

        size : typing.Optional[int]

        name : typing.Optional[str]

        sorting : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        ProjectPagePublic
            Project resource

        Examples
        --------
        from Opik import AsyncOpikApi
        import asyncio
        client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        async def main() -> None:
            await client.projects.find_projects()
        asyncio.run(main())
        r*   Nr1   r4   s          r!   r2   z!AsyncProjectsClient.find_projects  sE     N **88DtWo 9 
 
	 ~~
   $979r6   r7   r8   c                t   K   | j                   j                  ||||       d{   }|j                  S 7 w)a  
        Create project

        Parameters
        ----------
        name : str

        visibility : typing.Optional[ProjectWriteVisibility]

        description : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from Opik import AsyncOpikApi
        import asyncio
        client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        async def main() -> None:
            await client.projects.create_project(name='name', )
        asyncio.run(main())
        r:   Nr;   r=   s         r!   r<   z"AsyncProjectsClient.create_project  sD     F **99*+Wf : 
 
	 ~~
s   #868r>   r?   c                p   K   | j                   j                  ||       d{   }|j                  S 7 w)aQ  
        Get project by id

        Parameters
        ----------
        id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        ProjectPublic
            Project resource

        Examples
        --------
        from Opik import AsyncOpikApi
        import asyncio
        client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        async def main() -> None:
            await client.projects.get_project_by_id(id='id', )
        asyncio.run(main())
        r>   NrA   rC   s       r!   rB   z%AsyncProjectsClient.get_project_by_id  s7     6 **<<RQ`<aa	~~ b   !646c                p   K   | j                   j                  ||       d{   }|j                  S 7 w)a1  
        Delete project by id

        Parameters
        ----------
        id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from Opik import AsyncOpikApi
        import asyncio
        client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        async def main() -> None:
            await client.projects.delete_project_by_id(id='id', )
        asyncio.run(main())
        r>   NrE   rC   s       r!   rF   z(AsyncProjectsClient.delete_project_by_id,  s7     0 **??Tc?dd	~~ er   rG   c                v   K   | j                   j                  |||||       d{   }|j                  S 7 w)a  
        Update project by id

        Parameters
        ----------
        id : str

        name : typing.Optional[str]

        description : typing.Optional[str]

        visibility : typing.Optional[ProjectUpdateVisibility]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from Opik import AsyncOpikApi
        import asyncio
        client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        async def main() -> None:
            await client.projects.update_project(id='id', )
        asyncio.run(main())
        rG   NrI   rK   s          r!   rJ   z"AsyncProjectsClient.update_projectG  sF     L **99T{z[j : 
 
	 ~~
r   rL   c                p   K   | j                   j                  ||       d{   }|j                  S 7 w)aI  
        Delete projects batch

        Parameters
        ----------
        ids : typing.Sequence[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from Opik import AsyncOpikApi
        import asyncio
        client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        async def main() -> None:
            await client.projects.delete_projects_batch(ids=['ids'], )
        asyncio.run(main())
        rN   NrO   rQ   s       r!   rP   z)AsyncProjectsClient.delete_projects_batchr  s7     4 **@@SZi@jj	~~ kr   rR   rS   c                p   K   | j                   j                  ||       d{   }|j                  S 7 w)a  
        Find Feedback Score names By Project Ids

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

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        FeedbackScoreNames
            Feedback Scores resource

        Examples
        --------
        from Opik import AsyncOpikApi
        import asyncio
        client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        async def main() -> None:
            await client.projects.find_feedback_score_names_by_project_ids()
        asyncio.run(main())
        rR   NrU   rW   s       r!   rV   z<AsyncProjectsClient.find_feedback_score_names_by_project_ids  s?     6 **SS#_ T 
 
	 ~~
r   c                p   K   | j                   j                  ||       d{   }|j                  S 7 w)ag  
        Find Token Usage names

        Parameters
        ----------
        id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        TokenUsageNames
            Token Usage names resource

        Examples
        --------
        from Opik import AsyncOpikApi
        import asyncio
        client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        async def main() -> None:
            await client.projects.find_token_usage_names(id='id', )
        asyncio.run(main())
        r>   NrY   rC   s       r!   rZ   z*AsyncProjectsClient.find_token_usage_names  s7     6 **AA"VeAff	~~ gr   r[   r\   r]   r^   r_   r`   ra   rb   rc   c       	            K   | j                   j                  |||||||||	|

       d{   }|j                  S 7 w)a  
        Gets specified metrics for a project

        Parameters
        ----------
        id : str

        metric_type : typing.Optional[ProjectMetricRequestPublicMetricType]

        interval : typing.Optional[ProjectMetricRequestPublicInterval]

        interval_start : typing.Optional[dt.datetime]

        interval_end : typing.Optional[dt.datetime]

        span_filters : typing.Optional[typing.Sequence[SpanFilterPublic]]

        trace_filters : typing.Optional[typing.Sequence[TraceFilterPublic]]

        thread_filters : typing.Optional[typing.Sequence[TraceThreadFilterPublic]]

        breakdown : typing.Optional[BreakdownConfigPublic]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        ProjectMetricResponsePublic
            Project Metrics

        Examples
        --------
        from Opik import AsyncOpikApi
        import asyncio
        client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        async def main() -> None:
            await client.projects.get_project_metrics(id='id', )
        asyncio.run(main())
        r[   Nre   rg   s               r!   rf   z'AsyncProjectsClient.get_project_metrics  sX     l **>>#)%%')+ ? 
 
	 ~~
s   )><>c                v   K   | j                   j                  |||||       d{   }|j                  S 7 w)a  
        Get Project Stats

        Parameters
        ----------
        page : typing.Optional[int]

        size : typing.Optional[int]

        name : typing.Optional[str]

        sorting : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        ProjectStatsSummary
            Project Stats

        Examples
        --------
        from Opik import AsyncOpikApi
        import asyncio
        client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        async def main() -> None:
            await client.projects.get_project_stats()
        asyncio.run(main())
        r*   Nri   r4   s          r!   rj   z%AsyncProjectsClient.get_project_stats  sE     N **<<DtWo = 
 
	 ~~
r   c                p   K   | j                   j                  ||       d{   }|j                  S 7 w)aW  
        Retrieve project

        Parameters
        ----------
        name : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        ProjectDetailed
            Project resource

        Examples
        --------
        from Opik import AsyncOpikApi
        import asyncio
        client = AsyncOpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        async def main() -> None:
            await client.projects.retrieve_project(name='name', )
        asyncio.run(main())
        rl   Nrm   ro   s       r!   rn   z$AsyncProjectsClient.retrieve_project=  s7     6 **;;Wf;gg	~~ hr   )+rp   rq   rr   r   r"   rs   r   r(   rt   ru   rv   rw   r   r   r2   rx   r   r<   r   rB   rF   r   rJ   ry   rP   r   rV   r   rZ   r   r   rz   r{   r   r   r   r   r
   rf   r   rj   r	   rn   r|   r#   r!   r~   r~     s:   Q*< Q  #9     &*%)%)(,;?* ooc"* ooc"	*
 ooc"* %*  8* 
*` ?C,0;?& & OO$:;	&
 __S)&  8& 
&R NR+1??>+J	< im S fooVdFe qu > &*,0?C;?)) ooc"	)
 __S)) OO$;<)  8) 
)X `dooc*=C__^=\	< 6:nr$ooc2LROO\jLk	B NR+1??>+J	D NRHL7;59KOMQTX<@;?BB __%IJ	B
 //"DEB 4B oobkk2B oofoo6F&GHB v7H'IJB 8O(PQB ??#89B  8B 
%BN &*%)%)(,;?* ooc"* ooc"	*
 ooc"* %*  8* 
*Z PT-3__^-L	r#   r~   ).r{   rz   rt   core.client_wrapperr   r   core.request_optionsr   types.breakdown_config_publicr   types.feedback_score_namesr   types.project_detailedr	   $types.project_metric_response_publicr
   types.project_page_publicr   types.project_publicr   types.project_stats_summaryr   types.span_filter_publicr   types.token_usage_namesr   types.trace_filter_publicr    types.trace_thread_filter_publicr   
raw_clientr   r   ,types.project_metric_request_public_intervalr   /types.project_metric_request_public_metric_typer   types.project_update_visibilityr   types.project_write_visibilityr   castAnyrx   r   r~   r|   r#   r!   <module>r      st      G 1 A ; 4 N 9 0 = 7 5 9 F A \ a D B v{{6::s#K K\n nr#   