Ë
    ¯ŒjÑË  ã                  óÌ  — 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jp                  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@ZAy)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)ÚFieldc                óŒ   — | j                  «       D ��cg c]#  \  }}t        |t        j                  «      r||f‘Œ% c}}S c c}}w )zKGet fields from a class

    :param attrs: Mapping of class attributes
    )Úitemsr   r	   ÚFieldABC)ÚattrsÚ
field_nameÚfield_values      ú\/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/marshmallow/schema.pyÚ_get_fieldsr*   2   sG   € ð (-§{¡{¤}ôá'4Ñ#ˆJ˜Ü" ;´·±Ô>ð 
�[Ò!Ø'4òð ùó s   ”(A Ú
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                  «      «      –— Œ& y­w)Ú_declared_fieldsN)r*   ÚgetattrÚ__dict__)Ú.0r	   s     r)   Ú	<genexpr>z%_get_fields_by_mro.<locals>.<genexpr>M   s2   è ø€ ð 	
ñ #�ô Ü˜Ð0°$·-±-Ó@÷ñ #ùs   ‚*,Nr   éÿÿÿÿ)ÚinspectÚgetmroÚ	functoolsÚreduceÚoperatorÚiadd)ÚklassÚmros     r)   Ú_get_fields_by_mror<   @   sL   € ô �.‰.˜Ó
€Cô ×ÑÜ�‰ñ	
ð ˜E˜Q˜r˜Eš
ó		
ð 	ó	ð 	ó    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 )r+   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]r.   c                ó  •— |j                  d«      }t        |dd«      }|sD|D ]=  }t        |d«      sŒt        |j                  d«      sŒ'|j                  j                  } n d}t        |«      }|D ]  \  }}	||= Œ
 t        ‰| �  | |||«      }
t        |
«      }|
j                  }|
j                  ||¬«      |
_
        |t        |
j                  j                  j                  «       «      z  }| j                  |
||t        ¬«      |
_        |
S )Nr@   ÚorderedF)rF   )r:   Ú
cls_fieldsÚinherited_fieldsÚdict_cls)Úgetr/   Úhasattrr@   rF   r*   ÚsuperÚ__new__r<   rC   rB   ÚlistÚincluder$   Úget_declared_fieldsÚdictr.   )ÚmcsÚnameÚbasesr&   ÚmetarF   Úbase_rG   r'   Ú_r:   rH   Ú	__class__s               €r)   rM   zSchemaMeta.__new__c   s  ø€ ð �y‰y˜Ó ˆÜ˜$ 	¨5Ó1ˆÙó
 �Ü˜5 &Õ)¬g°e·j±jÀ)Õ.LØ#Ÿj™j×0Ñ0�GÙð ð
  �Ü  Ó'ˆ
ó (‰MˆJ˜Ø�jÑ!ð (ä‘‘  T¨5°%Ó8ˆÜ-¨eÓ4Ðà�z‰zˆð ×(Ñ(¨°wÐ(Ó?ˆŒ
à”d˜5Ÿ:™:×-Ñ-×3Ñ3Ó5Ó6Ñ6ˆ
ð "%×!8Ñ!8ØØ!Ø-Üð	 "9ó "
ˆÔð ˆr=   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``.
        © )rR   r:   rG   rH   rI   s        r)   rP   zSchemaMeta.get_declared_fieldsŽ   s   € ñ$ Ð(¨:Ñ5Ó6Ð6r=   c                ó®   •— t         ‰| �  |||«       |r,| j                  j                  rt	        j                  || «       | j                  «       | _        y ©N)rL   Ú__init__rB   Úregisterr
   Úresolve_hooksÚ_hooks)ÚclsrS   rT   r&   rX   s       €r)   r]   zSchemaMeta.__init__¢   sC   ø€ Ü‰Ñ˜˜u eÔ,Ù�C—H‘H×%Ò%Ü×#Ñ# D¨#Ô.Ø×&Ñ&Ó(ˆ�
r=   c                ób  ‡— t        j                  | «      }t        t        «      }t	        | «      D ]]  Š|D ]  }	 |j
                  ‰   } n Œ	 |j                  }|j                  «       D ]"  \  }}||   j                  ˆfd„|D «       «       Œ$ Œ_ |S # t        $ r Y Œhw xY w# t        $ r Y Œ|w xY w)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–— Œ y ­wr\   rZ   )r1   ÚmanyÚkwargsÚ	attr_names      €r)   r2   z+SchemaMeta.resolve_hooks.<locals>.<genexpr>Í   s    øè ø€ ð &ÙFL±l°d¸F˜ D¨&Ô1Áfùs   ƒ)r4   r5   r   rN   Údirr0   ÚKeyErrorÚ__marshmallow_hook__r$   ÚextendÚAttributeError)	ra   r;   ÚhooksÚparentÚattrÚhook_configÚtagÚconfigrf   s	           @r)   r_   zSchemaMeta.resolve_hooks¨   sÏ   ø€ ô �n‰n˜SÓ!ˆä9DÄTÓ9Jˆä˜SžˆIó �ðØ!Ÿ?™?¨9Ñ5�Dñ ð ð ðà×-Ñ-ð ð $/×#4Ñ#4Ö#6‘K�C˜ð ˜#‘J×%Ñ%ó &ÙFLó&õ ñ $7ð1 "ð> ˆøô1  ò Ùðûô "ò Ùðús#   ºBÁB"Â	BÂBÂ"	B.Â-B.)rS   ÚstrrT   ztuple[type, ...]r&   zdict[str, typing.Any]Úreturnr+   )
r:   r+   rG   úlist[tuple[str, Field]]rH   rt   rI   ú
type[dict]rs   rD   )rs   ú'dict[str, list[tuple[str, bool, dict]]])Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rM   ÚclassmethodrQ   rP   r]   r_   Ú__classcell__)rX   s   @r)   r+   r+   W   s    ø… ñð ƒJØ
ÓØÓØ&Ó&ð)àð)ð  ð)ð %ð	)ð
 
õ)ðV ð  $ð7àð7ð ,ð7ð 2ð	7ð
 ð7ð 
ò7ó ð7ô&)÷)r=   c                  ó   — e Zd ZdZddd„Zy)Ú
SchemaOptsz/Defines defaults for `marshmallow.Schema.Meta`.c                óR  — 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«      r.t        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«      | _        y )Nr   rZ   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_modulerF   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_errorsTrO   Ú	load_onlyÚ	dump_onlyÚunknownr^   rd   F)r/   r   Ú
isinstancerN   ÚtupleÚ
ValueErrorr�   r‚   rƒ   r„   r…   rK   ÚwarningsÚwarnr!   ÚjsonrŠ   rF   r‹   rO   rŒ   r�   r    r   rŽ   r^   rd   )ÚselfrU   rF   rŠ   s       r)   r]   zSchemaOpts.__init__×   sÏ  € Ü˜d H¨bÓ1ˆŒÜ˜$Ÿ+™+¬¬e }Ô5ÜÐGÓHÐHÜ! $¨°bÓ9ˆŒÜ˜$Ÿ/™/¬D´%¨=Ô9ÜÐKÓLÐLØ�;Š;˜4Ÿ?š?ÜØXóð ô ˜t Y°Ó3ˆŒÜ˜$Ÿ,™,¬¬u¨Ô6ÜÐAÓBÐBÜ! $¨°dÓ;ˆŒÜ% dÐ,<¸dÓCˆÔÜ! $¨°dÓ;ˆŒÜ�4˜Ô'Ü�M‰MØ]Ü,Øõô
 $ D¨-¼Ó>‰Mä ˆMÜ$ T¨?¸MÓJˆÔÜ�4˜Ô#Ü�M‰Mð\ô -Øõô ˜t Y°Ó8ˆŒÜ# D¨.¸$Ó?ˆÔÜ˜t Y°Ó3ˆŒÜ   {°BÓ7ˆŒÜ   {°BÓ7ˆŒÜ7¼ÀÀiÔQVÓ8WÓXˆŒÜ  j°$Ó7ˆŒÜ˜D &¨%Ó0ˆ�	r=   N)F)rU   r?   rF   Úbool)rw   rx   ry   rz   r]   rZ   r=   r)   r   r   Ô   s
   „ Ù9õ*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j0                  ej2                  ej4                  ej6                  ej8                  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œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d=d„Z*d>d„Z+e,d?d„«       Z-e.ddœ	 	 	 	 	 d@d„«       Z/	 	 	 	 	 	 dAd„Z0dBd„Z1e2ddœd „«       Z3d!d"œdCd#„Z4dd"œdDd$„Z5dd"œdDd%„Z6d!de7dd&œ	 	 	 	 	 	 	 dEd'„Z8dddd(œ	 	 	 	 	 	 	 dFd)„Z9dddd(œ	 	 	 	 	 	 	 dGd*„Z:ddœ	 	 	 	 	 	 	 	 	 	 	 dHd+„Z;ddd,œ	 	 	 	 	 	 	 dId-„Z<dddd.d/œ	 	 	 	 	 	 	 	 	 dJd0„Z=dKd1„Z>dKd2„Z?dKd3„Z@dLd4„ZAdLd5„ZBdd6œ	 	 	 dMd7„ZC	 	 	 	 	 	 dNd8„ZDdOd9„ZEd!d:œ	 	 	 	 	 	 	 	 	 dPd;„ZFdd6œ	 	 	 	 	 dQd<„ZGy)RÚ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.)r?   rŽ   Ú_default_error_messagesr?   rC   rA   rB   rD   r.   rv   r`   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<   y)ú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.Meta):
                        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]]rO   r‚   ztyping.ClassVar[bool]rd   ztyping.ClassVar[str]rƒ   r„   r…   rA   rŠ   rF   r‹   rŒ   r�   rŽ   r^   N)rw   rx   ry   rz   r{   rZ   r=   r)   r@   r�   Z  s©   … ñ&	ðP =Ó<Ø<Ø@Ó@ð	ð 3Ó2ð	ð >Ó=ð	ð $Ó#ØOØ(Ó(ØIØ,Ó,ØQØ(Ó(ØIð "Ó!ð	ð 'Ó&Ø`Ø+Ó+ØeØ?Ó?Ø7Ø?Ó?Ø7Ø%Ó%ð	ð (Ó'ð	r=   r@   NrZ   )Úonlyr‚   rd   ÚcontextrŒ   r�   ÚpartialrŽ   c               ón  — |�t        |«      st        d«      ‚t        |«      st        d«      ‚t        j                  | j                  «      | _        |€| j                  j                  n|| _        || _        t        | j                  j                  «      t        |«      z  | _
        | j                  j                  | _        t        |«      xs t        | j                  j                  «      | _        t        |«      xs t        | j                  j                  «      | _        || _        |€| j                  j                  n
t!        |«      | _        |rt#        j$                  dt&        d¬«       |xs i | _        | j+                  «        i | _        i | _        i | _        | j3                  «        i }	|	j5                  | j6                  «       t9        | j:                  j<                  «      D ]  }
|	j5                  t?        |
di «      «       Œ  |	j5                  | j@                  xs i «       |	| _         y )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Údeepcopyr.   Údeclared_fieldsrB   rd   rž   Úsetr‚   rF   rŒ   r�   r    rŽ   r    r’   r“   r!   rŸ   Ú_normalize_nested_optionsr   Úload_fieldsÚdump_fieldsÚ_init_fieldsÚupdater›   ÚreversedrX   Ú__mro__r/   rš   )r•   rž   r‚   rd   rŸ   rŒ   r�   r    rŽ   Úmessagesra   s              r)   r]   zSchema.__init__µ  sÆ  € ð Ð¤M°$Ô$7Ü*Ð+OÓPÐPÜ˜WÔ%Ü*Ð+RÓSÐSä#Ÿ}™}¨T×-BÑ-BÓCˆÔØ&* l�D—I‘I—N’N¸ˆŒ	ØˆŒ	ÜHKØ�I‰I×ÑóI
ä�‹LñIˆŒð —y‘y×(Ñ(ˆŒÜ˜Y›ÒC¬3¨t¯y©y×/BÑ/BÓ+CˆŒÜ˜Y›ÒC¬3¨t¯y©y×/BÑ/BÓ+CˆŒØˆŒð ˆð �I‰I×Òä1°'Ó:ð 	Œñ
 Ü�M‰MðHä,Øõ	ð ’} "ˆŒØ×&Ñ&Ô(à(*ˆŒØ-/ˆÔØ-/ˆÔØ×ÑÔØˆØ�‰˜×4Ñ4Ô5Ü˜DŸN™N×2Ñ2Ö3ˆCØ�O‰OœG CÐ)9¸2Ó>Õ?ð 4à�‰˜×+Ñ+Ò1¨rÔ2Ø&ˆÕr=   c                óP   — d| j                   j                  › d| j                  › d�S )NÚ<z(many=z)>)rX   rw   rd   ©r•   s    r)   Ú__repr__zSchema.__repr__ë  s&   € Ø�4—>‘>×*Ñ*Ð+¨6°$·)±)°¸BÐ?Ð?r=   c                ó2   — | j                   rt        S t        S )z'`dict` type to return when serializing.)rF   r   rQ   r°   s    r)   Ú
dict_classzSchema.dict_classî  s   € ð �<Š<ÜÐÜˆr=   ÚGeneratedSchema)rS   c               ó„   — t        dt        | dt        «      fddi«      }t        || fi |j                  «       ¥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
        ÚGeneratedMetar@   r^   F)r?   r/   Úobjectr¢   )ra   r   rS   r@   s       r)   Ú	from_dictzSchema.from_dictõ  sL   € ô4 Øœg c¨6´6Ó:Ð<¸zÈ5Ð>Qó
ˆô �D˜3˜&Ð"A V§[¡[£]Ð"A°F¸DÑ"AÓBÐBr=   c                ó   — y)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.
        NrZ   )r•   ÚerrorÚdatard   re   s        r)   Úhandle_errorzSchema.handle_error  s   � r=   c                ó   — 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•   Úobjrn   Údefaults       r)   Úget_attributezSchema.get_attribute$  s   € ô ˜˜d GÓ,Ð,r=   ©Úindexc               ó¨   — 	  | |«      }|S # t         $ r<}|j                  |j                  ||¬«       |j                  xs t        cY d}~S d}~ww xY w)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.  sV   € ð	/Ù Ó%ˆEð ˆøô ò 	/Ø×#Ñ# E§N¡N°JÀeÐ#ÔLð ×#Ñ#Ò.¤wÕ.ûð		/ús   ‚ Œ	A•1AÁAÁAF©rd   c               óJ  — |r#|�!|D �cg c]  }| j                  |d¬«      ‘Œ c}S | j                  «       }| j                  j                  «       D ]K  \  }}|j	                  ||| j
                  ¬«      }|t        u rŒ-|j                  �|j                  n|}|||<   ŒM |S c c}w )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
        FrÊ   )Úaccessor)Ú
_serializer³   r¨   r$   Ú	serializerÀ   r   Údata_key)	r•   r¾   rd   ÚdÚretrf   Ú	field_objrÈ   Úkeys	            r)   rÍ   zSchema._serializeB  s­   € ñ �C�OÙ<?Ó@¹C°q�D—O‘O A¨E�OÕ2¸CÑ@Ð@Ø�o‰oÓˆØ$(×$4Ñ$4×$:Ñ$:Ö$<Ñ ˆI�yØ×'Ñ'¨	°3À×ASÑASÐ'ÓTˆEØœÑØØ(1×(:Ñ(:Ð(F�)×$Ò$ÈIˆCØˆC�ŠHð %=ð ˆ
ùò As   ‰B c               ó  — |€| j                   n
t        |«      }| j                  t           r| j	                  t        |||¬«      }n|}| j                  ||¬«      }| j                  t           r| j	                  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.
        )rd   Úoriginal_datarÊ   )rd   r–   r`   r   Ú_invoke_dump_processorsrÍ   r   )r•   r¾   rd   Úprocessed_objÚresults        r)   ÚdumpzSchema.dumpT  s‹   € ð" !˜Lˆt�yŠy¬d°4«jˆØ�;‰;”xÒ Ø ×8Ñ8Ü˜# D¸ð 9ó ‰Mð  ˆMà—‘ °T�Ó:ˆà�;‰;”yÒ!Ø×1Ñ1Ü˜6¨¸Cð 2ó ˆFð ˆr=   c               ó|   — | j                  ||¬«      } | j                  j                  j                  |g|¢­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Ù   rB   rŠ   Údumps)r•   r¾   rd   Úargsre   Ú
serializeds         r)   rÛ   zSchema.dumpsv  s=   € ð —Y‘Y˜s¨�YÓ.ˆ
Ø,ˆt�y‰y×&Ñ&×,Ñ,¨ZÐI¸$ÒIÀ&ÑIÐIr=   )rd   r    rŽ   rÂ   c               ó  ‡— | j                   j                  }|r|nd}|r|t        ‰«      s%|j                  | j                  d   g|¬«       g }|S t        ‰«      D �	�
cg c]4  \  }	}
| j                  t        j                  t        |
«      |d|||	¬«      ‘Œ6 }}	}
|S | j                  «       }t        ‰t        «      s#|j                  | j                  d   g|¬«       |S t        |«      }| j                  j                  «       D ]Ò  \  }}|j                  �|j                  n|}‰j!                  |t"        «      }|t"        u r|du s|r||v rŒIi }|r:|dz   }t%        |«      }|D �cg c]  }|j'                  |«      sŒ||d ‘Œ }}||d<   n|�||d<   |||fˆfd	„	}| j)                  |||||¬
«      }|t"        usŒ¶|j*                  xs |}t-        |||«       ŒÔ |t.        k7  rš| j                  j                  «       D ��ch c]  \  }}|j                  �|j                  n|’Œ! }}}t1        ‰«      |z
  D ]E  }‰|   }|t2        k(  r|||<   Œ|t4        k(  sŒ!|j                  | j                  d   g||r|nd«       ŒG |S c c}
}	w c c}w c c}}w )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`.
        Nr?   rÁ   F)rÇ   rd   r    rŽ   rÂ   TÚ.r    c                ó.   •—  |j                   | |‰fi |¤ŽS r\   )Údeserialize)ÚvalrÒ   r'   Úd_kwargsr»   s       €r)   Úgetterz#Schema._deserialize.<locals>.getterÔ  s-   ø€ ð 1˜9×0Ñ0ØØ"Øñð #ñ	ð r=   ©rÆ   r»   r'   rÇ   rÂ   rŽ   )rB   r‹   r   rÄ   rš   Ú	enumerateÚ_deserializeÚtypingÚcastrQ   r³   r�   r   r§   r$   rÏ   rJ   r   ÚlenÚ
startswithrÉ   Ú	attributer   r   r¥   r   r   )r•   r»   rÇ   rd   r    rŽ   rÂ   r‹   Úret_lÚidxrÐ   Úret_dÚpartial_is_collectionrf   rÒ   r'   Ú	raw_valuerã   ÚprefixÚ
len_prefixÚfÚsub_partialrä   rÈ   rÓ   r   s    `                        r)   rç   zSchema._deserialize‡  sú  ø€ ð: —y‘y×-Ñ-ˆÙ%‘¨4ˆÙÜ  Ô&Ø×'Ñ'¨×)<Ñ)<¸VÑ)DÐ(EÈUÐ'ÔSØ�ð ˆLô #,¨D¤/ô
ñ #2™˜˜Qð ×%Ñ%ÜŸ™¤D¨!Ó,Ø$/Ø"Ø 'Ø 'Ø!ð &õ ð #2ð ñ 
ð ˆLØ—‘Ó!ˆä˜$¤Ô(Ø×#Ñ# T×%8Ñ%8¸Ñ%@Ð$AÈÐ#ÔOðz ˆôw %2°'Ó$:Ð!Ø(,×(8Ñ(8×(>Ñ(>Ö(@Ñ$�	˜9à*3×*<Ñ*<Ð*H�I×&Ò&Èið ð !ŸH™H Z´Ó9�	Ø¤Ñ'à $‘Ù-°)¸wÑ2Fà Ø�á(Ø'¨#Ñ-�FÜ!$ V£�Já07ó#Ù07¨1¸1¿<¹<ÈÕ;O˜˜*˜+š°ð  ð #ð +6�H˜YÒ'ØÐ(Ø*1�H˜YÑ'ð $-¸Èhõð ×,Ñ,Ø &Ø"Ø)Ø +Øð -ó �ð ¤Ò'Ø#×-Ñ-Ò:°�CÜ˜e S¨%Õ0ðU )AðV œ'Ò!ð 26×1AÑ1A×1GÑ1GÔ1Iôá1IÑ-˜
 Ið +4×*<Ñ*<Ð*H�I×&Ò&ÈjÑXØ1Ið ñ ô ˜t›9 vÔ-�CØ  ™I�EØ¤'Ò)Ø%*˜˜cš
Ø ¤EÓ)Ø#×/Ñ/Ø!×0Ñ0°Ñ;Ð<ØÙ&2™U¸õð .ð ˆùóY
ùòD#ùó8s   Á9I>Å%JÅ<JÇ?$J	©rd   r    rŽ   c               ó.   — | j                  ||||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©rd   r    rŽ   Úpostprocess)Ú_do_load)r•   r»   rd   r    rŽ   s        r)   ÚloadzSchema.loadù  s%   € ð> �}‰}Ø�t W°gÈ4ð ó 
ð 	
r=   c               óz   —  | j                   j                  j                  |fi |¤Ž}| j                  ||||¬«      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ö   )rB   rŠ   Úloadsrû   )r•   Ú	json_datard   r    rŽ   re   r»   s          r)   rý   zSchema.loads  s<   € ð< -ˆt�y‰y×&Ñ&×,Ñ,¨YÑA¸&ÑAˆØ�y‰y˜ D°'À7ˆyÓKÐKr=   c               ó–  — 	 |r |||||¬«       y  ||||¬«       y # t         $ r¢}	|	j                  }
|
t        k(  rt        }n^d }	 | j                  |
   }n,# t        $ r  |
| j
                  v r| j
                  |
   }Y nw xY w|r|j                  �|j                  n|
}n|
}|j                  |	j                  ||¬«       Y d }	~	y d }	~	ww xY w)N)r    rd   rÁ   )	r   r'   r   r   rh   r¤   rÏ   rÄ   r­   )r•   Úvalidator_funcÚoutputrÕ   rÇ   rd   r    Úpass_originalrÂ   Úerrr'   rÏ   rÒ   s                r)   Ú_run_validatorzSchema._run_validator=  sß   € ð	IÙÙ˜v }¸gÈDÖQá˜v¨w¸TÖBøÜò 	IØŸ™ˆJàœVÒ#Ü!‘à*.�	ðEØ $§¡¨JÑ 7‘IøÜò EØ! T×%9Ñ%9Ñ9Ø$(×$8Ñ$8¸Ñ$D˜	ùðEúñ ð %×-Ñ-Ð9ð "×*Ò*à'ñ ð  *�HØ×#Ñ# C§L¡L°(À%Ð#×HÑHûð)	Iús=   ‚ ‘ �	C¦CÁAÁCÁ&A>Á;CÁ=A>Á>A CÃC©rd   r    c               óÎ   — 	 | j                  |||d¬«       i S # t        $ rB}t        j                  t        t
        t        t
           f   |j                  «      cY d}~S d}~ww xY w)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)rd   r    rù   N)rú   r   rè   ré   rQ   rr   rN   r­   )r•   r»   rd   r    Úexcs        r)   ÚvalidatezSchema.validated  sY   € ð0	CØ�M‰M˜$ T°7ÈˆMÔNð ˆ	øô ò 	CÜ—;‘;œt¤C¬¬c© NÑ3°S·\±\ÓBÕBûð	Cús   ‚ ™	A$¢7AÁA$ÁA$Trø   c          	     óp  — t        «       }i }|€| j                  n
t        |«      }|€| j                  n
t	        |«      }|€| j
                  }| j                  t           r	 | j                  t        ||||¬«      }n|}|sÀ| j                  ||||¬«      }
| j                  ||
|¬«       | j                  t           rEt        |j                  «      }| j                  |d|
||||¬«       | j                  |d|
||||¬«       |j                  }|s0|r.| j                  t            r	 | j                  t         |
|||¬«      }
|r%t        ||
¬«      }| j#                  ||||¬	«       |‚
S # t        $ r}	|	j                  «       }d}
Y d}	~	�Œd}	~	ww xY w# t        $ r}	|	j                  «       }Y d}	~	Œpd}	~	ww xY w)
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)rd   rÕ   r    )rÇ   rd   r    rŽ   )rÇ   r»   rd   T)rÇ   Ú	pass_manyr»   rÕ   rd   r    Úfield_errorsF)r»   rÅ   r  )r   rd   r–   rŽ   r    r    r`   r   Ú_invoke_load_processorsr   Únormalized_messagesrç   Ú_invoke_field_validatorsr   ÚerrorsÚ_invoke_schema_validatorsr   r¼   )r•   r»   rd   r    rŽ   rù   rÇ   r  Úprocessed_datar  rØ   r  r  s                r)   rú   zSchema._do_load„  sü  € ô8 !“lˆØ')ˆØ ˜Lˆt�yŠy¬d°4«jˆð ˆð �LŠLä1°'Ó:ð 	ð
 ˆ?Ø—l‘lˆGà�;‰;”xÒ ð2Ø!%×!=Ñ!=Ü˜d¨¸TÈ7ð ">ó "‘ð "ˆNÙà×&Ñ&ØØ'ØØØð 'ó ˆFð ×)Ñ)Ø'¨f¸4ð *ô ð �{‰{Ô+Ò,Ü# K×$6Ñ$6Ó7�Ø×.Ñ.Ø +Ø"ØØ"&ØØ#Ø!-ð /ô ð ×.Ñ.Ø +Ø#ØØ"&ØØ#Ø!-ð /ô ð !×'Ñ'ˆFá™k¨d¯k©k¼)Ò.Dð	7Ø!×9Ñ9Ü!ØØ!Ø&*Ø 'ð :ó �Fñ Ü! &¨tÀÔGˆCØ×Ñ˜c 4¨d¸GÐÔDØˆIàˆøôs #ò 2Ø×0Ñ0Ó2�Ø-1–ûð2ûôd 'ò 7Ø ×4Ñ4Ó6•Fûð7ús0   Á!E) Ä&F Å)	FÅ2F
Æ
FÆ	F5ÆF0Æ0F5c           	     ó¦  — | j                   �^| j                  d| j                   d«       | j                  | j                   D �cg c]  }|j                  dd«      d   ‘Œ c}«      | _         | j                  rQ| j                  d| j                  d«       | j                  | j                  D �cg c]	  }d|vsŒ|‘Œ c}«      | _        yyc c}w c c}w )	zVApply then flatten nested schema options.
        This method is private API.
        Nrž   Úintersectionrß   é   r   r‚   Úunion)rž   Ú_Schema__apply_nested_optionÚ	set_classÚsplitr‚   )r•   Úfields     r)   r¦   z Schema._normalize_nested_optionsë  s²   € ð �9‰9Ð à×&Ñ& v¨t¯y©y¸.ÔIàŸ™ÈDÏIÊIÓ'VÉIÀ5¨¯©°C¸Ó(;¸AÓ(>ÈIÑ'VÓWˆDŒIØ�<Š<à×&Ñ& y°$·,±,ÀÔHàŸ>™>Ø$(§L¢LÓE¡L˜5°C¸uÒ4D’ LÑEóˆD�Lð	 ùò (Wùò Fs   ÁC	Â-	CÂ7Cc                óä  — |D �cg c]  }d|v sŒ|j                  dd«      ‘Œ }}t        t        «      }|D ]  \  }}||   j                  |«       Œ t	        |j                  «       «      D ]~  \  }	}
| j                  |
«      }t        | j                  |	   |d«      }|r2|dk(  r|| j                  |«      z  }|dk(  r|| j                  |«      z  }t        | j                  |	   ||«       Œ€ yc c}w )z%Apply nested options to nested fieldsrß   r  rZ   r  r  N)
r  r   rN   ÚappendÚiterr$   r  r/   r¤   Úsetattr)r•   Úoption_nameÚfield_namesÚset_operationrS   Únested_fieldsÚnested_optionsrm   Únested_namesrÓ   ÚoptionsÚnew_optionsÚoriginal_optionss                r)   Ú__apply_nested_optionzSchema.__apply_nested_optionü  sô   € ñ 9DÓS¹°ÀsÈdÂ{˜Ÿ™ C¨Õ+¸ˆÐSä$¤TÓ*ˆÛ$1Ñ ˆF�LØ˜6Ñ"×)Ñ)¨,Õ7ð %2ô ! ×!5Ñ!5Ó!7Ö8‰LˆC�ØŸ.™.¨Ó1ˆKÜ& t×';Ñ';¸CÑ'@À+ÈrÓRÐÙØ  GÒ+Ø 4§>¡>Ð2BÓ#CÑC�KØ  NÒ2Ø 4§>¡>Ð2BÓ#CÑC�KÜ�D×(Ñ(¨Ñ-¨{¸KÕHñ 9ùò Ts
   …	C-�C-c                óX  — | j                   j                  r&| j                  | j                   j                  «      }ng| j                  | j                  j	                  «       «      }| j                   j
                  r(|| j                  | j                   j
                  «      z  }| j                  «       }| j                  �$| j                  | j                  «      }|||z
  z  }n|}| j                  r!|| j                  z
  }|| j                  |z
  z  }|rd| › d|› d�}t        |«      ‚| j                  «       }|D ]G  }| j                  j                  |t        j                  «       «      }| j                  ||«       |||<   ŒI | j                  «       | j                  «       }	}|j                  «       D ](  \  }}|j                  s|||<   |j                   rŒ$||	|<   Œ* |	j                  «       D �
�cg c]  \  }
}|j"                  �|j"                  n|
‘Œ! }}
}t%        |«      t%        t'        |«      «      k7  r;|D �ch c]  }|j)                  |«      dkD  sŒ|’Œ }}t        dt+        |«      › �«      ‚|j                  «       D �
�cg c]  \  }
}|j,                  xs |
‘Œ }}
}t%        |«      t%        t'        |«      «      k7  r;|D �ch c]  }|j)                  |«      dkD  sŒ|’Œ }}t        dt+        |«      › �«      ‚|| _        |	| _        || _        yc c}}
w c c}w c c}}
w c c}w )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ß   r  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: 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: )rB   r   r  r¤   Úkeysr�   rž   r‚   r‘   r³   rJ   Ú	ma_fieldsÚInferredÚ_bind_fieldr$   r�   rŒ   rÏ   rê   r¥   ÚcountrN   rì   r¨   r§   )r•   Úavailable_field_namesÚinvalid_fieldsr  ÚmessageÚfields_dictr'   rÒ   r§   r¨   rS   Údump_data_keysÚxÚdata_keys_duplicatesr¾   Úload_attributesÚattributes_duplicatess                    r)   r©   zSchema._init_fields  s*  € ð �9‰9×ÒØ$(§N¡N°4·9±9×3CÑ3CÓ$DÑ!à$(§N¡N°4×3GÑ3G×3LÑ3LÓ3NÓ$OÐ!Ø�y‰y×#Ò#Ø%¨¯©¸¿	¹	×8LÑ8LÓ)MÑMÐ%àŸ™Ó)ˆà�9‰9Ð à:>¿.¹.ÈÏÉÓ:SˆKà˜kÐ,AÑAÑA‰Nà/ˆKð �<Š<ð &¨¯©Ñ4ˆKØ˜dŸl™lÐ-BÑBÑBˆNáØ+¨D¨6°°NÐ3CÀ1ÐEˆGÜ˜WÓ%Ð%à—o‘oÓ'ˆÛ%ˆJØ×,Ñ,×0Ñ0°¼Y×=OÑ=OÓ=QÓRˆIØ×Ñ˜Z¨Ô3Ø&/ˆK˜
Ò#ð &ð
 $(§?¡?Ó#4°d·o±oÓ6G�[ˆØ%0×%6Ñ%6Ö%8Ñ!ˆJ˜	Ø×&Ò&Ø*3�˜JÑ'Ø×&Ó&Ø*3�˜JÒ'ð	 &9ð $/×#4Ñ#4Ô#6ô
á#6‘��ið #,×"4Ñ"4Ð"@ˆI×ÒÀdÑJØ#6ð 	ñ 
ô ˆ~Ó¤#¤c¨.Ó&9Ó":Ò:á)ó$Ù)�a¨^×-AÑ-AÀ!Ó-DÀqÓ-H’˜>ð !ð $ô ð'ô (,Ð,@Ó'AÐ&BðDóð ð CN×BSÑBSÔBUÔVÑBU±Y°T¸3˜3Ÿ=™=Ò0¨DÑ0ÐBUˆÑVÜˆÓ¤3¤s¨?Ó';Ó#<Ò<á*ó%Ù*�a¨o×.CÑ.CÀAÓ.FÈÓ.J’˜?ð "ð %ô ð(ô )-Ð-BÓ(CÐ'DðFóð ð "ˆŒØ&ˆÔØ&ˆÕùó9
ùò
$ùó Wùò%s$   Ç3$LÈ>LÉLÊL!Ë	L'Ë#L'c                 ó   — y)zqHook to modify a field when it is bound to the `Schema <marshmallow.Schema>`.

        No-op by default.
        NrZ   )r•   r'   rÒ   s      r)   Úon_bind_fieldzSchema.on_bind_fieldZ  s   € ð
 	r=   c                óX  — || j                   v rd|_         || j                  v rd|_        	 |j                  || «       | j                  ||«       y# t        $ rO}t	        |t
        «      r9t        |t        j                  «      rd|› d|j                  › d�}t        |«      |‚‚ d}~ww xY w)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�   r?   Ú
issubclassr	   r%   rw   r8  )r•   r'   rÒ   rº   Úmsgs        r)   r,  zSchema._bind_fielda  s´   € ð ˜Ÿ™Ñ'Ø"&ˆIÔØ˜Ÿ™Ñ'Ø"&ˆIÔð	Ø×%Ñ% j°$Ô7ð 	×Ñ˜: yÕ1øô ò 	ô ˜)¤TÔ*¬z¸)ÄTÇ]Á]Ô/Sà! * ð .,à,5×,>Ñ,>Ð+?¸tðEð ô
   “n¨%Ð/Øûð	ús   ¬A Á	B)ÁA
B$Â$B))rÕ   c               óZ   — | j                  |d|||¬«      }| j                  |d|||¬«      S )NF)r
  r»   rd   rÕ   T©Ú_invoke_processors)r•   rp   r»   rd   rÕ   s        r)   rÖ   zSchema._invoke_dump_processors|  sI   € ð ×&Ñ&Ø˜5 t°$Àmð 'ó 
ˆð ×&Ñ&Ø˜4 d°À]ð 'ó 
ð 	
r=   c               ó^   — | j                  |d||||¬«      }| j                  |d||||¬«      S )NT)r
  r»   rd   rÕ   r    Fr?  )r•   rp   r»   rd   rÕ   r    s         r)   r  zSchema._invoke_load_processors‰  sW   € ð ×&Ñ&ØØØØØ'Øð 'ó 
ˆð ×&Ñ&ØØØØØ'Øð 'ó 
ð 	
r=   c          	     óÈ  — | j                   t           D ]ø  \  }}}t        | |«      }|d   }	 | j                  |   }	|	j                  �|	j                  n|}|rqt        |«      D ]b  \  }}	 ||	j                  xs |   }| j                  ||||| j                  j                  r|nd ¬«      }|t        u sŒQ|j                  |d «       Œd Œµ	 ||	j                  xs |   }| j                  ||||¬«      }|t        u sŒç|j                  |d «       Œú y # t        $ r)}
|| j
                  v rY d }
~
�Œt        d|› d�«      |
‚d }
~
ww xY w# t        $ r Y Œíw xY w# t        $ r Y �ŒLw xY w)Nr'   Ú"z" field does not exist.rå   )rÆ   r»   r'   rÇ   )r`   r   r/   r   rh   r¤   r‘   rÏ   ræ   rì   rÉ   rB   r‹   r   Úpop)r•   rÇ   r»   rd   rf   rW   Úvalidator_kwargsÚ	validatorr'   rÒ   rº   rÏ   rî   ÚitemrÈ   Úvalidated_values                   r)   r  zSchema._invoke_field_validators¥  sš  € Ø.2¯k©k¼)Ô.DÑ*ˆI�qÐ*Ü  iÓ0ˆIØ)¨,Ñ7ˆJðUØ ŸK™K¨
Ñ3�	ð '0×&8Ñ&8Ð&D�	×"Ò"È*ð ñ Ü!*¨4¦‘I�C˜ð7Ø $ Y×%8Ñ%8Ò%F¸JÑ G˜ð +/×*>Ñ*>Ø(1Ø!&Ø'/Ø(3Ø*.¯)©)×*@Ò*@¡3Àdð +?ó +˜ð +¬gÒ5Ø ŸH™H Z°Õ6ñ "1ð 3Ø  ×!4Ñ!4Ò!B¸
ÑC�Eð '+×&:Ñ&:Ø$-Ø"Ø#+Ø$/ð	 ';ó '�Oð '¬'Ò1ØŸ™ ¨TÕ2ñW /Eøô ò UØ ×!5Ñ!5Ñ5ÝÜ  1 Z LÐ0GÐ!HÓIÈuÐTûðUûô $ò Ùðûô  ò ÚðúsA   ­DÁ*EÃ
EÄ	EÄD=Ä-D=Ä=EÅ	EÅEÅ	E!Å E!)r  c               ó@  — | j                   t           D ]ˆ  \  }}	}
|	|k7  rŒt        | |«      }|r|
d   rŒ!|
j                  dd«      }|r<|s:t	        t        ||«      «      D ]!  \  }\  }}| j                  ||||||||¬«       Œ# Œq| j                  |||||||¬«       ŒŠ y )NÚskip_on_field_errorsr  F)rÕ   rÇ   rd   r    rÂ   r  )rÕ   rÇ   rd   r  r    )r`   r   r/   rJ   ræ   Úzipr  )r•   rÇ   r
  r»   rÕ   rd   r    r  rf   Ú	hook_manyrE  rF  r  rî   rG  Úorigs                   r)   r  z Schema._invoke_schema_validatorsÓ  sÓ   € ð 7;·k±kÔBRÔ6SÑ2ˆI�yÐ"2Ø˜IÒ%ØÜ  iÓ0ˆIÙÐ 0Ð1GÒ HØØ,×0Ñ0°À%ÓHˆMá™IÜ)2´3°t¸]Ó3KÖ)LÑ%�C™˜$ Ø×'Ñ'Ø!ØØ&*Ø$/Ø!Ø 'Ø!Ø&3ð (õ 	ñ *Mð ×#Ñ#ØØØ"/Ø +ØØ"/Ø#ð $õ ñ+ 7Tr=   c          
     óX  — | j                   |   D ]Œ  \  }}}	||k7  rŒt        | |«      }
|	j                  dd«      }|rF|sD|r)t        ||«      D ��cg c]  \  }} |
||fd|i|¤Ž‘Œ }}}ŒZ|D �cg c]  } |
|fd|i|¤Ž‘Œ }}Œs|r |
||fd|i|¤Ž}Œ‚ |
|fd|i|¤Ž}ŒŽ |S c c}}w c c}w )Nr  Frd   )r`   r/   rJ   r   )r•   rp   r
  r»   rd   rÕ   re   rf   rL  Úprocessor_kwargsÚ	processorr  rG  Úoriginals                 r)   r@  zSchema._invoke_processorsý  sõ   € ð 7;·k±kÀ#Ô6FÑ2ˆI�yÐ"2Ø˜IÒ%Øä  iÓ0ˆIØ,×0Ñ0°À%ÓHˆMá™IÙ ô /:¸$ÀÔ.Nôá.N™N˜D (ñ " $¨ÑF°tÐF¸vÓFØ.Nð ò ñ
 NRÓRÉTÀT™I dÑ@°Ð@¸Ó@ÈT�DÑRÙÙ   }ÑJ¸4ÐJÀ6ÑJ‘á  Ñ;¨DÐ;°FÑ;‘ð% 7Gð& ˆùóùò
 Ss   ÁB!Á.B')rž   ztypes.StrSequenceOrSet | Noner‚   útypes.StrSequenceOrSetrd   úbool | NonerŸ   zdict | NonerŒ   rR  r�   rR  r    ú$bool | types.StrSequenceOrSet | NonerŽ   ú
str | None)rs   rr   )rs   ru   )r   rD   rS   rr   rs   ztype[Schema])rº   r   r»   rA   rd   r–   )r¾   rA   rn   rr   r¿   rA   )r¾   rA   rd   r–   )r¾   rA   rd   rS  )r»   úRtyping.Mapping[str, typing.Any] | typing.Iterable[typing.Mapping[str, typing.Any]]rÇ   r   rd   r–   rs   ztyping.Any | list[typing.Any])r»   rV  rd   rS  r    rT  rŽ   rU  )rþ   zstr | bytes | bytearrayrd   rS  r    rT  rŽ   rU  )r   ztypes.SchemaValidatorrÇ   r   rd   r–   r    rT  r  r–   rÂ   z
int | None)r»   rV  rd   rS  r    rT  rs   zdict[str, list[str]])
r»   rV  rd   rS  r    rT  rŽ   rU  rù   r–   )rs   ÚNone)r'   rr   rÒ   r"   rs   rW  )rp   rr   rd   r–   )rp   rr   rd   r–   r    rT  )rÇ   r   rd   r–   )
rÇ   r   r
  r–   rd   r–   r    rT  r  r–   )rp   rr   r
  r–   rd   r–   )Hrw   rx   ry   rz   rr   r*  ÚStringÚbytesÚdtÚdatetimeÚDateTimeÚfloatÚFloatr–   ÚBooleanr�   ÚRawrN   r¥   ÚintÚIntegerÚuuidÚUUIDÚtimeÚTimeÚdateÚDateÚ	timedeltaÚ	TimeDeltaÚdecimalÚDecimalr™   r{   rš   r›   r   rC   r   r  r.   r`   r@   r]   r±   Úpropertyr³   r|   r¸   r¼   rÀ   ÚstaticmethodrÉ   rÍ   rÙ   rÛ   r   rç   rû   rý   r  r  rú   r¦   r  r©   r8  r,  rÖ   r  r  r  r@  rZ   r=   r)   r˜   r˜     s„  … ñ2ðj 	ˆY×ÑØˆy×ÑØ
�‰�Y×'Ñ'Øˆy�‰Øˆi×ÑØˆy�}‰}Øˆi�m‰mØˆY�]‰]ØˆY×ÑØ�	‰	�9—>‘>Ø
�‰�—‘Ø
�‰�—‘Ø
�‰�i×)Ñ)Ø�‰˜×*Ñ*ð-€LÐ)ó ð" &(€N�NÓ'ð &Ø#ñ/Ð˜^ó ð
 %€M�4Ó$à€Ið ÓØ)+ÐÐ&Ó+Ø68€FÐ3Ó8÷Yñ Yð| /3Ø*,Ø Ø#Ø,.Ø,.Ø8<Ø"ñ4'ð ,ð4'ð (ð	4'ð
 ð4'ð ð4'ð *ð4'ð *ð4'ð 6ð4'ð ó4'ól@ð òó ðð ð
 &ñ	Cà ðCð ð	Cð
 
òCó ðCð@Ø$ðØ,6ðØAEóó-ð ØMQó ó ðð& ;@õ ð$ <@õ  ðD AEõ Jð2 ØØØñpð?ðpð  ðpð ðpð 
'ópðr !Ø8<Ø"ñ!
ð?ð!
ð ð!
ð 6ð!
ð ó!
ðN !Ø8<Ø"ñLà*ðLð ð	Lð
 6ðLð óLðV !ñ%Ià-ð%Ið  ð%Ið ð%Ið 6ð%Ið ð%Ið ó%Ið\ !Ø8<ñð?ðð ðð 6ðð 
óðN !Ø8<Ø"Ø ñeð?ðeð ðeð 6ðeð ðeð óeóNó"Ió&I'óVó2ð8 <@ñ
Øð
Ø'+ó
ð
àð
ð
 ð
ð 6ó
ó8,3ðn #ñ(ð  ð(ð ð	(ð ð(ð 6ð(ð ó(ðb ñàðð ð	ð ôr=   r˜   )Ú	metaclass)rs   rt   )r:   r+   )Brz   Ú
__future__r   r¢   r[  rZ  rk  r6   r4   r”   r8   rè   rc  r’   Úabcr   Úcollectionsr   r   Úcollections.abcr   Ú	itertoolsr   Úmarshmallowr	   r
   r   r   r*  Ú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"   r*   r<   r+   r   Ú	SchemaABCr˜   Ú
BaseSchemarZ   r=   r)   Ú<module>r€     s¶   ðÙ |å "ã Û Û Û Û Û Û Û Û Û Ý ß 0Ý #Ý !ç 3Ñ 3Ý +÷÷ õ /ß TÑ TÝ -÷
÷ 
õ 
õ >à	×ÒÝ(ó	óô.z�ô z÷z-1ñ -1ô`VˆT�^‰^ zõ Vðr  �
r=   