ó
    °"³j²)  ã                  ó  • S SK Jr  S SKJrJrJr  S SKJrJ	r	J
r
JrJr  S SKJrJrJr  S SKJr  S SKJr  S SKJrJr  S SKJr  S S	KJr  S S
KJr  S SKJr  Sr S SK!J"r"J#r#       S             SS jjr$\	 " S S5      5       r%SS jr&g)é    )Úannotations)ÚIterableÚIteratorÚMapping)ÚasdictÚ	dataclassÚfieldÚfieldsÚis_dataclass)ÚdateÚtimeÚ	timedelta)ÚDecimal)ÚEnum)ÚAnyÚLiteral)ÚUUID)ÚElementTree)Ú	BaseModel)ÚPydanticSerializationError)Úformat_as_xml)ÚComputedFieldInfoÚ	FieldInfoNc                óò   • [        U UUUS9R                  U5      nUc.  UR                  c!  Uc  SOSnUR                  [	        Xd5      5      $ Ub  [
        R                  " XdS9  [
        R                  " USS9$ )aØ  Format a Python object as XML.

This is useful since LLMs often find it easier to read semi-structured data (e.g. examples) as XML,
rather than JSON etc.

Supports: `str`, `bytes`, `bytearray`, `bool`, `int`, `float`, `Decimal`, `date`, `datetime`, `time`, `timedelta`,
`UUID`, `Enum`, `Mapping`, `Iterable`, `dataclass`, and `BaseModel`.

Args:
    obj: Python Object to serialize to XML.
    root_tag: Outer tag to wrap the XML in, use `None` to omit the outer tag.
    item_tag: Tag to use for each item in an iterable (e.g. list), this is overridden by the class name
        for dataclasses and Pydantic models.
    none_str: String to use for `None` values.
    indent: Indentation string to use for pretty printing.
    include_field_info: Whether to include attributes like Pydantic `Field` attributes and dataclasses `field()`
        `metadata` as XML attributes. In both cases the allowed `Field` attributes and `field()` metadata keys are
        `title` and `description`. If a field is repeated in the data (e.g. in a list) by setting `once`
        the attributes are included only in the first occurrence of an XML element relative to the same field.

Returns:
    XML representation of the object.

Example:
```python {title="format_as_xml_example.py" lint="skip"}
from pydantic_ai import format_as_xml

print(format_as_xml({'name': 'John', 'height': 6, 'weight': 200}, root_tag='user'))
'''
<user>
  <name>John</name>
  <height>6</height>
  <weight>200</weight>
</user>
'''
```
)ÚdataÚitem_tagÚnone_strÚinclude_field_infoÚ Ú
©ÚspaceÚunicode©Úencoding)Ú_ToXmlÚto_xmlÚtextÚjoinÚ_rootless_xml_elementsr   ÚindentÚtostring)ÚobjÚroot_tagr   r   r+   r   Úelr)   s           ÚV/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pydantic_ai/format_prompt.pyr   r      s�   € ôZ 
ØØØØ-ñ	
÷
 �fˆXÓð ð Ñ˜BŸG™G™OØ‘^‰r¨ˆØ�y‰yÔ/°Ó;Ó<Ð<àÑÜ×Ò˜rÒ0Ü×#Ò# B°Ñ;Ð;ó    c                  ó:  • \ rS rSr% S\S'   S\S'   S\S'   S\S'   \" \\\\\	\
-  4   4   S	9rS
\S'   \" \\   S	9rS\S'   \" \\\4   S	9rS\S'   SrS\S'   SrSSS jjrSS S jjrS!S jrS"S jrS r S#       S$S jjr S#   S%S jjr\S&S j5       rSrg)'r&   éP   r   r   Ústrr   r   úLiteral['once'] | boolr   )Údefault_factoryz4dict[str, tuple[str, FieldInfo | ComputedFieldInfo]]Ú_fields_infozset[str]Ú_included_fieldsúdict[str, str]Ú_element_namesFÚboolÚ_is_info_extracted)ÚtitleÚdescriptionNc                ó8   • U R                  U R                  SUS9$ )Nr   ©ÚvalueÚpathÚtag)Ú_to_xmlr   )ÚselfrC   s     r0   r'   Ú_ToXml.to_xmlc   s   € Ø�|‰| $§)¡)°"¸#ˆ|Ð>Ð>r1   c           
     óê  • U R                  Uc  U R                  OUU5      nU R                  XA5      (       a  U$ [        U[        5      (       a:  Uc#  X R
                  ;   a  U R
                  U   Ul        U R                  XAU5        U$ [        U5      (       aa  [        U[        5      (       dL  U R                  5         Uc  UR                  R                  Ul        U R                  U[        U5      U5        U$ [        U[        5      (       aR  U R                  5         Uc  UR                  R                  Ul         UR                  SS9nU R                  XEU5        U$ [        U[$        5      (       aG  ['        U5       H6  u  pxUR)                  U R+                  X‚(       a  U SU S3OSU S3S95        M8     U$ [#        S[        U5       35      e! [          a  n[#        SU 35      UeS nAff = f)NÚjson)Úmodez%Unsupported type for XML formatting: ú.[Ú]Ú[)rA   rB   )Ú_create_elementr   Ú_set_scalar_textÚ
isinstancer   r:   rC   Ú_mapping_to_xmlr   ÚtypeÚ_init_structure_infoÚ	__class__Ú__name__r   r   Ú
model_dumpr   Ú	TypeErrorr   Ú	enumerateÚappendrD   )	rE   rA   rB   rC   ÚelementÚmappingÚeÚnÚitems	            r0   rD   Ú_ToXml._to_xmlf   sÆ  € Ø×&Ñ&¸¹ t§}¢}ÈÈdÓSˆØ× Ñ  ×0Ñ0ØˆNÜ�eœW×%Ñ%Ø‰{˜t×':Ñ':Ó:Ø"×1Ñ1°$Ñ7�”Ø× Ñ  °Ô6ØˆNÜ˜×Ñ¤z°%¼×'>Ñ'>Ø×%Ñ%Ô'Ø‰{Ø#Ÿo™o×6Ñ6�”Ø× Ñ  ¬&°«-¸Ô>ØˆNÜ�eœY×'Ñ'Ø×%Ñ%Ô'Ø‰{Ø#Ÿo™o×6Ñ6�”ðTØ×*Ñ*°Ð*Ð7�ð × Ñ  °4Ô8ØˆNÜ�eœX×&Ñ&Ü$ UÖ+‘�Ø—‘˜tŸ|™|°$ÕPTÀ¸vÀRÈÀsÈ!¹_Ð\]Ð^_Ð]`Ð`aÐZb˜|ÐcÖdñ ,àˆNÜÐ?ÄÀUÃ¸}ÐMÓNÐNøô .ó TÜÐ"GÈÀsÐ KÓLÐRSÐSûðTús   Ä>G Ç
G2ÇG-Ç-G2c                óÊ  • Uc  U R                   Ul        g[        U[        5      (       a)  [        U[        5      (       a  UR
                  OUUl        g[        U[        [        -  5      (       a  UR                  SS9Ul        g[        U[        [        -  [        -  [        -  5      (       a  [        U5      Ul        g[        U[        [        -  5      (       a  UR                  5       Ul        g[        U[        5      (       a  [        U5      Ul        g[        U[         5      (       a  [        U5      Ul        g[        U["        5      (       a  [        U5      Ul        gg)zKSet element.text for scalar types. Return True if handled, False otherwise.Úignore)ÚerrorsFT)r   r(   rO   r4   r   rA   ÚbytesÚ	bytearrayÚdecoder;   ÚintÚfloatr   r   Ú	isoformatr   r   r   )rE   rY   rA   s      r0   rN   Ú_ToXml._set_scalar_text‡   s$  € à‰=ØŸ=™=ˆGŒLð" ô! ˜œs×#Ñ#Ü*4°U¼D×*AÑ*A˜5Ÿ;š;ÀuˆGŒLð ô ˜œu¤yÑ0×1Ñ1Ø Ÿ<™<¨x˜<Ð8ˆGŒLð ô ˜œt¤c™z¬EÑ1´DÑ8×9Ñ9Ü˜u›:ˆGŒLð ô ˜œt¤d™{×+Ñ+Ø Ÿ?™?Ó,ˆGŒLð ô ˜œy×)Ñ)Ü˜u›:ˆGŒLð ô ˜œw×'Ñ'Ü˜u›:ˆGŒLð
 ô	 ˜œt×$Ñ$Ü˜u›:ˆGŒLð ð r1   c                ó~  • [         R                  " U5      nX R                  ;   a—  U R                  U   u  pEU R                  (       a  U R                  S:w  d  X@R                  ;  aV  U R                  U5      nUR                  5        H  u  pxUR                  Xx5        M     U R                  R                  U5        U$ )NÚonce)	r   ÚElementr7   r   r8   Ú_extract_attributesÚitemsÚsetÚadd)	rE   rC   rB   rY   Ú
field_reprÚ
field_infoÚfield_attributesÚkÚvs	            r0   rM   Ú_ToXml._create_element�   sž   € Ü×%Ò% cÓ*ˆØ×$Ñ$Ó$Ø%)×%6Ñ%6°tÑ%<Ñ"ˆJØ×&×&¨4×+BÑ+BÀfÓ+LÐPZ×bwÑbwÓPwØ#'×#;Ñ#;¸JÓ#GÐ Ø,×2Ñ2Ö4‘D�AØ—K‘K Ö%ñ 5à×%Ñ%×)Ñ)¨*Ô5Øˆr1   c                ól   • U R                   (       d#  U R                  U R                  5        SU l         gg)z\Create maps with all data information (fields info and class names), if not already created.TN)r<   Ú_parse_data_structuresr   )rE   s    r0   rR   Ú_ToXml._init_structure_info¨   s*   € à×&×&Ø×'Ñ'¨¯	©	Ô2Ø&*ˆDÕ#ð 'r1   c           	     ó,  • UR                  5        H€  u  pE[        U[        5      (       a  [        U5      nO-[        U[        5      (       d  [	        S[        U5       S35      eUR                  U R                  XS(       a  U SU 3OUUS95        M‚     g )Nz)Unsupported key type for XML formatting: z, only str and int are allowedÚ.r@   )rm   rO   re   r4   rV   rQ   rX   rD   )rE   rY   rZ   rB   ÚkeyrA   s         r0   rP   Ú_ToXml._mapping_to_xml®   s   € ð "Ÿ-™-ž/‰JˆCÜ˜#œs×#Ñ#Ü˜#“h‘Ü ¤S×)Ñ)ÜÐ"KÌDÐQTËIÈ;ÐVtÐ uÓvÐvØ�N‰N˜4Ÿ<™<¨eÍT¸T¸FÀ!ÀCÀ5¹/ÐWZÐ`c˜<ÐdÖeò *r1   c                ó®  • UbM  [        U[        [        -  [        -  [        -  [
        -  [        -  [        -  [        -  [        -  5      (       a  g[        U[        5      (       a:  UR                  5        H%  u  p4U R                  XB(       a  U SU 3OU 5        M'     g[        U5      (       Ga<  [        U[        5      (       Gd&  UR                  R                   U R"                  U'   [%        U5       Hó  nU(       a  U SUR&                   3OUR&                  nU R(                  (       a–  UR*                  (       a…  UR*                  R                  5        VVs0 s H  u  p4X0R,                  ;   d  M  X4_M     nnnU(       a?  UR                  R                    SUR&                   3nU[/        S0 UD64U R0                  U'   U R                  [3        XR&                  5      U5        Mõ     g[        U[4        5      (       aý  UR                  R                   U R"                  U'   UR                  R6                  UR                  R8                  4 H©  n	U	R                  5        H’  u  pZU(       a  U SU 3OUnU R(                  (       aQ  [        U
[:        5      (       d  U
R<                  (       d+  UR                  R                    SU 3nXŠ4U R0                  U'   U R                  [3        X5      U5        M”     M«     g[        U[>        5      (       a;  [A        U5       H+  u  p¼U(       a  U SU S3OSU S3nU R                  XÆ5        M-     ggs  snnf )z`Parse data structures as dataclasses or Pydantic models to extract element names and attributes.Nrz   rJ   rK   rL   © )!rO   r4   re   rf   r   r   r   rc   rb   r;   r   rm   rw   r   rQ   rS   rT   r:   r
   Únamer   ÚmetadataÚ_FIELD_ATTRIBUTESr   r7   Úgetattrr   Úmodel_fieldsÚmodel_computed_fieldsr   Úexcluder   rW   )rE   rA   rB   rs   rt   r	   Únew_pathÚ
attributesrp   rƒ   Úinfor\   r]   s                r0   rw   Ú_ToXml._parse_data_structures»   s¦  € ð ‰=œJ u¬s´S©y¼5Ñ/@Ä4Ñ/GÌ$Ñ/NÔQZÑ/ZÔ]fÑ/fÔinÑ/nÔquÑ/u×wÑwØÜ˜œw×'Ñ'ØŸ™ž‘�Ø×+Ñ+¨AÅ°$°°q¸¸©}ÈQÈCÖQò &ä˜%× Ò ¬°E¼4×)@Ò)@Ø(-¯©×(@Ñ(@ˆD×Ñ Ñ%Ü ž�Þ59˜d˜V 1 U§Z¡Z LÑ1¸u¿z¹z�Ø×*×*¨u¯~¯~Ø38·>±>×3GÑ3GÔ3IÔ!iÒ3I©4¨1ÈQ×RhÑRhÑMh£$ !¢$Ñ3I�JÑ!iÞ!Ø(-¯©×(@Ñ(@Ð'AÀÀ5Ç:Á:À,Ð%O˜
Ø7AÄ9ÑCZÈzÑCZÐ6[˜×)Ñ)¨(Ñ3Ø×+Ñ+¬G°E¿:¹:Ó,FÈÖQò 'ô ˜œy×)Ñ)Ø(-¯©×(@Ñ(@ˆD×Ñ Ñ%Ø!&§¡×!=Ñ!=¸u¿¹×?dÑ?dÓ e�Ø#/×#5Ñ#5Ö#7‘K�EÞ48 $  q¨¨Ñ0¸e�HØ×.×.´J¸tÔEV×4WÑ4WÐ_c×_k×_kØ(-¯©×(@Ñ(@Ð'AÀÀ5À'Ð%J˜
Ø7AÐ6H˜×)Ñ)¨(Ñ3Ø×/Ñ/´¸Ó0EÀxÖPó $8ò !fô ˜œx×(Ñ(Ü$ UÖ+‘�Þ.2˜d˜V 2 a S¨™?¸!¸A¸3¸a¸�Ø×+Ñ+¨DÖ;ò ,ð )ùó "js   ÅMÅ5Mc                ó|   • U R                    Vs0 s H   n[        XS 5      =nc  M  U[        U5      _M"     sn$ s  snf ©N)r�   r‚   r4   )Úclsrˆ   ÚattrrA   s       r0   rl   Ú_ToXml._extract_attributesÞ   s?   € à-0×-BÒ-BÓwÒ-B TÔPWÐX\ÐdhÓPiÐGiÀuÓ �”c˜%“jÒ Ñ-BÑwÐwùÒws   �9¦9)r<   r‹   )rC   ú
str | NoneÚreturnúElementTree.Element)rA   r   rB   r4   rC   r�   r�   r‘   )rY   r‘   rA   r   r�   r;   )rC   r4   rB   r4   r�   r‘   )r   )rY   r‘   rZ   zMapping[Any, Any]rB   r4   r�   ÚNone)rA   r   rB   r4   )rˆ   zFieldInfo | ComputedFieldInfor�   r9   )rT   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r	   Údictr4   Útupler   r   r7   rn   r8   r:   r<   r�   r'   rD   rN   rM   rR   rP   rw   Úclassmethodrl   Ú__static_attributes__r~   r1   r0   r&   r&   P   s  ‡ à
ƒIØƒMØƒMØ.Ó.ñ JOØ˜S %¨¨YÐ9JÑ-JÐ(JÑ"KÐKÑLñJ€LÐFó ñ "'°s¸3±xÑ!@Ð�hÓ@á%*¸4ÀÀSÀ¹>Ñ%J€N�NÓJà$Ð˜Ó$Ø0Ðö?öOôBô,	ò+ð ð	fà$ðfð #ðfð ð	fð
 
õfð  ð!<àð!<ð õ!<ðF óxó óxr1   r&   c              #  óz   #   • U  H1  nUb  [         R                  " X!S9  [         R                  " USS9v •  M3     g 7f)Nr!   r#   r$   )r   r+   r,   )Úrootr+   Úsub_elements      r0   r*   r*   ã   s6   é € ÛˆØÑÜ×Ò˜{Ò9Ü×"Ò" ;¸ÑCÔCò ùs   ‚9;)Nr]   Únullz  F)r-   r   r.   r�   r   r4   r   r4   r+   r�   r   r5   r�   r4   )rœ   r‘   r+   r�   r�   zIterator[str])'Ú
__future__r   Ú_annotationsÚcollections.abcr   r   r   Údataclassesr   r   r	   r
   r   Údatetimer   r   r   Údecimalr   Úenumr   Útypingr   r   Úuuidr   Ú	xml.etreer   Úpydanticr   Úpydantic_corer   Ú__all__Úpydantic.fieldsr   r   r   r&   r*   r~   r1   r0   Ú<module>r­      s¶   ðÝ 2ç 7Ñ 7ß FÕ Fß *Ñ *Ý Ý ß Ý Ý !å Ý 4à
€ç 8ð
  ØØØØ16ð9<Ø	ð9<àð9<ð ð9<ð ð	9<ð
 ð9<ð /ð9<ð 	õ9<ðx ÷Oxð Oxó ðOxõdDr1   