
    jT                         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mZ ddlmZ  ej2                  ej4                  d      Z G d d      Z G d d      Zy)    N   )AsyncClientWrapperSyncClientWrapper)RequestOptions)JsonListStringWrite)OptimizationPagePublic)OptimizationPublic)OptimizationStudioConfigWrite)OptimizationStudioLog)OptimizationWriteStatus   )AsyncRawOptimizationsClientRawOptimizationsClient)OptimizationUpdateStatus.c                   |   e Zd ZdefdZedefd       Zdddede	j                  e   ddfd	Zddd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	j                  e   de	j                  e   de	j                  e   defdZeeeeedddededede	j                  e   de	j                  e   de	j                  e   de	j                  e   de	j                  ej,                     de	j                  e   ddfdZeeeeedddededede	j                  e   de	j                  e   de	j                  e   de	j                  e   de	j                  ej,                     de	j                  e   ddfdZddde	j2                  e   de	j                  e   ddfdZddd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 y)!OptimizationsClientclient_wrapperc                &    t        |      | _        y N)r   )r   _raw_clientselfr   s     {/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/rest_api/optimizations/client.py__init__zOptimizationsClient.__init__   s    1P    returnc                     | j                   S )z
        Retrieves a raw implementation of this client that returns raw responses.

        Returns
        -------
        RawOptimizationsClient
        r   r   s    r   with_raw_responsez%OptimizationsClient.with_raw_response        r   Nrequest_optionsidr#   c                T    | j                   j                  ||      }|j                  S )a  
        Cancel Studio optimizations 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.optimizations.cancel_studio_optimizations(id='id', )
        r"   r   cancel_studio_optimizationsdatar   r$   r#   	_responses       r   r'   z/OptimizationsClient.cancel_studio_optimizations$   s*    * $$@@Ud@e	~~r   pagesize
dataset_idnamedataset_namedataset_deletedfiltersr#   r,   r-   r.   r/   r0   r1   r2   c          
      `    | j                   j                  ||||||||      }	|	j                  S )a  
        Find optimizations

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

        size : typing.Optional[int]

        dataset_id : typing.Optional[str]

        name : typing.Optional[str]

        dataset_name : typing.Optional[str]

        dataset_deleted : typing.Optional[bool]

        filters : typing.Optional[str]

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

        Returns
        -------
        OptimizationPagePublic
            Optimizations resource

        Examples
        --------
        from Opik import OpikApi
        client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        client.optimizations.find_optimizations()
        r+   r   find_optimizationsr(   
r   r,   r-   r.   r/   r0   r1   r2   r#   r*   s
             r   r5   z&OptimizationsClient.find_optimizations<   sD    Z $$77!%++ 8 	
	 ~~r   r$   r/   metadatastudio_configlast_updated_atr#   objective_namestatusr8   r9   r:   c       	         b    | j                   j                  |||||||||		      }
|
j                  S )ae  
        Create optimization

        Parameters
        ----------
        dataset_name : str

        objective_name : str

        status : OptimizationWriteStatus

        id : typing.Optional[str]

        name : typing.Optional[str]

        metadata : typing.Optional[JsonListStringWrite]

        studio_config : typing.Optional[OptimizationStudioConfigWrite]

        last_updated_at : typing.Optional[dt.datetime]

        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.optimizations.create_optimization(dataset_name='dataset_name', objective_name='objective_name', status="running", )
        	r0   r;   r<   r$   r/   r8   r9   r:   r#   r   create_optimizationr(   r   r0   r;   r<   r$   r/   r8   r9   r:   r#   r*   s              r   r@   z'OptimizationsClient.create_optimizationu   G    ^ $$88%)'++ 9 

	 ~~r   c       	         b    | j                   j                  |||||||||		      }
|
j                  S )ae  
        Upsert optimization

        Parameters
        ----------
        dataset_name : str

        objective_name : str

        status : OptimizationWriteStatus

        id : typing.Optional[str]

        name : typing.Optional[str]

        metadata : typing.Optional[JsonListStringWrite]

        studio_config : typing.Optional[OptimizationStudioConfigWrite]

        last_updated_at : typing.Optional[dt.datetime]

        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.optimizations.upsert_optimization(dataset_name='dataset_name', objective_name='objective_name', status="running", )
        r>   r   upsert_optimizationr(   rA   s              r   rE   z'OptimizationsClient.upsert_optimization   rB   r   idsc                T    | j                   j                  ||      }|j                  S )a  
        Delete optimizations by id

        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.optimizations.delete_optimizations_by_id(ids=['ids'], )
        rF   r#   r   delete_optimizations_by_idr(   r   rF   r#   r*   s       r   rJ   z.OptimizationsClient.delete_optimizations_by_id   s*    . $$??CYh?i	~~r   c                T    | j                   j                  ||      }|j                  S )a  
        Get optimization by id

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

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

        Returns
        -------
        OptimizationPublic
            Optimization resource

        Examples
        --------
        from Opik import OpikApi
        client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        client.optimizations.get_optimization_by_id(id='id', )
        r"   r   get_optimization_by_idr(   r)   s       r   rN   z*OptimizationsClient.get_optimization_by_id  s*    0 $$;;BP_;`	~~r   r/   r<   r#   c                X    | j                   j                  ||||      }|j                  S )a9  
        Update optimization by id

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

        name : typing.Optional[str]

        status : typing.Optional[OptimizationUpdateStatus]

        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.optimizations.update_optimizations_by_id(id='id', )
        rO   r   update_optimizations_by_idr(   r   r$   r/   r<   r#   r*   s         r   rR   z.OptimizationsClient.update_optimizations_by_id"  s6    @ $$??T&/ @ 
	 ~~r   c                T    | j                   j                  ||      }|j                  S )a"  
        Get presigned S3 URL for downloading optimization logs

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

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

        Returns
        -------
        OptimizationStudioLog
            Logs response

        Examples
        --------
        from Opik import OpikApi
        client = OpikApi(api_key="YOUR_API_KEY", workspace_name="YOUR_WORKSPACE_NAME", )
        client.optimizations.get_studio_optimization_logs(id='id', )
        r"   r   get_studio_optimization_logsr(   r)   s       r   rV   z0OptimizationsClient.get_studio_optimization_logsG  s*    0 $$AA"VeAf	~~r   )!__name__
__module____qualname__r   r   propertyr   r    strtypingOptionalr   r'   intboolr   r5   OMITr   r   r
   dtdatetimer@   rE   SequencerJ   r	   rN   r   rR   r   rV    r   r   r   r      s|   Q*; Q  #9     jn c vWeGf rv 6 &*%)+/%)-115(,;?7 ooc"7 ooc"	7
 OOC(7 ooc"7 ooc*7  .7 %7  87 
 7~ $(%)9=HL8<;?: : 	:
 (: OOC : ooc": //"56: 'DE:  5:  8: 
:D $(%)9=HL8<;?: : 	:
 (: OOC : ooc": //"56: 'DE:  5:  8: 
:z `dooc*=C__^=\	6 NR+1??>+J	> &*<@;?## ooc"	#
  89#  8# 
#L NR+1??>+J	r   r   c                   |   e Zd ZdefdZedefd       Zdddede	j                  e   ddfd	Zddd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	j                  e   de	j                  e   de	j                  e   defdZeeeeedddededede	j                  e   de	j                  e   de	j                  e   de	j                  e   de	j                  ej,                     de	j                  e   ddfdZeeeeedddededede	j                  e   de	j                  e   de	j                  e   de	j                  e   de	j                  ej,                     de	j                  e   ddfdZddde	j2                  e   de	j                  e   ddfdZddd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 y)!AsyncOptimizationsClientr   c                &    t        |      | _        y r   )r   r   r   s     r   r   z!AsyncOptimizationsClient.__init__d  s    6nUr   r   c                     | j                   S )z
        Retrieves a raw implementation of this client that returns raw responses.

        Returns
        -------
        AsyncRawOptimizationsClient
        r   r   s    r   r    z*AsyncOptimizationsClient.with_raw_responseg  r!   r   Nr"   r$   r#   c                p   K   | j                   j                  ||       d{   }|j                  S 7 w)aJ  
        Cancel Studio optimizations 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.optimizations.cancel_studio_optimizations(id='id', )
        asyncio.run(main())
        r"   Nr&   r)   s       r   r'   z4AsyncOptimizationsClient.cancel_studio_optimizationsr  s7     4 **FFr[jFkk	~~ l   !646r+   r,   r-   r.   r/   r0   r1   r2   c          
      |   K   | j                   j                  ||||||||       d{   }	|	j                  S 7 w)al  
        Find optimizations

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

        size : typing.Optional[int]

        dataset_id : typing.Optional[str]

        name : typing.Optional[str]

        dataset_name : typing.Optional[str]

        dataset_deleted : typing.Optional[bool]

        filters : typing.Optional[str]

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

        Returns
        -------
        OptimizationPagePublic
            Optimizations 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.optimizations.find_optimizations()
        asyncio.run(main())
        r+   Nr4   r6   s
             r   r5   z+AsyncOptimizationsClient.find_optimizations  sR     ` **==!%++ > 	
 	
	 ~~	
s   '<:<r7   r;   r<   r8   r9   r:   c       	         ~   K   | j                   j                  |||||||||		       d{   }
|
j                  S 7 w)a  
        Create optimization

        Parameters
        ----------
        dataset_name : str

        objective_name : str

        status : OptimizationWriteStatus

        id : typing.Optional[str]

        name : typing.Optional[str]

        metadata : typing.Optional[JsonListStringWrite]

        studio_config : typing.Optional[OptimizationStudioConfigWrite]

        last_updated_at : typing.Optional[dt.datetime]

        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.optimizations.create_optimization(dataset_name='dataset_name', objective_name='objective_name', status="running", )
        asyncio.run(main())
        r>   Nr?   rA   s              r   r@   z,AsyncOptimizationsClient.create_optimization  U     d **>>%)'++ ? 

 

	 ~~

   (=;=c       	         ~   K   | j                   j                  |||||||||		       d{   }
|
j                  S 7 w)a  
        Upsert optimization

        Parameters
        ----------
        dataset_name : str

        objective_name : str

        status : OptimizationWriteStatus

        id : typing.Optional[str]

        name : typing.Optional[str]

        metadata : typing.Optional[JsonListStringWrite]

        studio_config : typing.Optional[OptimizationStudioConfigWrite]

        last_updated_at : typing.Optional[dt.datetime]

        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.optimizations.upsert_optimization(dataset_name='dataset_name', objective_name='objective_name', status="running", )
        asyncio.run(main())
        r>   NrD   rA   s              r   rE   z,AsyncOptimizationsClient.upsert_optimization
  rm   rn   rF   c                p   K   | j                   j                  ||       d{   }|j                  S 7 w)aX  
        Delete optimizations by id

        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.optimizations.delete_optimizations_by_id(ids=['ids'], )
        asyncio.run(main())
        rH   NrI   rK   s       r   rJ   z3AsyncOptimizationsClient.delete_optimizations_by_idI  s7     4 **EE#_nEoo	~~ prj   c                p   K   | j                   j                  ||       d{   }|j                  S 7 w)aj  
        Get optimization by id

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

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

        Returns
        -------
        OptimizationPublic
            Optimization 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.optimizations.get_optimization_by_id(id='id', )
        asyncio.run(main())
        r"   NrM   r)   s       r   rN   z/AsyncOptimizationsClient.get_optimization_by_idf  s7     6 **AA"VeAff	~~ grj   rO   c                t   K   | j                   j                  ||||       d{   }|j                  S 7 w)a  
        Update optimization by id

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

        name : typing.Optional[str]

        status : typing.Optional[OptimizationUpdateStatus]

        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.optimizations.update_optimizations_by_id(id='id', )
        asyncio.run(main())
        rO   NrQ   rS   s         r   rR   z3AsyncOptimizationsClient.update_optimizations_by_id  sD     F **EET&/ F 
 
	 ~~
s   #868c                p   K   | j                   j                  ||       d{   }|j                  S 7 w)a  
        Get presigned S3 URL for downloading optimization logs

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

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

        Returns
        -------
        OptimizationStudioLog
            Logs response

        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.optimizations.get_studio_optimization_logs(id='id', )
        asyncio.run(main())
        r"   NrU   r)   s       r   rV   z5AsyncOptimizationsClient.get_studio_optimization_logs  s7     6 **GG\kGll	~~ mrj   )!rW   rX   rY   r   r   rZ   r   r    r[   r\   r]   r   r'   r^   r_   r   r5   r`   r   r   r
   ra   rb   r@   rE   rc   rJ   r	   rN   r   rR   r   rV   rd   r   r   rf   rf   c  s   V*< V  #>     NR+1??>+J	@ &*%)+/%)-115(,;?: ooc": ooc"	:
 OOC(: ooc": ooc*:  .: %:  8: 
 :D $(%)9=HL8<;?= = 	=
 (= OOC = ooc"= //"56= 'DE=  5=  8= 
=J $(%)9=HL8<;?= = 	=
 (= OOC = ooc"= //"56= 'DE=  5=  8= 
=@ `dooc*=C__^=\	< NR+1??>+J	D &*<@;?&& ooc"	&
  89&  8& 
&R NR+1??>+J	r   rf   )rb   ra   r\   core.client_wrapperr   r   core.request_optionsr   types.json_list_string_writer   types.optimization_page_publicr   types.optimization_publicr	   &types.optimization_studio_config_writer
   types.optimization_studio_logr   types.optimization_write_statusr   
raw_clientr   r    types.optimization_update_statusr   castAnyr`   r   rf   rd   r   r   <module>r      s\      G 1 > C : R A E K F v{{6::s#K K\
e er   