Ë
    îÿæi  ã                   óÐ  — d Z ddlZddlZddlZddlmZ ddlZ ej                  dej                  «      Z
 ej                  dej                  «      ZdZdZded	ee   dz  d
ee   fd„Zded
efd„Z	 ddedeeef   d	ee   dz  dee   dz  d
eeef   f
d„Zded	ee   dz  fd„Z	 ddeded	ee   dz  dee   dz  d
eeef   dz  f
d„Zded	ee   dz  fd„Zdded	ee   dz  fd„Zy)zi
Modified from:
https://github.com/vllm-project/vllm/blob/main/vllm/tool_parsers/glm4_moe_tool_parser.py
é    N)ÚAnyz^(.*?)<arg_key>z?<arg_key>(.*?)</arg_key>(?:\\n|\s)*<arg_value>(.*?)</arg_value>z<tool_call>z</tool_call>Ú	tool_nameÚtoolsÚreturnc                 ó\  — |€
t        «       S |D ]Œ  }|j                  d«      }|r|j                  d«      | k7  rŒ+|j                  d«      xs i }|j                  d«      xs i }|j                  «       D ��ch c]  \  }}|j                  d«      dk(  r|’Œ c}}c S  t        «       S c c}}w )NÚfunctionÚnameÚ
parametersÚ
propertiesÚtypeÚstring)ÚsetÚgetÚitems)r   r   ÚtoolÚfuncÚparamsr   r	   Úschemas           ún/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mlx_lm/tool_parsers/glm47.pyÚ_get_string_arg_namesr      s°   € Ø€}Ü‹uˆÛˆØ�x‰x˜
Ó#ˆÙ�t—x‘x Ó'¨9Ò4ØØ—‘˜,Ó'Ò-¨2ˆØ—Z‘Z Ó-Ò3°ˆ
ð !+× 0Ñ 0Ô 2ô
á 2‘��fØ�z‰z˜&Ó! XÒ-ò Ø 2ò
ò 	
ð ô ‹5€Lùó
s   Á7 B(Úvaluec                 ó˜   — 	 t        j                  | «      S # t        $ r Y nw xY w	 t        j                  | «      S # t        $ r Y | S w xY w©N)ÚjsonÚloadsÚ	ExceptionÚastÚliteral_eval)r   s    r   Ú_deserializer   *   sU   € ðÜ�z‰z˜%Ó Ð øÜò ÙðúðÜ×Ñ Ó&Ð&øÜò ØØ€Lðús   ‚ —	#¢#§< ¼	A	ÁA	Ú	func_nameÚ	argumentsÚstring_argsc                 óè   — |€t        | |«      }i }|j                  «       D ]N  \  }}||v r!t        |t        «      r|n
t        |«      ||<   Œ+t        |t        «      rt	        |«      ||<   ŒJ|||<   ŒP |S r   )r   r   Ú
isinstanceÚstrr   )r    r!   r   r"   Ú
normalizedÚkeyr   s          r   Ú_normalize_argumentsr(   8   s|   € ð ÐÜ+¨I°uÓ=ˆØ€JØ—o‘oÖ'‰
ˆˆUà�+ÑÜ'1°%¼Ô'=™eÄ3ÀuÃ:ˆJ�s‰OØÜ�eœSÔ!Ü*¨5Ó1ˆJ�sŠOà#ˆJ�sŠOð (ð Ðó    Útextc           	      ó¸  — 	 t        j                  | j                  «       «      }t	        |t
        «      r|rt	        |d   t        «      r|d   }t	        |t        «      sy d }d }d|v r'd|v r#|j                  d«      }|j                  d«      }nud|v r'd|v r#|j                  d«      }|j                  d«      }nJd|v rFt	        |j                  d«      t        «      r'|d   }|j                  d«      }|j                  d«      }t	        |t        «      r&|xs |j                  d«      }|j                  d«      }t	        |t        «      rt        |«      }t	        |t        «      rt        ||«      nd }t	        |t        «      r|€t        |i ¬«      S t	        |t        «      r*t	        |t        «      rt        |t        ||||¬«      ¬«      S y # t        $ r Y y w xY w)Nr   r	   r!   r   r   ©r	   r!   ©r"   )r   r   Ústripr   r$   ÚlistÚdictr   r%   r   r   r(   )r*   r   Úparsedr	   r!   r   r"   s          r   Ú_parse_json_tool_callr2   N   s°  € ðÜ—‘˜DŸJ™J›LÓ)ˆô �&œ$Ô¡FÜ�f˜Q‘i¤Ô&Ø˜A‘YˆFÜ�fœdÔ#Øð €DØ€IØ�Ñ˜K¨6Ñ1Ø�z‰z˜&Ó!ˆØ—J‘J˜{Ó+‰	Ø	�vÑ	 +°Ñ"7Ø�z‰z˜*Ó%ˆØ—J‘J˜{Ó+‰	Ø	�6Ñ	œj¨¯©°FÓ);¼TÔBØ�f‰~ˆØ�x‰x˜ÓˆØ—H‘H˜[Ó)ˆ	ä�$œÔØÒ6 §¡¨+Ó!6ˆ	Ø�x‰x˜Óˆä�)œSÔ!Ü  Ó+ˆ	ä8BÀ4ÌÔ8MÔ'¨¨eÔ4ÐSW€Kä�$œÔ Ð!2Ü˜¨Ô,Ð,Ü�$œÔ¤¨I´tÔ!<ÜØÜ*Ø�i °Kôô
ð 	
ð øôU ò Ùðús   ‚#G Ç	GÇGc                 ó  — d| vry 	 t        j                  | «      }|sy |€t        ||«      }i }|D ]I  }d|vr y |j                  dd«      \  }}|j	                  «       }|s y ||v r|||<   Œ<t        |«      ||<   ŒK |S # t        $ r Y y w xY w)NÚ=é   )ÚshlexÚsplitÚ
ValueErrorr   r.   r   )	r*   r    r   r"   Útokensr!   Útokenr'   r   s	            r   Ú_parse_key_value_pairsr;      sµ   € ð �$�ØðÜ—‘˜TÓ"ˆñ ØàÐÜ+¨I°uÓ=ˆà€IÛˆà�eÑÙØ—[‘[  aÓ(‰
ˆˆUØ�i‰i‹kˆÙÙØ�+ÑØ"ˆI�cŠNä)¨%Ó0ˆI�cŠNð ð Ðøô+ ò Ùðús   ‡A? Á?	BÂ
Bc           	      ón  — | j                  «       }|sy d|v rz|j                  dd«      \  }}|j                  «       }|j                  «       }|rC|rAt        ||«      }t        |«      }t	        |t
        «      rt        |t        ||||¬«      ¬«      S |j                  d«      \  }}}|sy |j                  «       }|st        |i ¬«      S t        ||«      }t        |«      }t	        |t
        «      rt        |t        ||||¬«      ¬«      S t        ||||¬«      }	|	�t        ||	¬«      S t        |d|i¬«      S )NÚ
r5   r-   r,   Ú Úraw)	r.   r7   r   r   r$   r0   r(   Ú	partitionr;   )
r*   r   ÚstrippedÚ
first_lineÚrestr	   r"   r!   Ú_Úkv_argumentss
             r   Ú_parse_plain_text_tool_callrF   ¢   sA  € Ø�z‰z‹|€HÙØð ˆxÑØ#Ÿ>™>¨$°Ó2Ñˆ
�DØ×ÑÓ!ˆØ�z‰z‹|ˆÙ‘DÜ/°°eÓ<ˆKÜ$ TÓ*ˆIÜ˜)¤TÔ*ÜØÜ2Ø˜i¨¸Kôôð ð ×&Ñ& sÓ+�M€Dˆ!ˆTÙØØ�:‰:‹<€DÙÜ˜¨Ô,Ð,ä'¨¨eÓ4€KÜ˜TÓ"€IÜ�)œTÔ"ÜØÜ*Ø�i °Kôô
ð 	
ô *¨$°°eÈÔU€LØÐÜ˜¨Ô6Ð6ä�T e¨T ]Ô3Ð3r)   c                 óÚ  — t         j                  | «      }|s=t        | |«      }|�|S t        | |«      }|�|S t	        dd| j                  «       i¬«      S |j                  d«      }t        ||«      }i }t        j                  | «      D ]T  }|j                  d«      j                  «       }|j                  d«      j                  «       }||vrt        |«      }|||<   ŒV t	        ||¬«      S )z@Parse a GLM 4.7 tool call string into a name and arguments dict.Úunknownr?   r,   r5   é   )Ú_func_name_regexÚsearchr2   rF   r0   r.   Úgroupr   Ú_func_arg_regexÚfinditerr   )	r*   r   ÚmatchÚfallbackr    r"   Úarg_dctÚarg_keyÚarg_vals	            r   Úparse_tool_callrT   Ð   så   € ä×#Ñ# DÓ)€EÙä(¨¨uÓ5ˆØÐØˆOÜ.¨t°UÓ;ˆØÐØˆOÜ˜¨u°d·j±j³lÐ.CÔDÐDà—‘˜A“€IÜ'¨	°5Ó9€KØ€GÜ ×)Ñ)¨$Ö/ˆØ—+‘+˜a“.×&Ñ&Ó(ˆØ—+‘+˜a“.×&Ñ&Ó(ˆØ˜+Ñ%Ü" 7Ó+ˆGØ"ˆ�Òð 0ô �Y¨'Ô2Ð2r)   r   )Ú__doc__r   r   r6   Útypingr   ÚregexÚreÚcompileÚDOTALLrJ   rM   Útool_call_startÚtool_call_endr%   r/   r   r   r   r0   r(   r2   r;   rF   rT   © r)   r   Ú<module>r^      s™  ðñó
 Û Û Ý ã à�2—:‘:Ð0°"·)±)Ó<Ð Ø�"—*‘*ØFØ‡I�Ió€ð
  €Ø€ð Sð °°c±¸TÑ1Að ÀcÈ#Áhó ð"
˜ð 
 ó 
ð$ $(ñ	Øðà�C˜�H‰~ðð �‰9�tÑðð �S‘˜D‘ð	ð
 
ˆ#ˆsˆ(�^óð,- ð -¨D°©I¸Ñ,<ó -ðj $(ñ	Ø
ðàðð �‰9�tÑðð �S‘˜D‘ð	ð
 
ˆ#ˆsˆ(�^�dÑóðF+4 cð +4°$°s±)¸dÑ2Bó +4ñ\3˜#ð 3 d¨3¡i°$Ñ&6ô 3r)   