§
    X˜¶f~  ã                  óŒ   — d dl mZ d dlmZ ddlmZmZmZ ddlm	Z
mZmZmZmZmZ ddlmZ dZd„ Z G d	„ d
e¦  «        Zdd„ZdS )é    )Úannotations)ÚAnyé   )Ú	NODEFAULTÚStructÚfield)ÚFactoryÚStructConfigÚasdictÚastupleÚreplaceÚforce_setattr)Úget_class_annotations)Ú	FieldInfor
   r   r   Úfieldsr   r   c                 ó   — t           S ©N)Ú__all__© ó    úC/var/www/piapp/venv/lib/python3.11/site-packages/msgspec/structs.pyÚ__dir__r      s   € Ý€Nr   c                  ó’   — e Zd ZU dZded<   ded<   ded<    ed„ ¬¦  «        Zded	<    ed
„ ¬¦  «        Zded<   edd„¦   «         Z	dS )r   a…  A record describing a field in a struct type.

    Parameters
    ----------
    name: str
        The field name as seen by Python code (e.g. ``field_one``).
    encode_name: str
        The name used when encoding/decoding the field. This may differ if
        the field is renamed (e.g. ``fieldOne``).
    type: Any
        The full field type annotation.
    default: Any, optional
        A default value for the field. Will be `NODEFAULT` if no default value
        is set.
    default_factory: Any, optional
        A callable that creates a default value for the field. Will be
        `NODEFAULT` if no ``default_factory`` is set.
    ÚstrÚnameÚencode_namer   Útypec                 ó   — t           S r   ©r   r   r   r   ú<lambda>zFieldInfo.<lambda>6   s   € µ€ r   )Údefault_factoryÚdefaultc                 ó   — t           S r   r   r   r   r   r    zFieldInfo.<lambda>7   s   € ½€ r   r!   ÚreturnÚboolc                ó:   — | j         t          u o| j        t          u S )z1A helper for checking whether a field is required)r"   r   r!   )Úselfs    r   ÚrequiredzFieldInfo.required9   s   € ð Œ|�yÐ(ÐN¨TÔ-AÅYÐ-NÐNr   N)r$   r%   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r"   r!   Úpropertyr(   r   r   r   r   r      s¨   € € € € € € ðð ð& €I€I�IØÐÐÑØ€I€I�IØ�5Ð):Ð):Ð;Ñ;Ô;€GÐ;Ð;Ð;Ñ;Ø ˜5Ð1BÐ1BÐCÑCÔC€OÐCÐCÐCÑCàðOð Oð Oñ „XðOð Oð Or   r   Útype_or_instanceúStruct | type[Struct]r$   útuple[FieldInfo]c                ó   — t          | t          ¦  «        rt          | ¦  «        x}}nL| }t          | d| ¦  «        }t          |t          ¦  «        rt	          |t          ¦  «        st          d¦  «        ‚t          |¦  «        }t          |j        ¦  «        t          |j	        ¦  «        z
  }g }t          |j        |j        t          f|z  |j	        z   ¦  «        D ]f\  }}}t          x}	}
t          |t          ¦  «        r|j        }
n|t          ur|}	t          ||||         |	|
¬¦  «        }|                     |¦  «         Œgt#          |¦  «        S )z¸Get information about the fields in a Struct.

    Parameters
    ----------
    type_or_instance:
        A struct type or instance.

    Returns
    -------
    tuple[FieldInfo]
    Ú
__origin__z-Must be called with a struct type or instance)r   r   r   r"   r!   )Ú
isinstancer   r   ÚgetattrÚ
issubclassÚ	TypeErrorÚ_get_class_annotationsÚlenÚ__struct_fields__Ú__struct_defaults__ÚzipÚ__struct_encode_fields__r   Ú_FactoryÚfactoryr   ÚappendÚtuple)r/   Úannotated_clsÚclsÚhintsÚnposr   r   r   Údefault_objr"   r!   r   s               r   r   r   ?   sk  € õ Ð"¥FÑ+Ô+ð MÝ"Ð#3Ñ4Ô4Ð4ˆ˜˜à(ˆÝÐ&¨Ð6FÑGÔGˆÝ˜3¥Ñ%Ô%ð 	M­*°S½&Ñ*AÔ*Að 	MÝÐKÑLÔLÐLå" =Ñ1Ô1€EÝˆsÔ$Ñ%Ô%­¨CÔ,CÑ(DÔ(DÑD€DØ€FÝ*-ØÔØÔ$Ý	ˆ�tÑ˜cÔ5Ñ5ñ+ô +ð ð Ñ&ˆˆk˜;õ
 %.Ð-ˆ�/Ý�k¥8Ñ,Ô,ð 	"Ø)Ô1ˆOˆOØ¥	Ð)Ð)Ø!ˆGåØØ#Ø�t”ØØ+ð
ñ 
ô 
ˆð 	�Š�eÑÔÐÐå�‰=Œ=Ðr   N)r/   r0   r$   r1   )Ú
__future__r   Útypingr   Ú r   r   r   Ú_corer	   r>   r
   r   r   r   r   Ú_utilsr   r8   r   r   r   r   r   r   r   ú<module>rL      s  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð DÐ CÐ CÐ CÐ CÐ Cð€ðð ð ðOð Oð Oð Oð O�ñ Oô Oð Oð@+ð +ð +ð +ð +ð +r   