§
    ¤˜ºhïË  ã                  óÌ  — d Z ddlmZ ddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlmZ ddlmZmZ ddlmZ ddlmZ ddlmZmZmZ dd	lmZ dd
lmZmZm Z m!Z!m"Z"m#Z# ddl$m%Z% ddl&m'Z'm(Z(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7 ej8        rddl9m:Z: dd„Z;dd„Z< G d„ de¦  «        Z= G d„ d¦  «        Z> G d„ dej?        e=¬¦  «        Z@e@ZAdS )zvThe `Schema <marshmallow.Schema>` class, including its metaclass and options (`class Meta <marshmallow.Schema.Meta>`).é    )ÚannotationsN)ÚABCMeta)ÚOrderedDictÚdefaultdict)ÚMapping)Úzip_longest)ÚbaseÚclass_registryÚtypes)Úfields)Ú	POST_DUMPÚ	POST_LOADÚPRE_DUMPÚPRE_LOADÚ	VALIDATESÚVALIDATES_SCHEMA)Ú
ErrorStore)ÚSCHEMAÚStringNotCollectionErrorÚValidationError)Ú
OrderedSet)	ÚEXCLUDEÚINCLUDEÚRAISEÚ	get_valueÚis_collectionÚis_instance_or_subclassÚmissingÚ	set_valueÚ validate_unknown_parameter_value)ÚRemovedInMarshmallow4Warning)ÚFieldÚreturnúlist[tuple[str, Field]]c                ó>   — d„ |                       ¦   «         D ¦   «         S )zKGet fields from a class

    :param attrs: Mapping of class attributes
    c                óP   — g | ]#\  }}t          |t          j        ¦  «        ¯||f‘Œ$S © )r   r	   ÚFieldABC)Ú.0Ú
field_nameÚfield_values      úZ/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/marshmallow/schema.pyú
<listcomp>z_get_fields.<locals>.<listcomp>7   sC   € ð ð ð á#ˆJ˜Ý" ;µ´Ñ>Ô>ðØ	�[Ð!ðð ð ó    )Úitems)Úattrss    r,   Ú_get_fieldsr1   2   s+   € ð
ð à',§{¢{¡}¤}ðñ ô ð r.   ÚklassÚ
SchemaMetac                ó�   — t          j        | ¦  «        }t          j        t          j        d„ |ddd…         D ¦   «         g ¦  «        S )a  Collect fields from a class, following its method resolution order. The
    class itself is excluded from the search; only its parents are checked. Get
    fields from ``_declared_fields`` if available, else use ``__dict__``.

    :param klass: Class whose fields to retrieve
    c              3  ó\   K  — | ]'}t          t          |d |j        ¦  «        ¦  «        V — Œ(dS )Ú_declared_fieldsN)r1   ÚgetattrÚ__dict__)r)   r	   s     r,   ú	<genexpr>z%_get_fields_by_mro.<locals>.<genexpr>M   sT   è è € ð 	
ð 	
ð õ Ý˜Ð0°$´-Ñ@Ô@ñô ð	
ð 	
ð 	
ð 	
ð 	
ð 	
r.   Nr   éÿÿÿÿ)ÚinspectÚgetmroÚ	functoolsÚreduceÚoperatorÚiadd)r2   Úmros     r,   Ú_get_fields_by_mrorB   @   s\   € õ Œ.˜Ñ
Ô
€Cõ ÔÝŒð	
ð 	
ð ˜E˜Q˜r˜Eœ
ð		
ñ 	
ô 	
ð 	ñ	ô 	ð 	r.   c                  ó|   ‡ — e Zd ZU dZded<   ded<   ded<   ded<   dˆ fd„Zeefdd„¦   «         Zˆ fd„Z	dd„Z
ˆ xZS )r3   a#  Metaclass for the Schema class. Binds the declared fields to
    a ``_declared_fields`` attribute, which is a dictionary mapping attribute
    names to field objects. Also sets the ``opts`` class attribute, which is
    the Schema class's `class Meta <marshmallow.Schema.Meta>` options.
    ÚtypeÚMetaú
typing.AnyÚoptsÚOPTIONS_CLASSúdict[str, Field]r6   ÚnameÚstrÚbasesútuple[type, ...]r0   údict[str, typing.Any]r#   c                óN  •— |                      d¦  «        }t          |dd¦  «        }|s:|D ]5}t          |d¦  «        r#t          |j        d¦  «        r|j        j        } nŒ6d}t          |¦  «        }|D ]\  }}	||= Œ	t          ¦   «                              | |||¦  «        }
t          |
¦  «        }|
j        }|
 	                    ||¬¦  «        |
_
        |t          |
j
        j                             ¦   «         ¦  «        z  }|                      |
||t          ¬¦  «        |
_        |
S )NrE   ÚorderedF)rP   )r2   Ú
cls_fieldsÚinherited_fieldsÚdict_cls)Úgetr7   ÚhasattrrE   rP   r1   ÚsuperÚ__new__rB   rH   rG   ÚlistÚincluder/   Úget_declared_fieldsÚdictr6   )ÚmcsrJ   rL   r0   ÚmetarP   Úbase_rQ   r*   Ú_r2   rR   Ú	__class__s               €r,   rW   zSchemaMeta.__new__c   sH  ø€ ð �yŠy˜Ñ Ô ˆÝ˜$ 	¨5Ñ1Ô1ˆØð 
	 ð
 ð  ð  �Ý˜5 &Ñ)Ô)ð ­g°e´jÀ)Ñ.LÔ.Lð Ø#œjÔ0�GØ�Eøà�Ý  Ñ'Ô'ˆ
ð (ð 	"ð 	"‰MˆJ˜Ø�jÐ!Ð!Ý‘”—’  T¨5°%Ñ8Ô8ˆÝ-¨eÑ4Ô4ÐàŒzˆð ×(Ò(¨°wÐ(Ñ?Ô?ˆŒ
à•d˜5œ:Ô-×3Ò3Ñ5Ô5Ñ6Ô6Ñ6ˆ
ð "%×!8Ò!8ØØ!Ø-Ýð	 "9ñ "
ô "
ˆÔð ˆr.   r2   rQ   r$   rR   rS   ú
type[dict]c                ó   —  |||z   ¦  «        S )aA  Returns a dictionary of field_name => `Field` pairs declared on the class.
        This is exposed mainly so that plugins can add additional fields, e.g. fields
        computed from `class Meta <marshmallow.Schema.Meta>` options.

        :param klass: The class object.
        :param cls_fields: The fields declared on the class, including those added
            by the ``include`` `class Meta <marshmallow.Schema.Meta>` option.
        :param inherited_fields: Inherited fields.
        :param dict_cls: dict-like class to use for dict output Default to ``dict``.
        r'   )r\   r2   rQ   rR   rS   s        r,   rZ   zSchemaMeta.get_declared_fieldsŽ   s   € ð$ ˆxÐ(¨:Ñ5Ñ6Ô6Ð6r.   c                óÆ   •— t          ¦   «                              |||¦  «         |r!| j        j        rt	          j        || ¦  «         |                      ¦   «         | _        d S ©N)rV   Ú__init__rG   Úregisterr
   Úresolve_hooksÚ_hooks)ÚclsrJ   rL   r0   r`   s       €r,   re   zSchemaMeta.__init__¢   s]   ø€ Ý‰Œ×Ò˜˜u eÑ,Ô,Ð,Øð 	/�C”HÔ%ð 	/ÝÔ# D¨#Ñ.Ô.Ð.Ø×&Ò&Ñ(Ô(ˆŒ
ˆ
ˆ
r.   ú'dict[str, list[tuple[str, bool, dict]]]c                óx  ‡— t          j        | ¦  «        }t          t          ¦  «        }t	          | ¦  «        D ]€Š|D ]!}	 |j        ‰         } n# t          $ r Y Œw xY wŒ'	 |j        }|                     ¦   «         D ],\  }}||          	                    ˆfd„|D ¦   «         ¦  «         Œ-Œq# t          $ r Y Œ}w xY w|S )z—Add in the decorated processors

        By doing this after constructing the class, we let standard inheritance
        do all the hard work.
        c              3  ó(   •K  — | ]\  }}‰||fV — Œd S rd   r'   )r)   ÚmanyÚkwargsÚ	attr_names      €r,   r9   z+SchemaMeta.resolve_hooks.<locals>.<genexpr>Í   s?   øè è € ð &ð &Ù6B°d¸F˜ D¨&Ð1ð&ð &ð &ð &ð &ð &r.   )r;   r<   r   rX   Údirr8   ÚKeyErrorÚ__marshmallow_hook__r/   ÚextendÚAttributeError)	ri   rA   ÚhooksÚparentÚattrÚhook_configÚtagÚconfigro   s	           @r,   rg   zSchemaMeta.resolve_hooks¨   s.  ø€ õ Œn˜SÑ!Ô!ˆå9DÅTÑ9JÔ9Jˆå˜S™œð 	ð 	ˆIð ð ð �ðØ!œ?¨9Ô5�Dð �Eøõ  ð ð ð Ø�Hðøøøð ðàÔ-ð ð $/×#4Ò#4Ñ#6Ô#6ð ð ‘K�C˜ð ˜#”J×%Ò%ð &ð &ð &ð &ØFLð&ñ &ô &ñ ô ð ð ðøõ "ð ð ð Ø�ðøøøð ˆs$   Á AÁ
AÁAÁ!B*Â*
B7Â6B7)rJ   rK   rL   rM   r0   rN   r#   r3   )
r2   r3   rQ   r$   rR   r$   rS   ra   r#   rI   )r#   rj   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rW   Úclassmethodr[   rZ   re   rg   Ú__classcell__)r`   s   @r,   r3   r3   W   sÐ   ø€ € € € € € ðð ð €J€J�JØÐÐÑØÐÐÑØ&Ð&Ð&Ñ&ð)ð )ð )ð )ð )ð )ðV ð  $ð7ð 7ð 7ð 7ñ „[ð7ð&)ð )ð )ð )ð )ð)ð )ð )ð )ð )ð )ð )ð )r.   c                  ó   — e Zd ZdZd	d
d„ZdS )Ú
SchemaOptsz/Defines defaults for `marshmallow.Schema.Meta`.Fr]   rD   rP   Úboolc                ó  — t          |dd¦  «        | _        t          | j        t          t          f¦  «        st          d¦  «        ‚t          |dd¦  «        | _        t          | j        t          t          f¦  «        st          d¦  «        ‚| j        r| j        rt          d¦  «        ‚t          |dd¦  «        | _        t          | j        t          t          f¦  «        st          d¦  «        ‚t          |d	d ¦  «        | _        t          |d
d ¦  «        | _	        t          |dd ¦  «        | _
        t          |d¦  «        r3t          j        dt          d¬¦  «         t          |dt          ¦  «        }nt          }t          |d|¦  «        | _        t          |d¦  «        rt          j        dt          d¬¦  «         t          |d|¦  «        | _        t          |dd¦  «        | _        t          |di ¦  «        | _        t          |dd¦  «        | _        t          |dd¦  «        | _        t-          t          |dt.          ¦  «        ¦  «        | _        t          |dd¦  «        | _        t          |dd¦  «        | _        d S )Nr   r'   z(`fields` option must be a list or tuple.Ú
additionalz,`additional` option must be a list or tuple.zFCannot set both `fields` and `additional` options for the same Schema.Úexcludez"`exclude` must be a list or tuple.Ú
dateformatÚdatetimeformatÚ
timeformatÚjson_modulezKThe json_module class Meta option is deprecated. Use render_module instead.é   ©Ú
stacklevelÚrender_modulerP   z§The `ordered` `class Meta` option is deprecated. Field order is already preserved by default. Set `Schema.dict_class` to OrderedDict to maintain the previous behavior.Úindex_errorsTrY   Ú	load_onlyÚ	dump_onlyÚunknownrf   rm   F)r7   r   Ú
isinstancerX   ÚtupleÚ
ValueErrorr†   r‡   rˆ   r‰   rŠ   rU   ÚwarningsÚwarnr!   Újsonr�   rP   r�   rY   r‘   r’   r    r   r“   rf   rm   )Úselfr]   rP   r�   s       r,   re   zSchemaOpts.__init__×   s[  € Ý˜d H¨bÑ1Ô1ˆŒÝ˜$œ+­­e }Ñ5Ô5ð 	IÝÐGÑHÔHÐHÝ! $¨°bÑ9Ô9ˆŒÝ˜$œ/­Dµ%¨=Ñ9Ô9ð 	MÝÐKÑLÔLÐLØŒ;ð 	˜4œ?ð 	ÝØXñô ð õ ˜t Y°Ñ3Ô3ˆŒÝ˜$œ,­­u¨Ñ6Ô6ð 	CÝÐAÑBÔBÐBÝ! $¨°dÑ;Ô;ˆŒÝ% dÐ,<¸dÑCÔCˆÔÝ! $¨°dÑ;Ô;ˆŒÝ�4˜Ñ'Ô'ð 	!ÝŒMØ]Ý,Øðñ ô ð õ
 $ D¨-½Ñ>Ô>ˆMˆMå ˆMÝ$ T¨?¸MÑJÔJˆÔÝ�4˜Ñ#Ô#ð 	ÝŒMð\õ -Øðñ ô ð õ ˜t Y°Ñ8Ô8ˆŒÝ# D¨.¸$Ñ?Ô?ˆÔÝ˜t Y°Ñ3Ô3ˆŒÝ   {°BÑ7Ô7ˆŒÝ   {°BÑ7Ô7ˆŒÝ7½ÀÀiÕQVÑ8WÔ8WÑXÔXˆŒÝ  j°$Ñ7Ô7ˆŒÝ˜D &¨%Ñ0Ô0ˆŒ	ˆ	ˆ	r.   N)F)r]   rD   rP   r„   )r{   r|   r}   r~   re   r'   r.   r,   rƒ   rƒ   Ô   s3   € € € € € Ø9Ð9ð*1ð *1ð *1ð *1ð *1ð *1ð *1r.   rƒ   c                  ó  — e Zd ZU dZeej        eej        ej	        ej
        eej        eej        eej        eej        eej        eej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        iZde d<   i Z!de d<   dddœZ"de d	<   e#Z$d
e d<   e%Z&de d<   i Z'de d<   i Z(de d<    G d„ d¦  «        Z)dddddddddœdld%„Z*dmd(„Z+e,dnd*„¦   «         Z-e.d+d,œdod0„¦   «         Z/dpd5„Z0dqd9„Z1e2dd:œd;„¦   «         Z3d<d=œdrd>„Z4dd=œdsd?„Z5dd=œdsd@„Z6d<de7ddAœdtdF„Z8ddddGœdudH„Z9ddddGœdvdK„Z:dd:œdwdQ„Z;dddRœdxdT„Z<ddddUdVœdydX„Z=dzdZ„Z>dzd[„Z?dzd\„Z@d{d`„ZAd{da„ZBddbœd|dd„ZCd}de„ZDd~df„ZEd<dgœddj„ZFddbœd€dk„ZGdS )�ÚSchemaa±  Base schema class with which to define schemas.

    Example usage:

    .. code-block:: python

        import datetime as dt
        from dataclasses import dataclass

        from marshmallow import Schema, fields


        @dataclass
        class Album:
            title: str
            release_date: dt.date


        class AlbumSchema(Schema):
            title = fields.Str()
            release_date = fields.Date()


        album = Album("Beggars Banquet", dt.date(1968, 12, 6))
        schema = AlbumSchema()
        data = schema.dump(album)
        data  # {'release_date': '1968-12-06', 'title': 'Beggars Banquet'}

    :param only: Whitelist of the declared fields to select when
        instantiating the Schema. If None, all fields are used. Nested fields
        can be represented with dot delimiters.
    :param exclude: Blacklist of the declared fields to exclude
        when instantiating the Schema. If a field appears in both `only` and
        `exclude`, it is not used. Nested fields can be represented with dot
        delimiters.
    :param many: Should be set to `True` if ``obj`` is a collection
        so that the object will be serialized to a list.
    :param context: Optional context passed to :class:`fields.Method` and
        :class:`fields.Function` fields.
    :param load_only: Fields to skip during serialization (write-only fields)
    :param dump_only: Fields to skip during deserialization (read-only fields)
    :param partial: Whether to ignore missing fields and not require
        any fields declared. Propagates down to ``Nested`` fields as well. If
        its value is an iterable, only missing fields listed in that iterable
        will be ignored. Use dot delimiters to specify nested fields.
    :param unknown: Whether to exclude, include, or raise an error for unknown
        fields in the data. Use `EXCLUDE`, `INCLUDE` or `RAISE`.

    .. versionchanged:: 3.0.0
        `prefix` parameter removed.
    zdict[type, type[Field]]ÚTYPE_MAPPINGzdict[str, str]Úerror_messageszInvalid input type.zUnknown field.)rD   r“   Ú_default_error_messagesrD   rH   rF   rG   rI   r6   rj   rh   c                  óÆ   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded	<   	 d
ed<   	 d
ed<   	 d
ed<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   	 d
ed<   	 ded<   dS )úSchema.Metaa)  Options object for a Schema.

        Example usage: ::

            from marshmallow import Schema


            class MySchema(Schema):
                class Meta:
                    fields = ("id", "email", "date_created")
                    exclude = ("password", "secret_attribute")

        .. admonition:: A note on type checking

            Type checkers will only check the attributes of the `Meta <marshmallow.Schema.Meta>`
            class if you explicitly subclass `marshmallow.Schema.Meta`.

            .. code-block:: python

                from marshmallow import Schema


                class MySchema(Schema):
                    # Not checked by type checkers
                    class Meta:
                        additional = True


                class MySchema2(Schema):
                    # Type checkers will check attributes
                    class Meta(Schema.Opts):
                        additional = True  # Incompatible types in assignment

        .. versionremoved:: 3.0.0b7 Remove ``strict``.
        .. versionadded:: 3.0.0b12 Add `unknown`.
        .. versionchanged:: 3.0.0b17 Rename ``dateformat`` to `datetimeformat`.
        .. versionadded:: 3.9.0 Add `timeformat`.
        .. versionchanged:: 3.26.0 Deprecate `ordered`. Field order is preserved by default.
        z,typing.ClassVar[tuple[str, ...] | list[str]]r   r†   z!typing.ClassVar[dict[str, Field]]rY   r‡   ztyping.ClassVar[bool]rm   ztyping.ClassVar[str]rˆ   r‰   rŠ   rF   r�   rP   r�   r‘   r’   r“   rf   N)r{   r|   r}   r~   r   r'   r.   r,   rE   r¡   Z  s  € € € € € € ð&	ð &	ðP 	=Ð<Ð<Ñ<Ø<Ø@Ð@Ð@Ñ@ð	ð 	3Ð2Ð2Ñ2ð	ð 	>Ð=Ð=Ñ=ð	ð 	$Ð#Ð#Ñ#ØOØ(Ð(Ð(Ñ(ØIØ,Ð,Ð,Ñ,ØQØ(Ð(Ð(Ñ(ØIð 	"Ð!Ð!Ñ!ð	ð 	'Ð&Ð&Ñ&Ø`Ø+Ð+Ð+Ñ+ØeØ?Ð?Ð?Ñ?Ø7Ø?Ð?Ð?Ñ?Ø7Ø%Ð%Ð%Ñ%ð	ð 	(Ð'Ð'Ñ'ð	ð 	r.   rE   Nr'   )Úonlyr‡   rm   Úcontextr‘   r’   Úpartialr“   r¢   útypes.StrSequenceOrSet | Noner‡   útypes.StrSequenceOrSetrm   úbool | Noner£   údict | Noner‘   r’   r¤   ú$bool | types.StrSequenceOrSet | Noner“   ú
str | Nonec               ó@  — |�t          |¦  «        st          d¦  «        ‚t          |¦  «        st          d¦  «        ‚t          j        | j        ¦  «        | _        |€| j        j        n|| _        || _        t          | j        j
        ¦  «        t          |¦  «        z  | _
        | j        j        | _        t          |¦  «        pt          | j        j        ¦  «        | _        t          |¦  «        pt          | j        j        ¦  «        | _        || _        |€| j        j        nt!          |¦  «        | _        |rt#          j        dt&          d¬¦  «         |pi | _        |                      ¦   «          i | _        i | _        i | _        |                      ¦   «          i }	|	                     | j        ¦  «         t9          | j        j        ¦  «        D ]&}
|	                     t?          |
di ¦  «        ¦  «         Œ'|	                     | j         pi ¦  «         |	| _         d S )Nz""only" should be a list of stringsz%"exclude" should be a list of stringszƒThe `context` parameter is deprecated and will be removed in marshmallow 4.0. Use `contextvars.ContextVar` to pass context instead.rŒ   r�   rž   )!r   r   ÚcopyÚdeepcopyr6   Údeclared_fieldsrG   rm   r¢   Úsetr‡   rP   r‘   r’   r¤   r“   r    r—   r˜   r!   r£   Ú_normalize_nested_optionsr   Úload_fieldsÚdump_fieldsÚ_init_fieldsÚupdaterŸ   Úreversedr`   Ú__mro__r7   rž   )rš   r¢   r‡   rm   r£   r‘   r’   r¤   r“   Úmessagesri   s              r,   re   zSchema.__init__µ  s  € ð Ð¥M°$Ñ$7Ô$7ÐÝ*Ð+OÑPÔPÐPÝ˜WÑ%Ô%ð 	TÝ*Ð+RÑSÔSÐSå#œ}¨TÔ-BÑCÔCˆÔØ&* l�D”I”N�N¸ˆŒ	ØˆŒ	ÝHKØŒIÔñI
ô I
å�‰LŒLñIˆŒð ”yÔ(ˆŒÝ˜Y™œÐC­3¨t¬yÔ/BÑ+CÔ+CˆŒÝ˜Y™œÐC­3¨t¬yÔ/BÑ+CÔ+CˆŒØˆŒð ˆð ŒIÔÐå1°'Ñ:Ô:ð 	Œð
 ð 	ÝŒMðHå,Øð	ñ ô ð ð �} "ˆŒØ×&Ò&Ñ(Ô(Ð(à(*ˆŒØ-/ˆÔØ-/ˆÔØ×ÒÑÔÐØˆØ�Š˜Ô4Ñ5Ô5Ð5Ý˜DœNÔ2Ñ3Ô3ð 	@ð 	@ˆCØ�OŠO�G CÐ)9¸2Ñ>Ô>Ñ?Ô?Ð?Ð?Ø�Š˜Ô+Ð1¨rÑ2Ô2Ð2Ø&ˆÔÐÐr.   r#   rK   c                ó2   — d| j         j        › d| j        › d�S )Nú<z(many=z)>)r`   r{   rm   ©rš   s    r,   Ú__repr__zSchema.__repr__ë  s"   € Ø?�4”>Ô*Ð?Ð?°$´)Ð?Ð?Ð?Ð?r.   ra   c                ó,   — | j         rt          S t          S )z'`dict` type to return when serializing.)rP   r   r[   rº   s    r,   Ú
dict_classzSchema.dict_classî  s   € ð Œ<ð 	ÝÐÝˆr.   ÚGeneratedSchema)rJ   r   rJ   útype[Schema]c               ó¦   — t          dt          | dt          ¦  «        fddi¦  «        }t          || fi |                     ¦   «         ¥d|i¥¦  «        S )a£  Generate a `Schema <marshmallow.Schema>` class given a dictionary of fields.

        .. code-block:: python

            from marshmallow import Schema, fields

            PersonSchema = Schema.from_dict({"name": fields.Str()})
            print(PersonSchema().load({"name": "David"}))  # => {'name': 'David'}

        Generated schemas are not added to the class registry and therefore cannot
        be referred to by name in `Nested` fields.


        :param fields: Dictionary mapping field names to field instances.
        :param name: Optional name for the class, which will appear in
            the ``repr`` for the class.

        .. versionadded:: 3.0.0
        ÚGeneratedMetarE   rf   F)rD   r7   Úobjectr¬   )ri   r   rJ   rE   s       r,   Ú	from_dictzSchema.from_dictõ  s\   € õ4 Ø�g c¨6µ6Ñ:Ô:Ð<¸zÈ5Ð>Qñ
ô 
ˆõ �D˜3˜&Ð"A V§[¢[¡]¤]Ð"A°F¸DÐ"AÐ"AÑBÔBÐBr.   Úerrorr   Údatar„   c               ó   — dS )a›  Custom error handler function for the schema.

        :param error: The `ValidationError` raised during (de)serialization.
        :param data: The original input data.
        :param many: Value of ``many`` on dump or load.
        :param partial: Value of ``partial`` on load.

        .. versionchanged:: 3.0.0rc9
            Receives `many` and `partial` (on deserialization) as keyword arguments.
        Nr'   )rš   rÄ   rÅ   rm   rn   s        r,   Úhandle_errorzSchema.handle_error  s   € € € r.   Úobjrw   Údefaultc                ó$   — t          |||¦  «        S )z›Defines how to pull values from an object to serialize.

        .. versionchanged:: 3.0.0a1
            Changed position of ``obj`` and ``attr``.
        )r   )rš   rÈ   rw   rÉ   s       r,   Úget_attributezSchema.get_attribute$  s   € õ ˜˜d GÑ,Ô,Ð,r.   ©Úindexc               ó¤   — 	  | |¦  «        }nB# t           $ r5}|                     |j        ||¬¦  «         |j        pt          cY d}~S d}~ww xY w|S )a   Call ``getter_func`` with ``data`` as its argument, and store any `ValidationErrors`.

        :param getter_func: Function for getting the serialized/deserialized
            value from ``data``.
        :param data: The data passed to ``getter_func``.
        :param field_name: Field name.
        :param index: Index of the item being validated, if validating a collection,
            otherwise `None`.
        rÌ   N)r   Ústore_errorr·   Ú
valid_datar   )Úgetter_funcrÅ   r*   Úerror_storerÍ   ÚvaluerÄ   s          r,   Ú_call_and_storezSchema._call_and_store.  sz   € ð	/Ø�K Ñ%Ô%ˆEˆEøÝð 	/ð 	/ð 	/Ø×#Ò# E¤N°JÀeÐ#ÑLÔLÐLð Ô#Ð.¥wÐ.Ð.Ð.Ð.Ð.Ð.øøøøð		/øøøð
 ˆs   ‚ Ž
A˜*AÁAÁAF©rm   c               ó
  ‡ — |r|�ˆ fd„|D ¦   «         S ‰                       ¦   «         }‰ j                             ¦   «         D ]A\  }}|                     ||‰ j        ¬¦  «        }|t
          u rŒ,|j        �|j        n|}|||<   ŒB|S )zÏSerialize ``obj``.

        :param obj: The object(s) to serialize.
        :param many: `True` if ``data`` should be serialized as a collection.
        :return: A dictionary of the serialized data
        Nc                ó>   •— g | ]}‰                      |d ¬¦  «        ‘ŒS )FrÕ   )Ú
_serialize)r)   Údrš   s     €r,   r-   z%Schema._serialize.<locals>.<listcomp>J  s)   ø€ Ð@Ð@Ð@°q�D—O’O A¨E�OÑ2Ô2Ð@Ð@Ð@r.   )Úaccessor)r½   r²   r/   Ú	serializerË   r   Údata_key)rš   rÈ   rm   Úretro   Ú	field_objrÓ   Úkeys   `       r,   rØ   zSchema._serializeB  s®   ø€ ð ð 	A�C�OØ@Ð@Ð@Ð@¸CÐ@Ñ@Ô@Ð@Ø�oŠoÑÔˆØ$(Ô$4×$:Ò$:Ñ$<Ô$<ð 	ð 	Ñ ˆI�yØ×'Ò'¨	°3ÀÔASÐ'ÑTÔTˆEØ�ÐÐØØ(1Ô(:Ð(F�)Ô$Ð$ÈIˆCØˆC�‰HˆHØˆ
r.   c               ó*  — |€| j         nt          |¦  «        }| j        t                   r|                      t          |||¬¦  «        }n|}|                      ||¬¦  «        }| j        t                   r|                      t          |||¬¦  «        }|S )aª  Serialize an object to native Python data types according to this
        Schema's fields.

        :param obj: The object to serialize.
        :param many: Whether to serialize `obj` as a collection. If `None`, the value
            for `self.many` is used.
        :return: Serialized data

        .. versionadded:: 1.0.0
        .. versionchanged:: 3.0.0b7
            This method returns the serialized data rather than a ``(data, errors)`` duple.
            A :exc:`ValidationError <marshmallow.exceptions.ValidationError>` is raised
            if ``obj`` is invalid.
        .. versionchanged:: 3.0.0rc9
            Validation no longer occurs upon serialization.
        N)rm   Úoriginal_datarÕ   )rm   r„   rh   r   Ú_invoke_dump_processorsrØ   r   )rš   rÈ   rm   Úprocessed_objÚresults        r,   ÚdumpzSchema.dumpT  s¢   € ð" !˜LˆtŒyˆy­d°4©j¬jˆØŒ;•xÔ ð 	 Ø ×8Ò8Ý˜# D¸ð 9ñ ô ˆMˆMð  ˆMà—’ °T�Ñ:Ô:ˆàŒ;•yÔ!ð 	Ø×1Ò1Ý˜6¨¸Cð 2ñ ô ˆFð ˆr.   c               óf   — |                       ||¬¦  «        } | j        j        j        |g|¢R i |¤ŽS )a+  Same as :meth:`dump`, except return a JSON-encoded string.

        :param obj: The object to serialize.
        :param many: Whether to serialize `obj` as a collection. If `None`, the value
            for `self.many` is used.
        :return: A ``json`` string

        .. versionadded:: 1.0.0
        .. versionchanged:: 3.0.0b7
            This method returns the serialized data rather than a ``(data, errors)`` duple.
            A :exc:`ValidationError <marshmallow.exceptions.ValidationError>` is raised
            if ``obj`` is invalid.
        rÕ   )rå   rG   r�   Údumps)rš   rÈ   rm   Úargsrn   Ú
serializeds         r,   rç   zSchema.dumpsv  sA   € ð —Y’Y˜s¨�YÑ.Ô.ˆ
Ø,ˆtŒyÔ&Ô,¨ZÐI¸$ÐIÐIÐIÀ&ÐIÐIÐIr.   )rm   r¤   r“   rÍ   úRtyping.Mapping[str, typing.Any] | typing.Iterable[typing.Mapping[str, typing.Any]]rÒ   r   útyping.Any | list[typing.Any]c               ól  ‡ ‡‡‡‡‡‡— ‰ j         j        }|r|nd}|rUt          ‰¦  «        s&‰                     ‰ j        d         g|¬¦  «         g }nˆˆˆ ˆfd„t          ‰¦  «        D ¦   «         }|S ‰                      ¦   «         }	t          ‰t          ¦  «        s%‰                     ‰ j        d         g|¬¦  «         �nut          ‰¦  «        }
‰ j	         
                    ¦   «         D ]¾\  }}|j        �|j        n|}‰                     |t          ¦  «        }|t          u r‰du s|
r|‰v rŒDi }|
r)|dz   Št          ‰¦  «        Šˆˆfd„‰D ¦   «         }||d<   n‰�‰|d<   |||fˆfd	„	}‰                      |||‰|¬
¦  «        }|t          ur|j        p|}t#          |	||¦  «         Œ¿‰t$          k    rƒd„ ‰ j	         
                    ¦   «         D ¦   «         }t'          ‰¦  «        |z
  D ]M}‰|         }‰t(          k    r||	|<   Œ‰t*          k    r'‰                     ‰ j        d         g||r|nd¦  «         ŒN|	S )a«  Deserialize ``data``.

        :param data: The data to deserialize.
        :param error_store: Structure to store errors.
        :param many: `True` if ``data`` should be deserialized as a collection.
        :param partial: Whether to ignore missing fields and not require
            any fields declared. Propagates down to ``Nested`` fields as well. If
            its value is an iterable, only missing fields listed in that iterable
            will be ignored. Use dot delimiters to specify nested fields.
        :param unknown: Whether to exclude, include, or raise an error for unknown
            fields in the data. Use `EXCLUDE`, `INCLUDE` or `RAISE`.
        :param index: Index of the item being serialized (for storing errors) if
            serializing a collection, otherwise `None`.
        :return: The deserialized data as `dict_class` instance or list of `dict_class`
        instances if `many` is `True`.
        NrD   rÌ   c           
     ó|   •— g | ]8\  }}‰                      t          j        t          |¦  «        ‰d ‰‰|¬¦  «        ‘Œ9S )F)rÒ   rm   r¤   r“   rÍ   )Ú_deserializeÚtypingÚcastr[   )r)   ÚidxrÙ   rÒ   r¤   rš   r“   s      €€€€r,   r-   z'Schema._deserialize.<locals>.<listcomp>«  sb   ø€ ð 
ð 
ð 
ñ ˜˜Qð ×%Ò%Ýœ¥D¨!Ñ,Ô,Ø$/Ø"Ø 'Ø 'Ø!ð &ñ ô ð
ð 
ð 
r.   Tú.c                óN   •— g | ]!}|                      ‰¦  «        ¯|‰d …         ‘Œ"S rd   )Ú
startswith)r)   ÚfÚ
len_prefixÚprefixs     €€r,   r-   z'Schema._deserialize.<locals>.<listcomp>Í  sB   ø€ ð #ð #ð #Ø+,¸1¿<º<ÈÑ;OÔ;Oð#Ø˜*˜+˜+œð#ð #ð #r.   r¤   c                ó$   •—  |j         | |‰fi |¤ŽS rd   )Údeserialize)ÚvalrÞ   r*   Úd_kwargsrÅ   s       €r,   Úgetterz#Schema._deserialize.<locals>.getterÔ  s4   ø€ ð 1˜9Ô0ØØ"Øðð ð #ð	ð ð r.   ©rÑ   rÅ   r*   rÒ   rÍ   c                ó4   — h | ]\  }}|j         �|j         n|’ŒS rd   ©rÜ   )r)   r*   rÞ   s      r,   ú	<setcomp>z&Schema._deserialize.<locals>.<setcomp>é  s<   € ð ð ð á-˜
 Ið +4Ô*<Ð*H�IÔ&Ð&Èjðð ð r.   r“   )rG   r�   r   rÏ   rž   Ú	enumerater½   r”   r   r±   r/   rÜ   rT   r   ÚlenrÔ   Ú	attributer   r   r¯   r   r   )rš   rÅ   rÒ   rm   r¤   r“   rÍ   r�   Úret_lÚret_dÚpartial_is_collectionro   rÞ   r*   Ú	raw_valuerû   Úsub_partialrü   rÓ   rß   r   rö   r÷   s   ``` ``               @@r,   rî   zSchema._deserialize‡  s$  øøøøøøø€ ð: ”yÔ-ˆØ%Ð/��¨4ˆØð 	Ý  Ñ&Ô&ð Ø×'Ò'¨Ô)<¸VÔ)DÐ(EÈUÐ'ÑSÔSÐSØ��ð
ð 
ð 
ð 
ð 
ð 
ð 
õ #,¨D¡/¤/ð
ñ 
ô 
�ð ˆLØ—’Ñ!Ô!ˆå˜$¥Ñ(Ô(ð =	Ø×#Ò# TÔ%8¸Ô%@Ð$AÈÐ#ÑOÔOÐOÑOå$1°'Ñ$:Ô$:Ð!Ø(,Ô(8×(>Ò(>Ñ(@Ô(@ð *1ð *1Ñ$�	˜9à*3Ô*<Ð*H�IÔ&Ð&Èið ð !ŸHšH ZµÑ9Ô9�	Ø¥Ð'Ð'à $��Ø-ð 'Ø2;¸wÐ2FÐ2Fà Ø�à(ð 2Ø'¨#Ñ-�FÝ!$ V¡¤�Jð#ð #ð #ð #ð #Ø07ð#ñ #ô #�Kð +6�H˜YÑ'Ð'ØÐ(Ø*1�H˜YÑ'ð $-¸Èhðð ð ð ð ð ð ×,Ò,Ø &Ø"Ø)Ø +Øð -ñ ô �ð ¥Ð'Ð'Ø#Ô-Ð:°�CÝ˜e S¨%Ñ0Ô0Ð0øØ�'Ò!Ð!ðð à15Ô1A×1GÒ1GÑ1IÔ1Iðñ ô �õ ˜t™9œ9 vÑ-ð 	ð 	�CØ  œI�EØ¥'Ò)Ð)Ø%*˜˜c™
˜
Ø ¥EÒ)Ð)Ø#×/Ò/Ø!Ô0°Ô;Ð<ØØ&2Ð<˜U˜U¸ñô ð øð
 ˆr.   ©rm   r¤   r“   c               ó6   — |                       ||||d¬¦  «        S )aR  Deserialize a data structure to an object defined by this Schema's fields.

        :param data: The data to deserialize.
        :param many: Whether to deserialize `data` as a collection. If `None`, the
            value for `self.many` is used.
        :param partial: Whether to ignore missing fields and not require
            any fields declared. Propagates down to ``Nested`` fields as well. If
            its value is an iterable, only missing fields listed in that iterable
            will be ignored. Use dot delimiters to specify nested fields.
        :param unknown: Whether to exclude, include, or raise an error for unknown
            fields in the data. Use `EXCLUDE`, `INCLUDE` or `RAISE`.
            If `None`, the value for `self.unknown` is used.
        :return: Deserialized data

        .. versionadded:: 1.0.0
        .. versionchanged:: 3.0.0b7
            This method returns the deserialized data rather than a ``(data, errors)`` duple.
            A :exc:`ValidationError <marshmallow.exceptions.ValidationError>` is raised
            if invalid data are passed.
        T©rm   r¤   r“   Úpostprocess)Ú_do_load)rš   rÅ   rm   r¤   r“   s        r,   ÚloadzSchema.loadù  s*   € ð> �}Š}Ø�t W°gÈ4ð ñ 
ô 
ð 	
r.   Ú	json_dataústr | bytes | bytearrayc               ód   —  | j         j        j        |fi |¤Ž}|                      ||||¬¦  «        S )a²  Same as :meth:`load`, except it uses `marshmallow.Schema.Meta.render_module` to deserialize
        the passed string before passing data to :meth:`load`.

        :param json_data: A string of the data to deserialize.
        :param many: Whether to deserialize `obj` as a collection. If `None`, the
            value for `self.many` is used.
        :param partial: Whether to ignore missing fields and not require
            any fields declared. Propagates down to ``Nested`` fields as well. If
            its value is an iterable, only missing fields listed in that iterable
            will be ignored. Use dot delimiters to specify nested fields.
        :param unknown: Whether to exclude, include, or raise an error for unknown
            fields in the data. Use `EXCLUDE`, `INCLUDE` or `RAISE`.
            If `None`, the value for `self.unknown` is used.
        :return: Deserialized data

        .. versionadded:: 1.0.0
        .. versionchanged:: 3.0.0b7
            This method returns the deserialized data rather than a ``(data, errors)`` duple.
            A :exc:`ValidationError <marshmallow.exceptions.ValidationError>` is raised
            if invalid data are passed.
        r	  )rG   r�   Úloadsr  )rš   r  rm   r¤   r“   rn   rÅ   s          r,   r  zSchema.loads  s=   € ð< -ˆtŒyÔ&Ô,¨YÐAÐA¸&ÐAÐAˆØ�yŠy˜ D°'À7ˆyÑKÔKÐKr.   Úvalidator_funcútypes.SchemaValidatorÚpass_originalrÍ   ú
int | Nonec               ó€  — 	 |r |||||¬¦  «         d S  ||||¬¦  «         d S # t           $ rŽ}	|	j        }
|
t          k    rt          }nLd }	 | j        |
         }n&# t          $ r |
| j        v r| j        |
         }Y nw xY w|r|j        �|j        n|
}n|
}|                     |	j        ||¬¦  «         Y d }	~	d S d }	~	ww xY w)N)r¤   rm   rÌ   )	r   r*   r   r   rq   r®   rÜ   rÏ   r·   )rš   r  Úoutputrá   rÒ   rm   r¤   r  rÍ   Úerrr*   rÜ   rÞ   s                r,   Ú_run_validatorzSchema._run_validator=  s>  € ð	IØð CØ�˜v }¸gÈDÐQÑQÔQÐQÐQÐQà�˜v¨w¸TÐBÑBÔBÐBÐBÐBøÝð 	Ið 	Ið 	IØœˆJà�VÒ#Ð#Ý!��à*.�	ðEØ $¤¨JÔ 7�I�IøÝð Eð Eð EØ! TÔ%9Ð9Ð9Ø$(Ô$8¸Ô$D˜	øøðEøøøð ð *ð %Ô-Ð9ð "Ô*Ð*à'ð �Hð  *�HØ×#Ò# C¤L°(À%Ð#ÑHÔHÐHÐHÐHÐHÐHÐHÐHøøøøð)	Iøøøs<   ‚% •% ¥
B=¯B8ÁAÁB8Á A=Á:B8Á<A=Á=5B8Â8B=©rm   r¤   údict[str, list[str]]c               óâ   — 	 |                       |||d¬¦  «         nS# t          $ rF}t          j        t          t
          t          t
                   f         |j        ¦  «        cY d}~S d}~ww xY wi S )a”  Validate `data` against the schema, returning a dictionary of
        validation errors.

        :param data: The data to validate.
        :param many: Whether to validate `data` as a collection. If `None`, the
            value for `self.many` is used.
        :param partial: Whether to ignore missing fields and not require
            any fields declared. Propagates down to ``Nested`` fields as well. If
            its value is an iterable, only missing fields listed in that iterable
            will be ignored. Use dot delimiters to specify nested fields.
        :return: A dictionary of validation errors.

        .. versionadded:: 1.1.0
        F)rm   r¤   r  N)r  r   rï   rð   r[   rK   rX   r·   )rš   rÅ   rm   r¤   Úexcs        r,   ÚvalidatezSchema.validated  s}   € ð0	CØ�MŠM˜$ T°7ÈˆMÑNÔNÐNÐNøÝð 	Cð 	Cð 	CÝ”;�t¥C­­c¬ NÔ3°S´\ÑBÔBÐBÐBÐBÐBÐBÐBøøøøð	Cøøøàˆ	s   ‚ œ
A,¦;A'Á!A,Á'A,Tr  r  c          	     ó°  — t          ¦   «         }i }|€| j        nt          |¦  «        }|€| j        nt	          |¦  «        }|€| j        }| j        t                   rN	 |                      t          ||||¬¦  «        }n/# t          $ r }	|	 
                    ¦   «         }d}
Y d}	~	n
d}	~	ww xY w|}|sù|                      |||||¬¦  «        }
|                      ||
|¬¦  «         | j        t                   rLt          |j        ¦  «        }|                      |d|
||||¬¦  «         |                      |d|
||||¬¦  «         |j        }|s`|r^| j        t                    rL	 |                      t           |
|||¬¦  «        }
n+# t          $ r}	|	 
                    ¦   «         }Y d}	~	nd}	~	ww xY w|r-t          |||
¬¦  «        }|                      ||||¬	¦  «         |‚|
S )
ar  Deserialize `data`, returning the deserialized result.
        This method is private API.

        :param data: The data to deserialize.
        :param many: Whether to deserialize `data` as a collection. If `None`, the
            value for `self.many` is used.
        :param partial: Whether to validate required fields. If its
            value is an iterable, only fields listed in that iterable will be
            ignored will be allowed missing. If `True`, all fields will be allowed missing.
            If `None`, the value for `self.partial` is used.
        :param unknown: Whether to exclude, include, or raise an error for unknown
            fields in the data. Use `EXCLUDE`, `INCLUDE` or `RAISE`.
            If `None`, the value for `self.unknown` is used.
        :param postprocess: Whether to run post_load methods..
        :return: Deserialized data
        N)rm   rá   r¤   )rÒ   rm   r¤   r“   )rÒ   rÅ   rm   T)rÒ   Ú	pass_manyrÅ   rá   rm   r¤   Úfield_errorsF)rÅ   rÐ   r  )r   rm   r„   r“   r    r¤   rh   r   Ú_invoke_load_processorsr   Únormalized_messagesrî   Ú_invoke_field_validatorsr   ÚerrorsÚ_invoke_schema_validatorsr   rÇ   )rš   rÅ   rm   r¤   r“   r  rÒ   r&  Úprocessed_datar  rä   r"  r  s                r,   r  zSchema._do_load„  s�  € õ8 !‘l”lˆØ')ˆØ ˜LˆtŒyˆy­d°4©j¬jˆð ˆð ŒLˆLå1°'Ñ:Ô:ð 	ð
 ˆ?Ø”lˆGàŒ;•xÔ ð 		"ð2Ø!%×!=Ò!=Ý˜d¨¸TÈ7ð ">ñ "ô "��øõ #ð 2ð 2ð 2Ø×0Ò0Ñ2Ô2�Ø-1������øøøøð2øøøð "ˆNØð .	7à×&Ò&ØØ'ØØØð 'ñ ô ˆFð ×)Ò)Ø'¨f¸4ð *ñ ô ð ð Œ{Õ+Ô,ð Ý# KÔ$6Ñ7Ô7�Ø×.Ò.Ø +Ø"ØØ"&ØØ#Ø!-ð /ñ ô ð ð ×.Ò.Ø +Ø#ØØ"&ØØ#Ø!-ð /ñ ô ð ð !Ô'ˆFàð 
7˜kð 
7¨d¬k½)Ô.Dð 
7ð	7Ø!×9Ò9Ý!ØØ!Ø&*Ø 'ð :ñ ô �F�Føõ 'ð 7ð 7ð 7Ø ×4Ò4Ñ6Ô6�F�F�F�F�F�Føøøøð7øøøàð 	Ý! &¨tÀÐGÑGÔGˆCØ×Ò˜c 4¨d¸GÐÑDÔDÐDØˆIàˆs0   ÁA= Á=
B'ÂB"Â"B'ÅE< Å<
F$ÆFÆF$ÚNonec                ó:  — | j         �E|                      d| j         d¦  «         |                      d„ | j         D ¦   «         ¦  «        | _         | j        rG|                      d| j        d¦  «         |                      d„ | j        D ¦   «         ¦  «        | _        dS dS )zVApply then flatten nested schema options.
        This method is private API.
        Nr¢   Úintersectionc                óF   — g | ]}|                      d d¦  «        d         ‘ŒS )rò   é   r   ©Úsplit©r)   Úfields     r,   r-   z4Schema._normalize_nested_options.<locals>.<listcomp>ó  s+   € Ð'VÐ'VÐ'VÀ5¨¯ª°C¸Ñ(;Ô(;¸AÔ(>Ð'VÐ'VÐ'Vr.   r‡   Úunionc                ó   — g | ]}d |v¯|‘Œ	S )rò   r'   r0  s     r,   r-   z4Schema._normalize_nested_options.<locals>.<listcomp>ù  s"   € ÐEÐEÐE˜5°C¸uÐ4DÐ4D�Ð4DÐ4DÐ4Dr.   )r¢   Ú_Schema__apply_nested_optionÚ	set_classr‡   rº   s    r,   r°   z Schema._normalize_nested_optionsë  s¤   € ð Œ9Ð à×&Ò& v¨t¬y¸.ÑIÔIÐIàŸšÐ'VÐ'VÈDÌIÐ'VÑ'VÔ'VÑWÔWˆDŒIØŒ<ð 	à×&Ò& y°$´,ÀÑHÔHÐHàŸ>š>ØEÐE D¤LÐEÑEÔEñô ˆDŒLˆLˆLð		ð 	r.   c                óð  — d„ |D ¦   «         }t          t          ¦  «        }|D ] \  }}||                              |¦  «         Œ!t          |                     ¦   «         ¦  «        D ]�\  }}	|                      |	¦  «        }
t          | j        |         |d¦  «        }|r<|dk    r|
|                      |¦  «        z  }
|dk    r|
|                      |¦  «        z  }
t          | j        |         ||
¦  «         Œ‘dS )z%Apply nested options to nested fieldsc                óB   — g | ]}d |v ¯|                      d d¦  «        ‘ŒS )rò   r-  r.  )r)   rJ   s     r,   r-   z0Schema.__apply_nested_option.<locals>.<listcomp>ÿ  s+   € ÐSÐSÐS°ÀsÈdÀ{À{˜Ÿš C¨Ñ+Ô+À{À{À{r.   r'   r2  r+  N)	r   rX   ÚappendÚiterr/   r5  r7   r®   Úsetattr)rš   Úoption_nameÚfield_namesÚset_operationÚnested_fieldsÚnested_optionsrv   Únested_namesrß   ÚoptionsÚnew_optionsÚoriginal_optionss               r,   Ú__apply_nested_optionzSchema.__apply_nested_optionü  s  € ð TÐS¸ÐSÑSÔSˆå$¥TÑ*Ô*ˆØ$1ð 	8ð 	8Ñ ˆF�LØ˜6Ô"×)Ò)¨,Ñ7Ô7Ð7Ð7å  ×!5Ò!5Ñ!7Ô!7Ñ8Ô8ð 	Ið 	I‰LˆC�ØŸ.š.¨Ñ1Ô1ˆKÝ& tÔ';¸CÔ'@À+ÈrÑRÔRÐØð DØ  GÒ+Ð+Ø 4§>¢>Ð2BÑ#CÔ#CÑC�KØ  NÒ2Ð2Ø 4§>¢>Ð2BÑ#CÔ#CÑC�KÝ�DÔ(¨Ô-¨{¸KÑHÔHÐHÐHð	Ið 	Ir.   c                ó„  ‡‡— | j         j        r |                      | j         j        ¦  «        }nZ|                      | j                             ¦   «         ¦  «        }| j         j        r"||                      | j         j        ¦  «        z  }|                      ¦   «         }| j        �#|                      | j        ¦  «        }|||z
  z  }n|}| j        r|| j        z
  }|| j        |z
  z  }|rd| › d|› d�}t          |¦  «        ‚|  	                    ¦   «         }|D ]I}| j         
                    |t          j        ¦   «         ¦  «        }|                      ||¦  «         |||<   ŒJ|  	                    ¦   «         |  	                    ¦   «         }	}|                     ¦   «         D ]\  }}|j        s|||<   |j        s||	|<   Œd„ |	                     ¦   «         D ¦   «         Št#          ‰¦  «        t#          t%          ‰¦  «        ¦  «        k    r-ˆfd„‰D ¦   «         }
t          dt'          |
¦  «        › �¦  «        ‚d„ |                     ¦   «         D ¦   «         Št#          ‰¦  «        t#          t%          ‰¦  «        ¦  «        k    r-ˆfd	„‰D ¦   «         }t          d
t'          |¦  «        › �¦  «        ‚|| _        |	| _        || _        dS )z€Update self.fields, self.load_fields, and self.dump_fields based on schema options.
        This method is private API.
        NzInvalid fields for z: rò   c                ó4   — g | ]\  }}|j         �|j         n|‘ŒS rd   rÿ   )r)   rJ   rÞ   s      r,   r-   z'Schema._init_fields.<locals>.<listcomp><  s<   € ð 
ð 
ð 
á��ið #,Ô"4Ð"@ˆIÔÐÀdð
ð 
ð 
r.   c                óF   •— h | ]}‰                      |¦  «        d k    ¯|’ŒS ©r-  ©Úcount)r)   ÚxÚdump_data_keyss     €r,   r   z&Schema._init_fields.<locals>.<setcomp>A  s8   ø€ ð $ð $ð $Ø¨^×-AÒ-AÀ!Ñ-DÔ-DÀqÒ-HÐ-H�Ð-HÐ-HÐ-Hr.   zžThe data_key argument for one or more fields collides with another field's name or data_key argument. Check the following field names and data_key arguments: c                ó&   — g | ]\  }}|j         p|‘ŒS r'   )r  )r)   rJ   rÈ   s      r,   r-   z'Schema._init_fields.<locals>.<listcomp>J  s#   € ÐVÐVÐV±Y°T¸3˜3œ=Ð0¨DÐVÐVÐVr.   c                óF   •— h | ]}‰                      |¦  «        d k    ¯|’ŒS rH  rI  )r)   rK  Úload_attributess     €r,   r   z&Schema._init_fields.<locals>.<setcomp>L  s8   ø€ ð %ð %ð %Ø¨o×.CÒ.CÀAÑ.FÔ.FÈÒ.JÐ.J�Ð.JÐ.JÐ.Jr.   z¡The attribute argument for one or more fields collides with another field's name or attribute argument. Check the following field names and attribute arguments: )rG   r   r5  r®   Úkeysr†   r¢   r‡   r–   r½   rT   Ú	ma_fieldsÚInferredÚ_bind_fieldr/   r’   r‘   r  r¯   rX   r²   r±   )rš   Úavailable_field_namesÚinvalid_fieldsr<  ÚmessageÚfields_dictr*   rÞ   r±   r²   Údata_keys_duplicatesÚattributes_duplicatesrL  rO  s               @@r,   r³   zSchema._init_fields  sL  øø€ ð Œ9Ôð 	NØ$(§N¢N°4´9Ô3CÑ$DÔ$DÐ!Ð!à$(§N¢N°4Ô3G×3LÒ3LÑ3NÔ3NÑ$OÔ$OÐ!ØŒyÔ#ð NØ%¨¯ª¸¼	Ô8LÑ)MÔ)MÑMÐ%àŸšÑ)Ô)ˆàŒ9Ð à:>¿.º.ÈÌÑ:SÔ:SˆKà˜kÐ,AÑAÑAˆNˆNà/ˆKð Œ<ð 	Cð &¨¬Ñ4ˆKØ˜dœlÐ-BÑBÑBˆNàð 	&ØE¨DÐEÐE°NÐEÐEÐEˆGÝ˜WÑ%Ô%Ð%à—o’oÑ'Ô'ˆØ%ð 	0ð 	0ˆJØÔ,×0Ò0°½YÔ=OÑ=QÔ=QÑRÔRˆIØ×Ò˜Z¨Ñ3Ô3Ð3Ø&/ˆK˜
Ñ#Ð#à#'§?¢?Ñ#4Ô#4°d·o²oÑ6GÔ6G�[ˆØ%0×%6Ò%6Ñ%8Ô%8ð 	4ð 	4Ñ!ˆJ˜	ØÔ&ð 4Ø*3�˜JÑ'ØÔ&ð 4Ø*3�˜JÑ'øð
ð 
à#.×#4Ò#4Ñ#6Ô#6ð
ñ 
ô 
ˆõ ˆ~ÑÔ¥#¥c¨.Ñ&9Ô&9Ñ":Ô":Ò:Ð:ð$ð $ð $ð $Ø)ð$ñ $ô $Ð õ ðDõ (,Ð,@Ñ'AÔ'AðDð Dñô ð ð WÐVÀ+×BSÒBSÑBUÔBUÐVÑVÔVˆÝˆÑÔ¥3¥s¨?Ñ';Ô';Ñ#<Ô#<Ò<Ð<ð%ð %ð %ð %Ø*ð%ñ %ô %Ð!õ ðFõ )-Ð-BÑ(CÔ(CðFð Fñô ð ð "ˆŒØ&ˆÔØ&ˆÔÐÐr.   r*   rÞ   r"   c                ó   — dS )zqHook to modify a field when it is bound to the `Schema <marshmallow.Schema>`.

        No-op by default.
        Nr'   )rš   r*   rÞ   s      r,   Úon_bind_fieldzSchema.on_bind_fieldZ  s	   € ð
 	ˆr.   c                ób  — || j         v rd|_         || j        v rd|_        	 |                     || ¦  «         n`# t          $ rS}t	          |t
          ¦  «        r8t          |t          j        ¦  «        rd|› d|j	        › d�}t          |¦  «        |‚‚ d}~ww xY w|  
                    ||¦  «         dS )zöBind field to the schema, setting any necessary attributes on the
        field (e.g. parent and name).

        Also set field load_only and dump_only values if field_name was
        specified in `class Meta <marshmallow.Schema.Meta>`.
        TzField for "zJ" must be declared as a Field instance, not a class. Did you mean "fields.z()"?N)r‘   r’   Ú_bind_to_schemaÚ	TypeErrorr”   rD   Ú
issubclassr	   r(   r{   r[  )rš   r*   rÞ   rÄ   Úmsgs        r,   rS  zSchema._bind_fielda  sô   € ð ˜œÐ'Ð'Ø"&ˆIÔØ˜œÐ'Ð'Ø"&ˆIÔð	Ø×%Ò% j°$Ñ7Ô7Ð7Ð7øÝð 	ð 	ð 	õ ˜)¥TÑ*Ô*ð 0­z¸)ÅTÄ]Ñ/SÔ/Sð 0ðE *ð Eð Eà,5Ô,>ðEð Eð Eð õ
   ‘n”n¨%Ð/Øøøøøð	øøøð 	×Ò˜: yÑ1Ô1Ð1Ð1Ð1s   ¢9 ¹
BÁABÂB)rá   ry   c               ój   — |                       |d|||¬¦  «        }|                       |d|||¬¦  «        S )NF)r!  rÅ   rm   rá   T©Ú_invoke_processors)rš   ry   rÅ   rm   rá   s        r,   râ   zSchema._invoke_dump_processors|  sS   € ð ×&Ò&Ø˜5 t°$Àmð 'ñ 
ô 
ˆð ×&Ò&Ø˜4 d°À]ð 'ñ 
ô 
ð 	
r.   c               ón   — |                       |d||||¬¦  «        }|                       |d||||¬¦  «        S )NT)r!  rÅ   rm   rá   r¤   Frb  )rš   ry   rÅ   rm   rá   r¤   s         r,   r#  zSchema._invoke_load_processors‰  sa   € ð ×&Ò&ØØØØØ'Øð 'ñ 
ô 
ˆð ×&Ò&ØØØØØ'Øð 'ñ 
ô 
ð 	
r.   c          	     óÂ  — | j         t                   D �]J\  }}}t          | |¦  «        }|d         }	 | j        |         }	n4# t          $ r'}
|| j        v rY d }
~
ŒFt          d|› d�¦  «        |
‚d }
~
ww xY w|	j        �|	j        n|}|r}t          |¦  «        D ]l\  }}	 ||	j	        p|         }|  
                    ||||| j        j        r|nd ¬¦  «        }|t          u r|                     |d ¦  «         Œ]# t          $ r Y Œiw xY wŒñ	 ||	j	        p|         }|  
                    ||||¬¦  «        }|t          u r|                     |d ¦  «         �Œ;# t          $ r Y �ŒHw xY wd S )Nr*   ú"z" field does not exist.rý   )rÑ   rÅ   r*   rÒ   )rh   r   r7   r   rq   r®   r–   rÜ   r  r  rÔ   rG   r�   r   Úpop)rš   rÒ   rÅ   rm   ro   r_   Úvalidator_kwargsÚ	validatorr*   rÞ   rÄ   rÜ   rñ   ÚitemrÓ   Úvalidated_values                   r,   r%  zSchema._invoke_field_validators¥  s	  € Ø.2¬k½)Ô.Dð +	3ñ +	3Ñ*ˆI�qÐ*Ý  iÑ0Ô0ˆIØ)¨,Ô7ˆJðUØ œK¨
Ô3�	�	øÝð Uð Uð UØ Ô!5Ð5Ð5Ø�H�H�H�HÝ Ð!H ZÐ!HÐ!HÐ!HÑIÔIÈuÐTøøøøðUøøøð '0Ô&8Ð&D�	Ô"Ð"È*ð ð ð 3Ý!*¨4¡¤ð 7ð 7‘I�C˜ð7Ø $ YÔ%8Ð%F¸JÔ G˜ð +/×*>Ò*>Ø(1Ø!&Ø'/Ø(3Ø*.¬)Ô*@Ð#J 3 3Àdð +?ñ +ô +˜ð +­gÐ5Ð5Ø ŸHšH Z°Ñ6Ô6Ð6øøõ $ð ð ð Ø˜ðøøøð7ð 3Ø  Ô!4Ð!B¸
ÔC�Eð '+×&:Ò&:Ø$-Ø"Ø#+Ø$/ð	 ';ñ 'ô '�Oð '­'Ð1Ð1ØŸš ¨TÑ2Ô2Ð2ùøõ  ð ð ð Ø‘DðøøøðC+	3ð +	3sA   ³AÁ
A2Á	A-ÁA-Á-A2ÂC3Ã3
D Ã?D ÄEÅ
EÅE)r"  r!  r"  c               óp  — | j         t                   D ]¢\  }}	}
|	|k    rŒt          | |¦  «        }|r	|
d         rŒ(|
                     dd¦  «        }|rF|sDt	          t          ||¦  «        ¦  «        D ]%\  }\  }}|                      ||||||||¬¦  «         Œ&Œ†|                      |||||||¬¦  «         Œ£d S )NÚskip_on_field_errorsr  F)rá   rÒ   rm   r¤   rÍ   r  )rá   rÒ   rm   r  r¤   )rh   r   r7   rT   r  Úzipr  )rš   rÒ   r!  rÅ   rá   rm   r¤   r"  ro   Ú	hook_manyrh  ri  r  rñ   rj  Úorigs                   r,   r'  z Schema._invoke_schema_validatorsÓ  s)  € ð 7;´kÕBRÔ6Sð 	ð 	Ñ2ˆI�yÐ"2Ø˜IÒ%Ð%ØÝ  iÑ0Ô0ˆIØð Ð 0Ð1GÔ Hð ØØ,×0Ò0°À%ÑHÔHˆMàð ˜Ið Ý)2µ3°t¸]Ñ3KÔ3KÑ)LÔ)Lð 
ð 
Ñ%�C™˜$ Ø×'Ò'Ø!ØØ&*Ø$/Ø!Ø 'Ø!Ø&3ð (ñ 	ô 	ð 	ð 	ð
ð ×#Ò#ØØØ"/Ø +ØØ"/Ø#ð $ñ ô ð ð ð+	ð 	r.   c               ó.  ‡‡‡— | j         |         D ]ƒ\  }}}	||k    rŒt          | |¦  «        Š|	                     dd¦  «        }
‰r4|s2|
rˆˆˆfd„t          ||¦  «        D ¦   «         }ŒXˆˆˆfd„|D ¦   «         }Œi|
r ‰||fd‰i‰¤Ž}Œx ‰|fd‰i‰¤Ž}Œ„|S )Nr  Fc                ó.   •— g | ]\  }} ‰||fd ‰i‰¤Ž‘ŒS rÕ   r'   )r)   rj  Úoriginalrn   rm   Ú	processors      €€€r,   r-   z-Schema._invoke_processors.<locals>.<listcomp>  sF   ø€ ð ð ð á*˜D (ð "˜	 $¨ÐFÐF°tÐF¸vÐFÐFðð ð r.   c                ó&   •— g | ]} ‰|fd ‰i‰¤Ž‘ŒS rÕ   r'   )r)   rj  rn   rm   rt  s     €€€r,   r-   z-Schema._invoke_processors.<locals>.<listcomp>  s0   ø€ ÐRÐRÐRÀT˜I˜I dÐ@Ð@°Ð@¸Ð@Ð@ÐRÐRÐRr.   rm   )rh   r7   rT   r   )rš   ry   r!  rÅ   rm   rá   rn   ro   ro  Úprocessor_kwargsr  rt  s       ` `    @r,   rc  zSchema._invoke_processorsý  s  øøø€ ð 7;´kÀ#Ô6Fð 	<ð 	<Ñ2ˆI�yÐ"2Ø˜IÒ%Ð%Øå  iÑ0Ô0ˆIØ,×0Ò0°À%ÑHÔHˆMàð <˜Ið <Ø ð Sðð ð ð ð ð å.9¸$ÀÑ.NÔ.Nðñ ô �D�Dð
 SÐRÐRÐRÐRÐRÈTÐRÑRÔR�D�DØð <Ø �y  }ÐJÐJ¸4ÐJÀ6ÐJÐJ��à �y Ð;Ð;¨DÐ;°FÐ;Ð;��Øˆr.   )r¢   r¥   r‡   r¦   rm   r§   r£   r¨   r‘   r¦   r’   r¦   r¤   r©   r“   rª   )r#   rK   )r#   ra   )r   rI   rJ   rK   r#   r¿   )rÄ   r   rÅ   rF   rm   r„   )rÈ   rF   rw   rK   rÉ   rF   )rÈ   rF   rm   r„   )rÈ   rF   rm   r§   )rÅ   rê   rÒ   r   rm   r„   r#   rë   )rÅ   rê   rm   r§   r¤   r©   r“   rª   )r  r  rm   r§   r¤   r©   r“   rª   )r  r  rÒ   r   rm   r„   r¤   r©   r  r„   rÍ   r  )rÅ   rê   rm   r§   r¤   r©   r#   r  )
rÅ   rê   rm   r§   r¤   r©   r“   rª   r  r„   )r#   r)  )r*   rK   rÞ   r"   r#   r)  )ry   rK   rm   r„   )ry   rK   rm   r„   r¤   r©   )rÒ   r   rm   r„   )
rÒ   r   r!  r„   rm   r„   r¤   r©   r"  r„   )ry   rK   r!  r„   rm   r„   )Hr{   r|   r}   r~   rK   rQ  ÚStringÚbytesÚdtÚdatetimeÚDateTimeÚfloatÚFloatr„   ÚBooleanr•   ÚRawrX   r¯   ÚintÚIntegerÚuuidÚUUIDÚtimeÚTimeÚdateÚDateÚ	timedeltaÚ	TimeDeltaÚdecimalÚDecimalr�   r   rž   rŸ   rƒ   rH   r   r5  r6   rh   rE   re   r»   Úpropertyr½   r€   rÃ   rÇ   rË   ÚstaticmethodrÔ   rØ   rå   rç   r   rî   r  r  r  r  r  r°   r4  r³   r[  rS  râ   r#  r%  r'  rc  r'   r.   r,   rœ   rœ     sæ  € € € € € € ð2ð 2ðj 	ˆYÔØˆyÔØ
Œ�YÔ'ØˆyŒØˆiÔØˆyŒ}ØˆiŒmØˆYŒ]ØˆYÔØŒ	�9”>Ø
Œ�”Ø
Œ�”Ø
Œ�iÔ)ØŒ˜Ô*ð-€Lð ð ð ñ ð" &(€NÐ'Ð'Ð'Ñ'ð &Ø#ð/ð /Ðð ð ð ñ ð
 %€MÐ$Ð$Ð$Ñ$à€Ið ÐÐÑØ)+ÐÐ+Ð+Ð+Ñ+Ø68€FÐ8Ð8Ð8Ñ8ðYð Yð Yð Yð Yñ Yô Yð Yð| /3Ø*,Ø Ø#Ø,.Ø,.Ø8<Ø"ð4'ð 4'ð 4'ð 4'ð 4'ð 4'ðl@ð @ð @ð @ð ðð ð ñ „Xðð ð
 &ð	Cð Cð Cð Cð Cñ „[ðCð@ð ð ð ð-ð -ð -ð -ð ØMQð ð ð ð ñ „\ðð& ;@ð ð ð ð ð ð ð$ <@ð  ð  ð  ð  ð  ð  ðD AEð Jð Jð Jð Jð Jð Jð2 ØØØðpð pð pð pð pð pðr !Ø8<Ø"ð!
ð !
ð !
ð !
ð !
ð !
ðN !Ø8<Ø"ðLð Lð Lð Lð Lð LðV !ð%Ið %Ið %Ið %Ið %Ið %Ið\ !Ø8<ðð ð ð ð ð ðN !Ø8<Ø"Ø ðeð eð eð eð eð eðNð ð ð ð"Ið Ið Ið Ið&I'ð I'ð I'ð I'ðVð ð ð ð2ð 2ð 2ð 2ð8 <@ð
ð 
ð 
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð8,3ð ,3ð ,3ð ,3ðn #ð(ð (ð (ð (ð (ð (ðb ðð ð ð ð ð ð ð r.   rœ   )Ú	metaclass)r#   r$   )r2   r3   )Br~   Ú
__future__r   r¬   rz  ry  rŠ  r=   r;   r™   r?   rï   r‚  r—   Úabcr   Úcollectionsr   r   Úcollections.abcr   Ú	itertoolsr   Úmarshmallowr	   r
   r   r   rQ  Úmarshmallow.decoratorsr   r   r   r   r   r   Úmarshmallow.error_storer   Úmarshmallow.exceptionsr   r   r   Úmarshmallow.orderedsetr   Úmarshmallow.utilsr   r   r   r   r   r   r   r   r    Úmarshmallow.warningsr!   ÚTYPE_CHECKINGÚmarshmallow.fieldsr"   r1   rB   r3   rƒ   Ú	SchemaABCrœ   Ú
BaseSchemar'   r.   r,   ú<module>rŸ     sú  ðØ |Ð |à "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø #Ð #Ð #Ð #Ð #Ð #Ø !Ð !Ð !Ð !Ð !Ð !à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð /Ð .Ð .Ð .Ð .Ð .Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ -Ð -Ð -Ð -Ð -Ð -ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð >Ð =Ð =Ð =Ð =Ð =à	Ôð )Ø(Ð(Ð(Ð(Ð(Ð(ð	ð 	ð 	ð 	ðð ð ð ð.zð zð zð zð z�ñ zô zð zðz-1ð -1ð -1ð -1ð -1ñ -1ô -1ð -1ð`Vð Vð Vð Vð VˆTŒ^ zð Vñ Vô Vð Vðr  €
€
€
r.   