+
    6&c                   s   ^ RI Ht ^ RI Ht ^ RI Ht ^ RI Ht ^ RI Ht ^ RI Ht ^ RI Ht ^ RI Ht ^ R	I H	t	 ^ R
I
t
]
P                  R8  d   ^ RI Ht M^ RIHt ^ R
It^ R
It^ R
It^ R
It^ R
It^ R
It^ R
It^ R
It^ R
It]P.                  ! R4      t ! R R4      t]P4                  ! R
R7      R R l4       t]P4                  ! R
R7      R R l4       t]R8X  dv   ]P<                  ! ]
P>                  R7      t ]PC                  ]PD                  4       ]PG                  ] 4       ^ R
I$t$]$PJ                  ! 4       w  t&t']
PP                  ! ]&4       R
# R
# )i    )Callable)Optional)Dict)List)	Generator)Set)Union)Any)castN)Literalzibus-typing-boosterc                   s  a  ] tR t^3t o RV 3R lR lltV 3R lR ltV 3R lR ltV 3R lR ltV 3R	 lR
 ltV 3R lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltRV 3R lR lltRV 3R lR lltV 3R lR ltRtV tR# )ItbOllamaClientc                s$   < V ^8  d   QhRS[ RR/# )   timeoutreturnN)Zfloatformat__classdict__   "3/usr/share/ibus-typing-booster/engine/itb_ollama.py__annotate__ItbOllamaClient.__annotate__=   s     '3 '3'3 
'3    c                s   \         P                  P                  R 4      ;'       g    RV n        RV n        RV n        RV n        RV n        / V n         \        P                  ! V P                  VR7      V n        V P                  f   R#  V P                  P                  R4       T P                  P                  R4      pTP"                  \        P$                  P&                  8X  d-   RT n        TP)                  4       P                  R	R4      T n        T P                  P                  R
4      pTP"                  \        P$                  P&                  8X  dl   TP)                  4       P                  R. 4      pTeH   T FA  pTP                  RR4      R8X  d   RT n        TP                  RR4      R8X  g   K:  RT n        KC  	  T P
                  R8X  d!   \+        4       T n        \-        4       T n        R# R#   \         d)   p\        P                  RT4       RT n         Rp?ELRp?ii ; i  \        P                   d2   p\        P                  RT4       \!        T4      T n         Rp?R# Rp?ii ; i)ZOLLAMA_HOSTzhttp://localhost:11434N )Zbase_urlr   z!Failed to create httpx.Client: %szFailed to connect to server: %sz/api/versionollamaversion
/v1/modelsdataZowned_byZlibraryZllamacppramalama)osZenvironget_host_client_server_version_error_ramalama_shortnameshttpxZClient	ExceptionLOGGER	exceptionConnectErrorerrorstrstatus_codecodesOKjsonget_ramalama_shortnamesget_ramalama_version)selfr   r)   respr   Z
model_dict   &&    r   __init__ZItbOllamaClient.__init__=   s   
 ZZ^^M2NN6N
/3:<46!	  <<WMDL <<	LLR 
 ||/u{{~~-#DL IIKOOIr:DM||-u{{~~-99;??62.D"&J!~~j"5B'/!~~j"5C'1	 #'
 <<:%(?(AD%02DM &1  	 @%HDLL	  !! 	LL:EBe*DK	s0   'G8 H. 8H+H&&H+.I4&I//I4c                    < V ^8  d   QhRS[ /# r   r   r*   r   r   r   r   r   f   s      3 r   c                    V P                   # N)r"   r1      &r   	get_errorZItbOllamaClient.get_errorf   s    {{r   c                r5   r6   r7   r   r   r   r   r   j   s      # r   c                r8   r9   )r   r:   r;   r   get_hostZItbOllamaClient.get_hostj   s    zzr   c                r5   r6   r7   r   r   r   r   r   n   s      C r   c                r8   r9   )r    r:   r;   r   
get_serverZItbOllamaClient.get_servern   s    ||r   c                r5   r6   r7   r   r   r   r   r   r   s      S r   c                r8   r9   )r!   r:   r;   r   get_versionZItbOllamaClient.get_versionr   s    }}r   c                s6   < V ^8  d   QhRS[ S[S[3,          /# r6   )r   r*   r   r   r   r   r   r   v   s     1 1S#X 1r   c                s,   V P                   e   V P                  R8X  d   / #  V P                   P                  R4      pTP                  \        P                  P                  8w  d#   \
        P                  RTP                  4       / # TP                  4       P                  R. 4      f   / # \        \        \        \        3,          TP                  4       4      #   \        P                   d#   p\
        P                  RT4       / u R p?# R p?ii ; i)Nr   r   zget /v1/models failed: %sz%get /v1/models failed: status_code=%sr   )r   r    r   r$   r(   r&   r)   r+   r,   r-   r.   r   r   r*   r   )r1   r2   r)   s   &  r   modelsZItbOllamaClient.modelsv   s    <<4<<2#5I	<<##L1D u{{~~-LL79I9IKI99;??62&.IDcNDIIK00 !! 	LL4e<I	s   C D1DDDc                s0   < V ^8  d   QhRS[ S[,          /# r6   )r   r*   r   r   r   r   r      s     H H3s8 Hr   c                sx    V P                  4       P                  R . 4       Uu0 uF  qR,          kK  	  up# u upi )r   Zid)r@   r   )r1   models   & r   	model_idsZItbOllamaClient.model_ids   s3    )-):):62)FG)Fd)FGGGs   7c                s&   < V ^8  d   QhRS[ RS[/# r   rA   r   )r*   boolr   r   r   r   r      s      # $ r   c                s    V P                  4        Uu. uF  q P                  V4      NK  	  ppV P                  V4      V9   d   R # R# u upi )TF)rB   
short_name)r1   rA   ZxZ	availables   &&  r   is_availableZItbOllamaClient.is_available   sC    151AB1AA__Q'1A	B??5!Y. Cs   Ac                s&   < V ^8  d   QhRS[ RS[ /# rC   r7   r   r   r   r   r      s        r   c                sB   VP                  R 4      '       d   VRR pV P                  R8X  dr   WP                  9   d   V# \        P                  ! RRV4      pV P                  P                  4        F'  w  r4\        P                  ! RRV4      pW%8X  g   K%  Vu # 	  V# V# )z:latestNr   z
^[a-z]+://r   i)Zendswithr    r#   resubZitems)r1   rA   Zmodel_without_prefixZ	shortnameZlongnameZlongname_without_prefixr3   r   rE   ZItbOllamaClient.short_name   s     >>)$$#2JE<<:%111#%66-U#C '+'@'@'F'F'H#	*,&&H*M''B$$ (I ('r   Nc                s   < V ^8  d   QhRS[ RS[S[S[S[ S[3,          .R3,          ,          RS[S[P                  ,          RS[/# )r   rA   progress_callbackN
stop_eventr   )r*   r   r    r   r   	threadingZEventrD   r   r   r   r   r      sV     ! !! $Hd38n-=t-C$DE! Y__-	!
 
!r   c           
     s   V P                   R 8w  g   V P                  f   R# V P                  p VP                  RRRV/R7      ;_uu_ 4       pVP                  4        VP	                  4        F  pVe7   VP                  4       '       d!   \        P                  R4        RRR4       R# VP                  4       '       g   KU   \        P                  ! V4      pV'       d	   V! V4       R
V9   g   K   RRR4       R# 	  RRR4       R#   \        P                   d    RTR	R
R
R/p LOi ; i  + '       g   i     R# ; i  \         d)   pT'       d   T! R
\        T4      R	R
/4        Rp?R# Rp?ii ; i)r   NFPOSTz	/api/pullZnamer.   zOllama pull stopped by event.rawZstatusr)   JSONDecodeErrorT)r    r   streamraise_for_status
iter_linesZis_setr&   infostripr.   loadsrO   r%   r*   )	r1   rA   rI   rJ   clientr2   liner   r)   s	   &&&&     r   pullZItbOllamaClient.pull   sF    <<8#t||';	Lv{&%IIT%%' OO-D!-*2C2C2E2E$CD$ JI  ::<< <#zz$/
 ))$/$$# JI- J$   // < %t (' '): << JI$  	L !7CJ'"JK	Ls   E =D-D-!E +D-D-D
D-"D-3D-4E >D- E 
D*	'D-)D*	*D--D>	8E >E E4E//E4c                s   < V ^8  d   QhRS[ RS[S[S[ S[ 3,          ,          RS[RS[S[S[S[ S[3,          RR3,          S[S[ S[3,          3,          /# )r   rA   messagesrP   r   N)r*   r   r   rD   r   r   r   r   r   r   r   r      sf     #1 #1#1 tCH~&#1 	#1
 
yc3ht34d38nD	E#1r   c                sN  aaa V P                   e   V P                  R8X  d   / # V P                   oRoRVRVRV/oV'       d   R VVV3R llpV! 4       # SP                  SSR7      pVP                  4        \	        \
        \        \        3,          VP                  4       4      # )	Nr   z/v1/chat/completionsrA   rY   rP   c                sb    V ^8  d   QhR\         \        \        \        3,          RR3,          /# r   r   N)r   r   r*   r   r      "r   r   Z*ItbOllamaClient.chat.<locals>.__annotate__   s'     0 0)DcND$,F"G 0r   c               3   s  <"   SP                  R SSR7      ;_uu_ 4       p V P                  4        V P                  4        Fc  pVP                  4       '       g   K   \        P
                  ! VP                  R4      4      p\        V\        4      '       d   Vx  K]  RV/x  Ke  	  RRR4       R#   \        P                   d    RT/x   K  i ; i  + '       g   i     R# ; i5i)rL   rM   zdata:r   rN   N)
rP   rQ   rR   rT   r.   rU   ZlstripZ
isinstanceZdictrO   )r2   rW   r   bodyrV   endpoints      r   event_streamZ*ItbOllamaClient.chat.<locals>.event_stream   s     ]]68$]??4))+ $ 1#zz||$0#'::dkk'.B#CD)$55&*
'-tn 4 !2 @?  $33 0#($-/0 @??sL   C(<C?B2CB2$C(
C(2C	CC	CC%		C(rM   )	r   r    ZpostrQ   r   r   r*   r   r.   )	r1   rA   rY   rP   r_   r2   r]   rV   r^   s	   &&&&  @@@r   chatZItbOllamaClient.chat   s     <<4<<2#5I)
HhG0 0  >!{{8${/DcNDIIK00r   c                s   < V ^8  d   QhRR/# rZ    r   r   r   r   r      s        t  r   c                sp    V P                   '       d$   V P                   P                  4        R V n         R # R # r9   )r   closer:   r;   r   rb   ZItbOllamaClient.close   s'    <<<LL DL r   )r   r"   r   r#   r    r!   )g      N@)NN)F)__name__Z
__module__Z__qualname__Z__firstlineno__r4   r<   r=   r>   r?   r@   rB   rF   rE   rX   r`   rb   Z__static_attributes__Z__classdictcell__)r   s   @r   r
   r
   3   s     '3 '3R    1 1"H H  ,! !F#1 #1J   r   r
   )Zmaxsizec                sF    V ^8  d   QhR\         \        \        3,          /# r6   )r   r*   r[   r\   r   r   r      s      c3h r   c                  s   \         P                  ! R 4      p V '       d    \        P                  ! V R.\        P                  \        P                  RRR7      p\
        P                  ! VP                  P                  4       4      pVP                  R/ 4      p\        \        \        \        3,          VP                  R/ 4      4      # / #   \         d"   p\        P                  RY4        Rp?/ # Rp?ii ; i)	r   rS   utf-8T)stdoutstderrZencodingZcheckZ
ShortnamesZNamesException when calling %s: %sN)shutilwhich
subprocessZrunZPIPEr.   rU   re   rT   r   r   r   r*   r%   r&   r'   )ramalama_binaryZresultr   Z
shortnamesr)   s        r   r/   r/      s     ll:.O	(^^ &)!! 	.F
 ::fmm1134D,3JS#X
w(CDD
 I	  	(/( ( I		(s   B)C C8C33C8c                s$    V ^8  d   QhR\         /# r6   r7   r[   r\   r   r   r     s     * *c *r   c                  s|   \         P                  ! R 4      p RpV '       dG    \        P                  ! V R.\        P                  R7      P                  R4      P                  4       p\        P                  ! RRV4      #   \        P                  \        3 d"   p\        P                  RY4        Rp?R# Rp?ii ; i)r   r   r   )rf   rd   rg   Nz[^\d.])rh   ri   rj   Zcheck_outputZSTDOUTZdecoderT   ZCalledProcessErrorZFileNotFoundErrorr&   r'   rG   rH   )rk   r   r)   s      r   r0   r0   
  s     ll:.OG	 -- ),!((**0&/%%'  66)R)) --/@A 	/( 		s   AA? ?B;B66B;Z__main__)rP   )i   i   ))Ztypingr    r   r   r   r   r   r   r   r   ZsysZversion_infor	   Ztyping_extensionsr   rG   r.   rK   Zloggingrh   rj   Z	functoolsr$   Z	getLoggerr&   r
   Z	lru_cacher/   r0   rc   ZStreamHandlerrf   ZLOG_HANDLERZsetLevelZDEBUGZ
addHandlerZdoctestZtestmodZFAILEDZ
_ATTEMPTEDZexitra   r   r   <module>rl      s  .          
v) 	 	       			0	1A  A F T" #& T"* #*  z''szz:K
OOGMM"
k""??,VZHHV r   