+
    œ°³jQ%  ã                  ó,  € R t ^ RIHt ^ RIt^ RIHt ^ RItR R ltR R lt	R R	 lt
R
 R ltRRuttR R ltR R ltR R ltR R ltR]R]	R]
R]R]R]R]/t]! 0 R&m4      tR R lt]P,                  ! R4      tR  R! ltR" R# ltR$ R% lt. R'OtR# )(zÏThis file contains the parsers used by chat response parsing. Each parser takes a chunk of captured text
and parses it into a single key in the output message dictionary. Functions are generally boilerplate.)ÚannotationsN)ÚAnyc               ó$   € V ^8„  d   QhRRRRRR/# ©é   ÚtextÚstrÚargsÚdictÚreturn© )Úformats   "Úp/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/utils/chat_parsing/content_parsers.pyÚ__annotate__r      s!   € ÷ =ñ =�ð =˜4ð = Cñ =ó    c                óV   € VP                  R R4      '       d   V P                  4       # T # )ÚstripT)Úgetr   ©r   r	   s   &&r   Ú_textr      s#   € ØŸ8™8 G¨T×2Ò2ˆ4�:‰:‹<Ð<¸Ð<r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   r	   r
   r   Úintr   )r   s   "r   r   r      s!   € ÷ "ñ "ˆsð "˜$ð " 3ñ "r   c                ó*   € \        \        W4      4      # ©N)r   r   r   s   &&r   Ú_intr      s   € ÜŒu�TÓ Ó!Ð!r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   r	   r
   r   Úfloatr   )r   s   "r   r   r   !   s!   € ÷ $ñ $�ð $˜Dð $ Uñ $r   c                ó*   € \        \        W4      4      # r   )r   r   r   s   &&r   Ú_floatr   !   s   € Ü”�tÓ"Ó#Ð#r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   r	   r
   r   Úboolr   )r   s   "r   r   r   %   s!   € ÷ 6ñ 6�ð 6˜4ð 6 Dñ 6r   c                ó:   € \        W4      P                  4       R9   # )Útrue)r"   Ú1)r   Úlowerr   s   &&r   Ú_boolr%   %   s   € Ü�Ó×"Ñ"Ó$¨Ñ5Ð5r   ÚÚc               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   r	   r
   r   r   r   )r   s   "r   r   r   .   s!   € ÷ *ñ *�ð *˜4ð * Cñ *r   c           	     ór  a€ VP                  R. 4      pVP                  RR4      pV'       d"   \        V 9   g   \        V 9   d   \        R4      hT p. oV Fm  w  rV\        P
                  ! V4      R,           \        P
                  ! V4      ,           pR V3R llp\        P                  ! WxV\        P                  R7      pKo  	  V'       d   \        P                  ! R	R
V4      p\        S4       F9  w  ršVP                  \         V	 \         2\        P                  ! V
4      4      pK;  	   \        P                  ! V4      #   \        P                   d]   pTP                  R4      '       d   \        Y4      u Rp?# Y@8X  d   \        RT : RT 24      Th\        RT : RT: RT 24      ThRp?ii ; i)ai  JSON parser with optional dialect knobs for LLM-emitted quirks.

`args`:
  - `unquoted_keys` (bool): quote bare-identifier keys before parsing.
  - `string_delims` ([[open, close], ...]): strings delimited by these
    custom markers are pre-extracted, then restored as standard JSON strings.
  - `allow_non_json` (bool): return stripped text if parsing fails.
Ústring_delimsÚunquoted_keysFzSjson: input contains reserved sentinel characters (\x01/\x02); cannot parse safely.z(.*?)c               ó    € V ^8„  d   QhRRRR/# )r   Úmr   r   r   r   )r   s   "r   r   Ú_json.<locals>.__annotate__B   s   € ÷ 	Añ 	A˜ð 	A ñ 	Ar   c                ó„   <€ SP                  V P                  ^4      4       \         \        S4      ^,
           \         2# )é   )ÚappendÚgroupÚ	_LAX_OPENÚlenÚ
_LAX_CLOSE)r-   Úcaptureds   &€r   Ú_captureÚ_json.<locals>._captureB   s4   ø€ Ø�O‰O˜AŸG™G A›JÔ'Ü�[¤ X£°Õ!2Ð 3´J°<Ð@Ð@r   ©Úflagsz(?<=[{,])(\w+):z"\1":Úallow_non_jsonNz5json parser could not parse region as JSON.
Content: z
Error: z:json: could not parse after dialect transforms.
Original: z
Transformed: )r   r3   r5   Ú
ValueErrorÚreÚescapeÚsubÚDOTALLÚ	enumerateÚreplaceÚjsonÚdumpsÚloadsÚJSONDecodeErrorr   )r   r	   r*   r+   ÚworkingÚopen_dÚclose_dÚpatternr7   ÚiÚsÚer6   s   &&          @r   Ú_jsonrN   .   s„  ø€ ð —H‘H˜_¨bÓ1€MØ—H‘H˜_¨eÓ4€Mçœ) tÔ+¬z¸TÔ/AÜÐpÓqÐqà€GØ€HÛ(‰ˆÜ—)’)˜FÓ# hÕ.´·²¸7Ó1CÕCˆ÷	Að 	Aô —&’&˜¨G¼2¿9¹9ÔEŠñ )÷ Ü—&’&Ð+¨X°wÓ?ˆä˜(Ö#‰ˆØ—/‘/¤Y K°¨s´:°,Ð"?ÄÇÂÈAÃÓOŠñ $ð
Ü�zŠz˜'Ó"Ð"øÜ×Ñô Ø�8‰8Ð$×%Ò%Ü˜Ó$Õ$ØŒ?ÜÐUÐVZÑU]Ð]fÐghÐfiÐjÓkÐqrÐrÜðØ™ °©{¸)ÀAÀ3ðHó
ð ð	ûðús$   Ä/E ÅF6Å!F1Å;F6Æ0F1Æ1F6c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úrawr   Úvalue_parserzdict | Noner   r   r   )r   s   "r   r   r   [   s&   € ÷ ^ñ ^�Cð ^ {ð ^°sñ ^r   c                óf   € Vf   V # \        WP                  RR4      VP                  R/ 4      4      # )NÚnamer   r	   )Úparse_contentr   )rP   rQ   s   &&r   Ú
_sub_parserU   [   s6   € ØÒØˆ
Ü˜×.Ñ.¨v°vÓ>À×@PÑ@PÐQWÐY[Ó@\Ó]Ð]r   c               ó$   € V ^8„  d   QhRRRRRR/# r   r   )r   s   "r   r   r   a   s!   € ÷ ñ �cð  ð ¨$ñ r   c                ó,  € VP                  R4      pVf   \        R4      hVP                  R4      pVP                  RR4      p/ p\        P                  ! W \        P                  R7       F¤  pVP                  4       pVP                  R4      pVf   \        RV 24      h\        VP                  R	R
4      V4      p	W…9   dI   V'       dA   \        WX,          \        4      '       g   WX,          .WX&   WX,          P                  V	4       K   W•V&   K¦  	  V# )z¿Parse shallow XML-ish tags into a dict. `tag_pattern` regex must have named
groups `key` and `value`. Optional `value_parser` recurses; `merge_duplicates`
collects duplicate keys into a list.Útag_patternz1xml-inline: 'tag_pattern' content_arg is requiredrQ   Úmerge_duplicatesFr9   Úkeyz@xml-inline: tag_pattern must have a named group 'key'. Pattern: ÚvalueÚ )
r   r<   r=   Úfinditerr@   Ú	groupdictrU   Ú
isinstanceÚlistr1   )
r   r	   rX   rQ   ÚmergeÚoutr-   ÚgroupsrZ   r[   s
   &&        r   Ú_xml_inlinerd   a   sè   € ð —(‘(˜=Ó)€KØÒÜÐLÓMÐMØ—8‘8˜NÓ+€LØ�H‰HÐ'¨Ó/€Eà€CÜ�[Š[˜´"·)±)×<ˆØ—‘“ˆØ�j‰j˜ÓˆØŠ;ÜÐ_Ð`kÐ_lÐmÓnÐnÜ˜6Ÿ:™: g¨rÓ2°LÓAˆØŒ:Ÿ%Ü˜c�h¬×-Ò-Ø�H˜:�‘Ø�H�O‰O˜EÖ"à�‹Hñ =ð €Jr   c               ó$   € V ^8„  d   QhRRRRRR/# r   r   )r   s   "r   r   r   {   s!   € ÷ ñ �Cð ˜tð ¨ñ r   c                óF  € VP                  RR4      pVP                  RR4      pVP                  R4      p/ pV P                  V4       FT  p\        Wa4      pV'       d   W69  d   K  VP                  V^4      w  rx\        Wq4      \        W�4      r‡\        W„4      WW&   KV  	  V# )z7Parse line-delimited `key<sep>value` pairs into a dict.Úline_sepÚ
Úkv_sepÚ:rQ   )r   Úsplitr   rU   )	r   r	   rg   ri   rQ   rb   ÚlineÚkÚvs	   &&       r   Ú	_kv_linesro   {   s‘   € à�x‰x˜
 DÓ)€HØ�X‰X�h Ó$€FØ—8‘8˜NÓ+€Là€CØ—
‘
˜8Ö$ˆÜ�TÓ ˆß�vÔ)ÙØ�z‰z˜& !Ó$‰ˆÜ�Q‹~œu Q›~ˆ1Ü˜AÓ,ˆ‹ñ %ð €Jr   r   r   r   r    rC   z
xml-inlinezkv-linesc               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r   r   rS   r	   r
   r   r   r   )r   s   "r   r   r   ž   s(   € ÷ -ñ -˜ð - 3ð -¨dð -°sñ -r   c                ó(   € \         V,          ! W4      # r   )ÚCONTENT_PARSERS)r   rS   r	   s   &&&r   rT   rT   ž   s   € Ü˜4Ö  Ó,Ð,r   z\{(\w+(?:\.\w+)*)\}c               ó$   € V ^8„  d   QhRRRRRR/# )r   Ú	transformr   Úscoper
   r   r   )r   s   "r   r   r   ¥   s!   € ÷ ñ  ð ¨Dð °Sñ r   c                óî  € \        V \        4      '       d/   V P                  4        UUu/ uF  w  r#V\        W14      bK  	  upp# \        V \        4      '       d   V  Uu. uF  p\        W14      NK  	  up# \        V \
        4      '       g   V # \        P                  V 4      pV'       g   V # VP                  ^4      pVP                  R4      vrgWa9  d   \        RV R\        V4       24      hW,          pV Fl  p	\        V\        4      '       g)   \        RV R\        V4      P                   RV	 R24      hW˜9  d   \        RV RV	 R\        V4       24      hW‰,          pKn  	  V# u uppi u upi )	zÆRecursively walk a transform template, which is used to restructure
parsed output into the actual shape we want. A dotted placeholder like
`{content.args}` descends into keys of the looked-up value.Ú.ztransform placeholder '{z}' is not defined. Available: z}' cannot index into z at 'Ú'z}' is missing key 'z'. Available: )r_   r
   ÚitemsÚ_apply_transformr`   r   Ú_PLACEHOLDERÚ	fullmatchr2   rk   ÚKeyErrorÚsortedr<   ÚtypeÚ__name__)
rt   ru   rm   rn   ÚwholeÚpathÚrootÚkeysr[   rZ   s
   &&        r   rz   rz   ¥   sn  € ô �)œT×"Ò"Ø:C¿/¹/Ô:KÔLÑ:K±$°!�Ô# AÓ-Ò-Ñ:KÒLÐLÜ�)œT×"Ò"Ù4=Ó>±I¨qÔ  Ö*±IÑ>Ð>Ü�i¤×%Ò%ØÐÜ×"Ñ" 9Ó-€EßØÐØ�;‰;�q‹>€DØ—*‘*˜S“/€K€DØÔÜÐ2°4°&Ð8WÔX^Ð_dÓXeÐWfÐgÓhÐhØ�K€EÛˆÜ˜%¤×&Ò&ÜÐ8¸¸Ð>TÔUYÐZ_ÓU`×UiÑUiÐTjÐjoÐpsÐotÐtuÐvÓwÐwØÔÜÐ8¸¸Ð>RÐSVÐRWÐWeÔflÐmrÓfsÐetÐuÓvÐvØ•
Šñ ð €Lùó' Mùâ>s   ªE,ÁE2c               ó$   € V ^8„  d   QhRRRRRR/# )r   ru   r   rt   r   r   ÚNoner   )r   s   "r   r   r   À   s!   € ÷ 
ñ 
 cð 
°cð 
¸dñ 
r   c                ó–  € \        V\        4      '       d%   VP                  4        F  p\        W4       K  	  R# \        V\        4      '       d   V F  p\        W4       K  	  R# \        V\
        4      '       g   R# \        P                  V4      '       d0   \        P                  V4      '       g   \        V  RV: R24      hR# R# )a  Walk a transform template and reject any string that mixes a `{name}`
placeholder with literal text. Only whole-string placeholders (e.g.
`"{content}"`) and plain literals are supported. Called from the template
loader so authors get a clear error at load time, not at parse time.Nz: transform string z� mixes a {placeholder} with literal text. Use either a whole-string placeholder (e.g. "{content}") or a plain literal; string interpolation is not supported.)
r_   r
   ÚvaluesÚvalidate_transform_stringsr`   r   r{   Úsearchr|   r<   )ru   rt   rn   s   && r   r‰   r‰   À   s®   € ô
 �)œT×"Ò"Ø×!Ñ!Ö#ˆAÜ& uÖ0ñ $áÜ�)œT×"Ò"ÛˆAÜ& uÖ0ñ áÜ�i¤×%Ò%ÙÜ×Ñ˜9×%Ò%¬l×.DÑ.DÀY×.OÒ.OÜØˆgÐ(¨©ð 65ð 5ó
ð 	
ñ /PÑ%r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úbodyr   Úcapturesr
   r   r   r   )r   s   "r   r   r   ×   s&   € ÷ Mñ M˜ð M¨dð M°sñ Mr   c           	     ó>  € \        WP                  VP                  4      pVP                  f   V# VP                  '       dÁ   \        V\        4      '       g0   \        RVP                   R\        V4      P                   R24      h. pV Fq  p\        V\        4      '       g0   \        RVP                   R\        V4      P                   R24      hVP                  \        VP                  / VCVC4      4       Ks  	  V# \        VP                  / VCRV/C4      # )an  Run `body` through the field's content parser, then optionally apply the
transform template. When `transform_each` is set, the parsed content must
be a list and the template is applied to each element (with the element's
keys unpacked into the template scope, alongside any regex captures).

`field` is a `spec.Field`; typed via duck-typing to avoid a cyclic import.zField 'z@': transform_each requires the parsed content to be a list, got rw   z?': transform_each requires each list element to be a dict, got Úcontent)rT   r�   Úcontent_argsrt   Útransform_eachr_   r`   r<   rS   r   r€   r
   r1   rz   )rŒ   Úfieldr�   r[   rb   Úitems   &&&   r   Úprocess_fieldr”   ×   s  € ô ˜$§¡¨u×/AÑ/AÓB€EØ‡�ÒØˆØ××ÐÜ˜%¤×&Ò&ÜØ˜%Ÿ*™*˜ð &Ü˜E“{×+Ñ+Ð,¨Að/óð ð ˆÛˆDÜ˜d¤D×)Ò)Ü Ø˜eŸj™j˜\ð *Ü ›:×.Ñ.Ð/¨qð2óð ð �J‰JÔ'¨¯©Ð9M¸HÐ9MÈÐ9MÓNÖOñ ð ˆ
Ü˜EŸO™OÐ-K°Ð-K¸)ÀUÑ-KÓLÐLr   >   r   r    r   r   )rr   ÚSTREAMABLE_PARSERSrT   r”   r‰   )Ú__doc__Ú
__future__r   rC   Útypingr   Úregexr=   r   r   r   r%   r3   r5   rN   rU   rd   ro   rr   Ú	frozensetr•   rT   Úcompiler{   rz   r‰   r”   Ú__all__r   r   r   Ú<module>r�      s¸   ðñjõ #ã Ý ã õ=õ"õ$õ6ð  Ð €	ˆ:õ*õZ^õõ4ð$ ˆEØ	ˆ4ØˆVØ
ˆEØ
ˆEØ�+Ø�	ð€ñ Ò?Ó@Ð õ-ð �zŠzÐ0Ó1€õõ6
õ.Mò8‚r   