Ë
    r™ãj8Z  ã                  óÔ  — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 dd	lm
Z
 dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! dd lm"Z" dd!lm#Z# dd"lm$Z$ dd#lm%Z% dd$l&m'Z' dd%l&m(Z( dd&l&m)Z) dd'l&m*Z* dd(l+m,Z, dd)l+m-Z- dd*l+m.Z. erNdd+lm/Z/ dd,l0m1Z1 dd-lm2Z2 dd.lm3Z3 dd/l4m5Z5 dd0l4m6Z6 dd1l7m8Z8 dd2lm9Z9 dd3l:m;Z; dd4l%m<Z< dd5l=m>Z> dd6l?m@Z@ dd7l?mAZA  ed8e¬9«      ZB G d:„ d;eeB   «      ZC G d<„ d=ejˆ                  ejŠ                  «      ZFe$jŽ                  ej�                  j“                  d>¬?«       G d@„ dAej”                  e$j–                  «      «       «       ZL G dB„ dC«      ZM G dD„ dEeeB   «      ZN G dF„ dGeNeB   «      ZOyH)IzèWrite-only collection API.

This is an alternate mapped attribute style that only supports single-item
collection mutation operations.   To read the collection, a select()
object must be executed each time.

.. versionadded:: 2.0


é    )Úannotations)ÚAny)Ú
Collection)ÚDict)ÚGeneric)ÚIterable)ÚIterator)ÚList)ÚLiteral)ÚNoReturn)ÚOptional)Úoverload)ÚTuple)ÚType)ÚTYPE_CHECKING)ÚTypeVar)ÚUnion)Ú	bindparamé   )Ú
attributes)Ú
interfaces)Úrelationships)Ú
strategies)Ú
ATTR_EMPTY)ÚDONT_SET)Ú	NEVER_SET)Úobject_mapper)ÚPassiveFlag)ÚRelationshipDirectioné   )Úexc)Úinspect)Úlog)Úutil)Údelete)Úinsert)Úselect)Úupdate)ÚDelete)ÚInsert)ÚUpdate)ÚQueryableAttribute)Ú_InstanceDict)ÚAttributeEventToken)ÚLoaderCallableStatus)Ú_AdaptedCollectionProtocol)ÚCollectionAdapter)ÚMapper)Ú_RelationshipOrderByArg)ÚInstanceState)ÚAliasedClass)Ú	_Dispatch)Ú
FromClause)ÚSelectÚ_T)Úboundc                  óœ   — e Zd ZU dZded<   ded<   ded<   ded<   	 d	 	 	 	 	 	 	 	 	 dd	„Zedd
„«       Zedd„«       Zdd„Z	dd„Z
dd„Zdd„Zy)ÚWriteOnlyHistoryzDOverrides AttributeHistory to receive append/remove events directly.zutil.OrderedIdentitySetÚunchanged_itemsÚadded_itemsÚdeleted_itemsÚboolÚ_reconcile_collectionNc                ó”  — |rt|t         j                  z  rt        j                  d|› d|› d�«      ‚|j                  | _        |j
                  | _        |j                  | _        |j                  | _        y t        j                  «       | _        t        j                  «       | _        t        j                  «       | _        d| _        y )Nz
Attribute z¬ can't load the existing state from the database for this operation; full iteration is not permitted.  If this is a delete operation, configure passive_deletes=True on the z- relationship in order to resolve this error.F)
r   ÚSQL_OKr!   ÚInvalidRequestErrorr=   r>   r?   rA   r$   ÚOrderedIdentitySet)ÚselfÚattrÚstateÚpassiveÚapply_tos        úc/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/sqlalchemy/orm/writeonly.pyÚ__init__zWriteOnlyHistory.__init__W   sº   € ñ Øœ×+Ñ+Ò+Ü×-Ñ-Ø   ð '3ð 48°&ð 93ð3óð ð $,×#;Ñ#;ˆDÔ Ø'×3Ñ3ˆDÔØ!)×!7Ñ!7ˆDÔØ)1×)GÑ)GˆDÕ&ä!%×!8Ñ!8Ó!:ˆDÔÜ#×6Ñ6Ó8ˆDÔÜ#'×#:Ñ#:Ó#<ˆDÔ Ø).ˆDÕ&ó    c                ó^   — t        | j                  j                  | j                  «      «      S ©N)Úlistr>   Úunionr=   ©rF   s    rK   Úadded_plus_unchangedz%WriteOnlyHistory.added_plus_unchangedr   s$   € ä�D×$Ñ$×*Ñ*¨4×+?Ñ+?Ó@ÓAÐArM   c                ó�   — t        | j                  j                  | j                  «      j                  | j                  «      «      S rO   )rP   r>   rQ   r=   r?   rR   s    rK   Ú	all_itemszWriteOnlyHistory.all_itemsv   s=   € äØ×Ñ×"Ñ" 4×#7Ñ#7Ó8×>Ñ>Ø×"Ñ"óó
ð 	
rM   c                ó’  — | j                   rf| j                  j                  | j                  «      }| j                  j                  | j                  «      }| j                  j                  |«      }n$| j                  | j                  | j                  }}}t        j                  t        |«      t        |«      t        |«      «      S rO   )	rA   r>   Ú
differencer=   r?   Úintersectionr   ÚHistoryrP   )rF   ÚaddedÚdeletedÚ	unchangeds       rK   Ú
as_historyzWriteOnlyHistory.as_history~   s¢   € Ø×%Ò%Ø×$Ñ$×/Ñ/°×0DÑ0DÓEˆEØ×(Ñ(×5Ñ5°d×6JÑ6JÓKˆGØ×,Ñ,×7Ñ7¸Ó@‰Ið × Ñ Ø×$Ñ$Ø×"Ñ"ð &�9ˆEô
 ×!Ñ!¤$ u£+¬t°I«ÄÀWÃÓNÐNrM   c                ó2   — t        | j                  «      |   S rO   )rP   r>   )rF   Úindexs     rK   ÚindexedzWriteOnlyHistory.indexed‹   s   € Ü�D×$Ñ$Ó% eÑ,Ð,rM   c                ó:   — | j                   j                  |«       y rO   )r>   Úadd©rF   Úvalues     rK   Ú	add_addedzWriteOnlyHistory.add_addedŽ   s   € Ø×Ñ×Ñ˜UÕ#rM   c                óŽ   — || j                   v r| j                   j                  |«       y | j                  j                  |«       y rO   )r>   Úremover?   rb   rc   s     rK   Úadd_removedzWriteOnlyHistory.add_removed‘   s8   € Ø�D×$Ñ$Ñ$Ø×Ñ×#Ñ# EÕ*à×Ñ×"Ñ" 5Õ)rM   rO   )
rG   Ú_WriteOnlyAttributeImplrH   úInstanceState[_T]rI   r   rJ   zOptional[WriteOnlyHistory[_T]]ÚreturnÚNone)rk   zList[_T])rk   úattributes.History)r_   zUnion[int, slice]rk   zUnion[List[_T], _T])rd   r9   rk   rl   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rL   ÚpropertyrS   rU   r]   r`   re   rh   © rM   rK   r<   r<   O   s–   … ÙNà,Ó,Ø(Ó(Ø*Ó*ØÓð 48ð/à%ð/ð !ð/ð ð	/ð
 1ð/ð 
ó/ð6 òBó ðBð ò
ó ð
óOó-ó$ô*rM   r<   c                  óÈ  ‡ — e Zd ZU dZded<   dZded<   dZded<   dZded<   dZded<   dZ	ded	<   d
Z
ded<   eZded<   ded<   	 	 	 	 	 	 	 	 	 	 	 	 d'ˆ fd„Zej                  f	 	 	 	 	 	 	 d(d„Ze	 	 d)	 	 	 	 	 	 	 	 	 d*d„«       Ze	 	 d)	 	 	 	 	 	 	 	 	 d+d„«       Ze	 	 d)	 	 	 	 	 	 	 	 	 d,d„«       Zdej                  f	 	 	 	 	 	 	 	 	 d,d„Zej(                  d-d„«       Zej(                  d-d„«       Z	 d.	 	 	 	 	 	 	 	 	 	 	 d/d„Z	 d.	 	 	 	 	 	 	 	 	 	 	 d/d„Z	 	 	 	 	 	 d0d„Zdej                  dddf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d1d„Zd2d„Z	 	 	 	 	 	 	 	 d3d„Zej:                  f	 	 	 	 	 	 	 d4d „Zej>                  f	 	 	 	 	 	 	 d5d!„Z 	 	 	 	 	 	 d6d"„Z!	 	 	 	 	 	 d7d#„Z"ej:                  f	 	 	 	 	 	 	 	 	 	 	 d8d$„Z#ej:                  f	 	 	 	 	 	 	 	 	 	 	 d8d%„Z$ej:                  f	 	 	 	 	 	 	 	 	 	 	 d8d&„Z%ˆ xZ&S )9ri   Tr@   Úuses_objectsFÚdefault_accepts_scalar_loaderÚsupports_populationÚ_supports_dynamic_iterationÚ
collectionÚdynamicrt   r3   Úorder_byzType[WriteOnlyHistory[Any]]Úcollection_history_clszType[WriteOnlyCollection[Any]]Úquery_classc                óv   •— t        ‰| �  ||d |fi |¤Ž || _        t        | _        |rt        |«      | _        y y rO   )ÚsuperrL   Útarget_mapperÚWriteOnlyCollectionr~   Útupler|   )rF   Úclass_ÚkeyÚdispatchr�   r|   ÚkwÚ	__class__s          €rK   rL   z _WriteOnlyAttributeImpl.__init__¦   s@   ø€ ô 	‰Ñ˜  d¨HÑ;¸Ò;Ø*ˆÔÜ.ˆÔÙÜ! (›OˆD�Mð rM   c                ó    — |t         j                  z  s*| j                  |t         j                  «      j                  S | j                  | |«      S rO   )r   rC   Ú_get_collection_historyÚPASSIVE_NO_INITIALIZEr>   r~   )rF   rH   Údict_rI   s       rK   Úgetz_WriteOnlyAttributeImpl.getµ   sJ   € ð œ×+Ñ+Ò+Ø×/Ñ/Ø”{×8Ñ8óç‰kðð ×#Ñ# D¨%Ó0Ð0rM   c                 ó   — y rO   rt   ©rF   rH   rŒ   Ú	user_datarI   s        rK   Úget_collectionz&_WriteOnlyAttributeImpl.get_collectionÂ   ó   € ð  rM   c                 ó   — y rO   rt   r�   s        rK   r‘   z&_WriteOnlyAttributeImpl.get_collectionË   r’   rM   c                 ó   — y rO   rt   r�   s        rK   r‘   z&_WriteOnlyAttributeImpl.get_collectionÔ   s   € ð rM   Nc                óÈ   — |t         j                  z  s'| j                  ||«      j                  }t        |«      S | j                  ||«      }|j                  }t        |«      S rO   )r   rC   rŠ   r>   rS   Ú_DynamicCollectionAdapter)rF   rH   rŒ   r�   rI   ÚdataÚhistorys          rK   r‘   z&_WriteOnlyAttributeImpl.get_collectionß   sa   € ð œ×+Ñ+Ò+Ø×/Ñ/°°wÓ?×KÑKˆDô )¨Ó.Ð.ð ×2Ñ2°5¸'ÓBˆGØ×/Ñ/ˆDÜ(¨Ó.Ð.rM   c                óJ   — t        j                  | t         j                  «      S rO   )r   r.   Ú	OP_APPENDrR   s    rK   Ú_append_tokenz%_WriteOnlyAttributeImpl._append_tokenð   ó   € ä×-Ñ-¨d´J×4HÑ4HÓIÐIrM   c                óJ   — t        j                  | t         j                  «      S rO   )r   r.   Ú	OP_REMOVErR   s    rK   Ú_remove_tokenz%_WriteOnlyAttributeImpl._remove_tokenô   rœ   rM   c                ó   — |€| j                  ||«      }|j                  |«       | j                  j                  D ]  } ||||xs | j                  «      }Œ | j
                  r*|�'| j                  t        j                  |«      |d«       y y y ©NT)	Ú_modified_eventre   r†   Úappendr›   ÚtrackparentÚsethasparentr   Úinstance_state©rF   rH   rŒ   rd   Ú	initiatorÚcollection_historyÚfns          rK   Úfire_append_eventz)_WriteOnlyAttributeImpl.fire_append_eventø   s”   € ð Ð%Ø!%×!5Ñ!5°e¸UÓ!CÐà×$Ñ$ UÔ+à—-‘-×&Ñ&ò 	FˆBÙ�u˜e YÒ%D°$×2DÑ2DÓE‰Eð	Fð ×Ò Ð 1Ø×Ñœj×7Ñ7¸Ó>ÀÀtÕLð !2ÐrM   c                ó  — |€| j                  ||«      }|j                  |«       | j                  r(|�&| j                  t	        j
                  |«      |d«       | j                  j                  D ]  } ||||xs | j                  «       Œ y )NF)	r¢   rh   r¤   r¥   r   r¦   r†   rg   rŸ   r§   s          rK   Úfire_remove_eventz)_WriteOnlyAttributeImpl.fire_remove_event  s†   € ð Ð%Ø!%×!5Ñ!5°e¸UÓ!CÐà×&Ñ& uÔ-à×Ò Ð 1Ø×Ñœj×7Ñ7¸Ó>ÀÀuÔMà—-‘-×&Ñ&ò 	>ˆBÙˆu�e˜YÒ<¨$×*<Ñ*<Õ=ñ	>rM   c                ó   — | j                   |j                  vr8| j                  | |t        j                  «      |j                  | j                   <   |j                  || t        «       d|| j                   <   |j                  | j                      S r¡   )r…   Úcommitted_stater}   r   ÚPASSIVE_NO_FETCHr¢   r   )rF   rH   rŒ   s      rK   r¢   z'_WriteOnlyAttributeImpl._modified_event  sz   € ð �8‰8˜5×0Ñ0Ñ0Ø.2×.IÑ.IØ�eœ[×9Ñ9ó/ˆE×!Ñ! $§(¡(Ñ+ð 	×Ñ˜e T¬9Ô5ð ˆˆd�h‰h‰Ø×$Ñ$ T§X¡XÑ.Ð.rM   c	                ó¶  — |r|j                   | j                   u ry |r|€y |t        u ry |}	t        |	«      }
|j                  rL| j                  st        j                  d| › d�«      ‚t        j                  | j                  |||¬«      «      }| j                  ||«      }|j                  s|j                  }nj                  |j                  «      }|j                  |
«      }t        j                  |
«      j                  |«      }|j                  |«      }|
D ]  }||v sŒ| j                  |||d |¬«       Œ |D ]  }| j!                  |||d |¬«       Œ y )NzCollection "zV" does not support implicit iteration; collection replacement operations can't be used©rI   )r©   )Úparent_tokenr   rP   Úhas_identityry   r!   rD   r$   ÚIdentitySetr�   r¢   r>   rQ   rX   rW   r«   r­   )rF   rH   rŒ   rd   r¨   rI   Ú	check_oldÚpopÚ_adaptÚiterableÚ
new_valuesÚold_collectionr©   Ú	constantsÚ	additionsÚremovalsÚmembers                    rK   Úsetz_WriteOnlyAttributeImpl.set-  s‡  € ñ ˜×/Ñ/°4×3DÑ3DÑDØá�5�=Øà”HÑð àˆÜ˜(“^ˆ
Ø×ÒØ×3Ò3Ü×-Ñ-Ø" 4 &ð )$ð $óð ô
 "×-Ñ-Ø—‘˜ ¨w�Ó7óˆNð "×1Ñ1°%¸Ó?ÐØ×!Ò!Ø/×;Ñ;‰Nà+×1Ñ1Ø"×.Ñ.óˆNð #×/Ñ/°
Ó;ˆ	Ü×$Ñ$ ZÓ0×;Ñ;¸IÓFˆ	Ø!×,Ñ,¨YÓ7ˆà ò 	ˆFØ˜Ò"Ø×&Ñ&ØØØØØ'9ð 'õ ð	ð ò 	ˆFØ×"Ñ"ØØØØØ#5ð #õ ñ	rM   c                ó   — t        «       ‚rO   ©ÚNotImplementedError)rF   ÚargsÚkwargss      rK   r%   z_WriteOnlyAttributeImpl.deletep  s   € Ü!Ó#Ð#rM   c                ó   — t        d«      ‚)Nz7Dynamic attributes don't support collection population.rÂ   )rF   rH   rŒ   rd   s       rK   Úset_committed_valuez+_WriteOnlyAttributeImpl.set_committed_values  s   € ô "ØEó
ð 	
rM   c                óF   — | j                  ||«      }|j                  «       S rO   )rŠ   r]   )rF   rH   rŒ   rI   Úcs        rK   Úget_historyz#_WriteOnlyAttributeImpl.get_historyz  s"   € ð ×(Ñ(¨°Ó8ˆØ�|‰|‹~ÐrM   c                óŽ   — | j                  ||«      }|j                  D �cg c]  }t        j                  |«      |f‘Œ c}S c c}w rO   )rŠ   rU   r   r¦   )rF   rH   rŒ   rI   rÉ   Úxs         rK   Úget_all_pendingz'_WriteOnlyAttributeImpl.get_all_pendingƒ  s>   € ð ×(Ñ(¨°Ó8ˆØ;<¿;¹;ÖG°a”×*Ñ*¨1Ó-¨qÒ1ÒGÐGùÒGs   ¡Ac                ój   — d }| j                   j                  D ]  } ||||«      }|t        usŒ|}Œ |S rO   )r†   Úinit_scalarr   )rF   rH   rŒ   rd   rª   Úrets         rK   Ú_default_valuez&_WriteOnlyAttributeImpl._default_valueŒ  sD   € ð ˆØ—-‘-×+Ñ+ò 	ˆBÙ�U˜E 5Ó)ˆCØœ*Ò$Ø‘ð	ð
 ˆrM   c                ó  — | j                   |j                  v r|j                  | j                      }n!| j                  | |t        j                  «      }|j
                  r(|t        j                  z  r| j                  | |||¬«      S |S )N)rJ   )r…   r¯   r}   r   r°   r´   ÚINIT_OK)rF   rH   rI   rÉ   s       rK   rŠ   z/_WriteOnlyAttributeImpl._get_collection_history—  s‡   € ð �8‰8�u×,Ñ,Ñ,Ø×%Ñ% d§h¡hÑ/‰Aà×+Ñ+Ø�eœ[×9Ñ9óˆAð ×Ò 7¬[×-@Ñ-@Ò#@Ø×.Ñ.Ø�e˜W¨qð /ó ð ð ˆHrM   c                ó6   — || ur| j                  ||||«       y y rO   )r«   ©rF   rH   rŒ   rd   r¨   rI   s         rK   r£   z_WriteOnlyAttributeImpl.append©  ó%   € ð ˜DÑ Ø×"Ñ" 5¨%°¸	ÕBð !rM   c                ó6   — || ur| j                  ||||«       y y rO   )r­   rÕ   s         rK   rg   z_WriteOnlyAttributeImpl.remove´  rÖ   rM   c                ó0   — | j                  |||||¬«       y )Nr²   )rg   rÕ   s         rK   r·   z_WriteOnlyAttributeImpl.pop¿  s   € ð 	�‰�E˜5 %¨¸GˆÕDrM   )r„   z#Union[Type[Any], AliasedClass[Any]]r…   Ústrr†   z"_Dispatch[QueryableAttribute[Any]]r�   z
Mapper[_T]r|   r3   r‡   r   )rH   úInstanceState[Any]rŒ   r-   rI   r   rk   z8Union[util.OrderedIdentitySet, WriteOnlyCollection[Any]])..)
rH   rÚ   rŒ   r-   r�   zLiteral[None]rI   z Literal[PassiveFlag.PASSIVE_OFF]rk   r1   )
rH   rÚ   rŒ   r-   r�   r0   rI   r   rk   r1   )
rH   rÚ   rŒ   r-   r�   z$Optional[_AdaptedCollectionProtocol]rI   r   rk   zIUnion[Literal[LoaderCallableStatus.PASSIVE_NO_RESULT], CollectionAdapter])rk   zattributes.AttributeEventTokenrO   )rH   rÚ   rŒ   r-   rd   r   r¨   úOptional[AttributeEventToken]r©   zOptional[WriteOnlyHistory[Any]]rk   rl   )rH   rÚ   rŒ   r-   rk   úWriteOnlyHistory[Any])rH   rÚ   rŒ   r-   rd   r   r¨   rÛ   rI   r   r¶   r   r·   r@   r¸   r@   rk   rl   )rÄ   r   rÅ   r   rk   r   )rH   rÚ   rŒ   r-   rd   r   rk   r   )rH   rÚ   rŒ   r-   rI   r   rk   rm   )rH   rÚ   rŒ   r-   rI   r   rk   z$List[Tuple[InstanceState[Any], Any]])rH   rÚ   rŒ   r-   rk   r   )rH   rÚ   rI   r   rk   rÜ   )rH   rÚ   rŒ   r-   rd   r   r¨   rÛ   rI   r   rk   rl   )'rn   ro   rp   rv   rr   rw   rx   ry   rz   r{   r|   r<   r}   rL   r   ÚPASSIVE_OFFr�   r   r‘   r$   Úmemoized_propertyr›   rŸ   r«   r­   r¢   rÀ   r%   rÇ   r°   rÊ   r‹   rÍ   rÑ   rŠ   r£   rg   r·   Ú__classcell__)rˆ   s   @rK   ri   ri   ˜   s+  ø… ð €L�$ÓØ*/Ð! 4Ó/Ø %Ð˜Ó%Ø(-Ð Ó-Ø€J�ÓØ€GˆTÓØ(*€HÐ%Ó*Ø:JÐÐ7ÓJà/Ó/ð,à3ð,ð ð,ð 5ð	,ð
 "ð,ð *ð,ð õ,ð&  +×6Ñ6ð	1à!ð1ð ð1ð ð	1ð
 
Bó1ð ð
 $'Ø47ð à!ð ð ð ð !ð	 ð
 2ð ð 
ò ó ð ð ð
 14Ø"ð à!ð ð ð ð .ð	 ð
 ð ð 
ò ó ð ð ð
 ;>Ø"ðà!ðð ðð 8ð	ð
 ðð
òó ðð ;?Ø*×6Ñ6ð/à!ð/ð ð/ð 8ð	/ð
 ð/ð
ó/ð" 
×ÑòJó ðJð 
×ÑòJó ðJð ?CðMà!ðMð ðMð ð	Mð
 1ðMð <ðMð 
óMð2 ?Cð>à!ð>ð ð>ð ð	>ð
 1ð>ð <ð>ð 
ó>ð&/Ø'ð/Ø0=ð/à	ó/ð( 48Ø*×6Ñ6ØØØðAà!ðAð ðAð ð	Að
 1ðAð ðAð ðAð ðAð ðAð 
óAóF$ð
Ø'ð
Ø0=ð
ØFIð
à	ó
ð  +×;Ñ;ð	à!ðð ðð ð	ð
 
óð  +×@Ñ@ð	Hà!ðHð ðHð ð	Hð
 
.óHð	Ø'ð	Ø0=ð	à	ó	ðØ'ðØ2=ðà	óð0  +×;Ñ;ð	Cà!ð	Cð ð	Cð ð		Cð
 1ð	Cð ð	Cð 
ó	Cð"  +×;Ñ;ð	Cà!ð	Cð ð	Cð ð		Cð
 1ð	Cð ð	Cð 
ó	Cð"  +×;Ñ;ðEà!ðEð ðEð ð	Eð
 1ðEð ðEð 
÷ErM   ri   Ú
write_only)Úlazyc                  ó   — e Zd ZeZdd„Zy)Ú_WriteOnlyLoaderc           	     ó²  — d| _         | j                  r6| j                  j                  t        j
                  t        j                  fvr"t        j                  d| j                  z  «      ‚t        j                  | j                  |d| j                  | j                  j                  | j                  j                  | j                  j                  ¬«       y )NTztOn relationship %s, 'dynamic' loaders cannot be used with many-to-one/one-to-one relationships and/or uselist=False.)Ú	useobjectÚ
impl_classr�   r|   r~   )Úis_class_levelÚuselistÚparent_propertyÚ	directionr   Ú	ONETOMANYÚ
MANYTOMANYr!   rD   r   Ú_register_attributeræ   Úmapperr|   r~   )rF   rî   s     rK   Úinit_class_attributez%_WriteOnlyLoader.init_class_attributeÏ  s·   € Ø"ˆÔØ�|Š|˜t×3Ñ3×=Ñ=Ü× Ñ Ü×!Ñ!ðF
ñ  
ô ×)Ñ)ð!à#'×#7Ñ#7ñ8óð ô 	×&Ñ&Ø× Ñ ØØØ—‘Ø×.Ñ.×5Ñ5Ø×)Ñ)×2Ñ2Ø×,Ñ,×8Ñ8ö	
rM   N)rî   zMapper[Any]rk   rl   )rn   ro   rp   ri   ræ   rï   rt   rM   rK   rã   rã   Ê  s   „ ð )€Jô
rM   rã   c                  óD   — e Zd ZU dZded<   d
d„Zdd„Zdd„Zdd„Zdd„Z	y	)r–   z9simplified CollectionAdapter for internal API consistencyúCollection[Any]r—   c                ó   — || _         y rO   )r—   )rF   r—   s     rK   rL   z"_DynamicCollectionAdapter.__init__ë  s	   € Øˆ�	rM   c                ó,   — t        | j                  «      S rO   )Úiterr—   rR   s    rK   Ú__iter__z"_DynamicCollectionAdapter.__iter__î  s   € Ü�D—I‘I‹ÐrM   c                 ó   — y rO   rt   rR   s    rK   Ú_reset_emptyz&_DynamicCollectionAdapter._reset_emptyñ  s   € ØrM   c                ó,   — t        | j                  «      S rO   )Úlenr—   rR   s    rK   Ú__len__z!_DynamicCollectionAdapter.__len__ô  s   € Ü�4—9‘9‹~ÐrM   c                 ó   — yr¡   rt   rR   s    rK   Ú__bool__z"_DynamicCollectionAdapter.__bool__÷  s   € ØrM   N)r—   rñ   )rk   zIterator[Any])rk   rl   )rk   Úint)rk   r@   )
rn   ro   rp   rq   rr   rL   rõ   r÷   rú   rü   rt   rM   rK   r–   r–   æ  s$   … ÙCà
ÓóóóóôrM   r–   c                  óN   — e Zd ZU dZesdZded<   ded<   	 	 	 	 dd„Zdd„Zdd	„Z	y
)Ú_AbstractCollectionWriterzsVirtual collection which includes append/remove methods that synchronize
    into the attribute event system.

    rt   r9   ÚinstancezTuple[FromClause, ...]Ú	_from_objc                óô  — |j                  «       }t        r|sJ ‚|| _        || _        t	        |«      }|j
                  | j                  j                     }|j                  �=|j                  j                  «       |j                  j                  ddi«      f| _        nd| _        |j                  |d¬«      f| _        | j                  j                  r| j                  j                  | _        y d| _        y )NÚ_no_filter_byTrt   F)Úalias_secondary)Úobjr   r   rG   r   Ú_propsr…   Ú	secondaryrî   Ú__clause_element__Ú	_annotater  Ú_with_parentÚ_where_criteriar|   Ú_order_by_clauses)rF   rG   rH   r   rî   Úprops         rK   rL   z"_AbstractCollectionWriter.__init__  sÔ   € ð —9‘9“;ˆÝÙˆO�8Ø ˆŒØˆŒ	ä˜xÓ(ˆØ�}‰}˜TŸY™YŸ]™]Ñ+ˆà�>‰>Ð%ð —‘×.Ñ.Ó0Ø—‘×(Ñ(¨/¸4Ð)@ÓAðˆD�Nð
  ˆDŒNð ×Ñ˜h¸ÐÓ>ð 
ˆÔð �9‰9×ÒØ%)§Y¡Y×%7Ñ%7ˆDÕ"à%'ˆDÕ"rM   c                óÂ   — |D ]Z  }| j                   j                  t        j                  | j                  «      t        j
                  | j                  «      |d «       Œ\ y rO   )rG   r£   r   r¦   r   Úinstance_dict)rF   ÚiteratorÚitems      rK   Ú_add_all_implz'_AbstractCollectionWriter._add_all_impl0  sM   € Øò 	ˆDØ�I‰I×ÑÜ×)Ñ)¨$¯-©-Ó8Ü×(Ñ(¨¯©Ó7ØØõ	ñ	rM   c                ó´   — | j                   j                  t        j                  | j                  «      t        j
                  | j                  «      |d «       y rO   )rG   rg   r   r¦   r   r  ©rF   r  s     rK   Ú_remove_implz&_AbstractCollectionWriter._remove_impl9  s>   € Ø�	‰	×ÑÜ×%Ñ% d§m¡mÓ4Ü×$Ñ$ T§]¡]Ó3ØØõ		
rM   N)rG   ri   rH   rj   ©r  zIterable[_T]rk   rl   ©r  r9   rk   rl   )
rn   ro   rp   rq   r   Ú	__slots__rr   rL   r  r  rt   rM   rK   rÿ   rÿ   û  s<   … ññ
 Øˆ	àƒLØ%Ó%ð'(Ø+ð'(Ø4Eó'(óRô
rM   rÿ   c                  óT   — e Zd ZdZdZdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zdd
„Zy)r‚   a�  Write-only collection which can synchronize changes into the
    attribute event system.

    The :class:`.WriteOnlyCollection` is used in a mapping by
    using the ``"write_only"`` lazy loading strategy with
    :func:`_orm.relationship`.     For background on this configuration,
    see :ref:`write_only_relationship`.

    .. versionadded:: 2.0

    .. seealso::

        :ref:`write_only_relationship`

    )r   rG   r  r  r  c                ó   — t        d«      ‚)Nz°WriteOnly collections don't support iteration in-place; to query for collection items, use the select() method to produce a SQL statement and execute it with session.scalars().)Ú	TypeErrorrR   s    rK   rõ   zWriteOnlyCollection.__iter__[  s   € ÜðMó
ð 	
rM   c                ó  —  t        | j                  j                  «      j                  | j                  Ž }| j
                  r |j                  | j
                  Ž }| j                  r |j                  | j                  Ž }|S )z‘Produce a :class:`_sql.Select` construct that represents the
        rows within this instance-local :class:`_orm.WriteOnlyCollection`.

        )	r'   rG   r�   Úwherer  r  Úselect_fromr  r|   )rF   Ústmts     rK   r'   zWriteOnlyCollection.selectb  sl   € ð
 5Œv�d—i‘i×-Ñ-Ó.×4Ñ4°d×6JÑ6JÐKˆØ�>Š>Ø#�4×#Ñ# T§^¡^Ð4ˆDØ×!Ò!Ø �4—=‘= $×"8Ñ"8Ð9ˆDØˆrM   c                óæ  — t        | j                  «      }|j                  }|j                  | j                  j
                     }|j                  t        j                  urt        j                  d«      ‚i }|j                  D ]=  \  }}|j                  |||j                  |«      }t        d|¬«      ||j
                  <   Œ?  t        | j                  j                   «      j"                  di |¤ŽS )aN  For one-to-many collections, produce a :class:`_dml.Insert` which
        will insert new rows in terms of this this instance-local
        :class:`_orm.WriteOnlyCollection`.

        This construct is only supported for a :class:`_orm.Relationship`
        that does **not** include the :paramref:`_orm.relationship.secondary`
        parameter.  For relationships that refer to a many-to-many table,
        use ordinary bulk insert techniques to produce new objects, then
        use :meth:`_orm.AbstractCollectionWriter.add_all` to associate them
        with the collection.


        z…Write only bulk INSERT only supported for one-to-many collections; for many-to-many, use a separate bulk INSERT along with add_all().N)Ú	callable_rt   )r"   r   rî   r  rG   r…   rê   r   rë   r!   rD   Úsynchronize_pairsÚ_get_attr_w_warn_on_noneÚdictr   r&   r�   Úvalues)rF   rH   rî   r  rŒ   ÚlÚrrª   s           rK   r&   zWriteOnlyCollection.insertn  sÙ   € ô ˜Ÿ™Ó&ˆØ—‘ˆØ�}‰}˜TŸY™YŸ]™]Ñ+ˆà�>‰>Ô!6×!@Ñ!@Ñ@Ü×)Ñ)ð/óð ð !#ˆà×*Ñ*ò 	9‰DˆAˆqØ×.Ñ.ØØØ—
‘
Øó	ˆBô % T°RÔ8ˆE�!—%‘%ŠLð	9ð 6Œv�d—i‘i×-Ñ-Ó.×5Ñ5Ñ>¸Ñ>Ð>rM   c                ón   —  t        | j                  j                  «      j                  | j                  Ž S )zŒProduce a :class:`_dml.Update` which will refer to rows in terms
        of this instance-local :class:`_orm.WriteOnlyCollection`.

        )r(   rG   r�   r  r  rR   s    rK   r(   zWriteOnlyCollection.update–  ó,   € ð
 5Œv�d—i‘i×-Ñ-Ó.×4Ñ4°d×6JÑ6JÐKÐKrM   c                ón   —  t        | j                  j                  «      j                  | j                  Ž S )zŒProduce a :class:`_dml.Delete` which will refer to rows in terms
        of this instance-local :class:`_orm.WriteOnlyCollection`.

        )r%   rG   r�   r  r  rR   s    rK   r%   zWriteOnlyCollection.delete�  r)  rM   c                ó&   — | j                  |«       y)zÐAdd an iterable of items to this :class:`_orm.WriteOnlyCollection`.

        The given items will be persisted to the database in terms of
        the parent instance's collection on the next flush.

        N©r  )rF   r  s     rK   Úadd_allzWriteOnlyCollection.add_all¤  s   € ð 	×Ñ˜8Õ$rM   c                ó(   — | j                  |g«       y)zÂAdd an item to this :class:`_orm.WriteOnlyCollection`.

        The given item will be persisted to the database in terms of
        the parent instance's collection on the next flush.

        Nr,  r  s     rK   rb   zWriteOnlyCollection.add­  s   € ð 	×Ñ˜D˜6Õ"rM   c                ó&   — | j                  |«       y)z®Remove an item from this :class:`_orm.WriteOnlyCollection`.

        The given item will be removed from the parent instance's collection on
        the next flush.

        N)r  r  s     rK   rg   zWriteOnlyCollection.remove¶  s   € ð 	×Ñ˜$ÕrM   N)rk   r   )rk   z
Select[_T])rk   r*   )rk   r+   )rk   r)   r  r  )rn   ro   rp   rq   r  rõ   r'   r&   r(   r%   r-  rb   rg   rt   rM   rK   r‚   r‚   B  s9   „ ñð €Ió
ó
ó&?óPLóLó%ó#ô rM   r‚   N)Prq   Ú
__future__r   Útypingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Úsqlalchemy.sqlr   Ú r   r   r   r   Úbaser   r   r   r   r   r   r!   r"   r#   r$   Úsqlr%   r&   r'   r(   Úsql.dmlr)   r*   r+   r,   Ú_typingr-   r.   r/   Úcollectionsr0   r1   rî   r2   r3   rH   r4   r5   Úeventr6   Úsql.selectabler7   r8   r9   r<   Ú_HasCollectionAdapterÚ_AttributeImplri   Úclass_loggerÚRelationshipPropertyÚstrategy_forÚ_AbstractRelationshipLoaderÚ
Identifiedrã   r–   rÿ   r‚   rt   rM   rK   ú<module>rB     se  ðñ	õ #å Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý Ý å $Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý 'Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý áÝ$Ý&Ý/Ý*Ý7Ý.ÝÝ6Ý$Ý"Ý!Ý+Ý'áˆT˜Ô€ôF*�w˜r‘{ô F*ôRoEØ×$Ñ$ j×&?Ñ&?ôoEðd	 ×ÑØ×#Ñ#×0Ñ0°lÐ0ÓCô
�z×=Ñ=¸s¿~¹~ó 
ó Dó ð
÷4ñ ô*D
 ¨¡ô D
ôN{ Ð3°BÑ7õ { rM   