§
    eŠtjW  ã                  óÒ  — 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- erNdd)lm.Z. dd*l/m0Z0 dd+lm1Z1 dd,lm2Z2 dd-l3m4Z4 dd.l3m5Z5 dd/l6m7Z7 dd0lm8Z8 dd1l9m:Z: dd2l"m;Z; dd3l<m=Z= dd4l>m?Z? dd5l>m@Z@  ed6e¬7¦  «        ZA G d8„ d9eeA         ¦  «        ZB G d:„ d;ejC        ejD        ¦  «        ZEe!jF        ejG         H                    d<¬=¦  «         G d>„ d?ejI        e!jJ        ¦  «        ¦   «         ¦   «         ZK G d@„ dA¦  «        ZL G dB„ dCeeA         ¦  «        ZM G dD„ dEeMeA         ¦  «        ZNdFS )Gzè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)ÚNoReturn)ÚOptional)Úoverload)ÚTuple)ÚType)ÚTYPE_CHECKING)ÚTypeVar)ÚUnion)Ú	bindparamé   )Ú
attributes)Ú
interfaces)Úrelationships)Ú
strategies)Ú	NEVER_SET)Úobject_mapper)ÚPassiveFlag)ÚRelationshipDirectioné   )Úexc)Úinspect)Úlog)Úutil)Údelete)Úinsert)Úselect)Úupdate)ÚDelete)ÚInsert)ÚUpdate)ÚLiteral)Ú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dS )'ÚWriteOnlyHistoryzDOverrides AttributeHistory to receive append/remove events directly.zutil.OrderedIdentitySetÚunchanged_itemsÚadded_itemsÚdeleted_itemsÚboolÚ_reconcile_collectionNÚattrÚWriteOnlyAttributeImplÚstateúInstanceState[_T]Úpassiver   Úapply_toúOptional[WriteOnlyHistory[_T]]ÚreturnÚNonec                ó`  — |r\|t           j        z  rt          j        d|› d|› d�¦  «        ‚|j        | _        |j        | _        |j        | _        |j        | _        d S t          j	        ¦   «         | _        t          j	        ¦   «         | _        t          j	        ¦   «         | _        d| _        d S )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=   r?   r!   ÚOrderedIdentitySet)Úselfr@   rB   rD   rE   s        úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/orm/writeonly.pyÚ__init__zWriteOnlyHistory.__init__U   sË   € ð ð 	/Ø�Ô+Ñ+ð ÝÔ-ð3 ð 3ð 3ð 48ð3ð 3ð 3ñô ð ð $,Ô#;ˆDÔ Ø'Ô3ˆDÔØ!)Ô!7ˆDÔØ)1Ô)GˆDÔ&Ð&Ð&å!%Ô!8Ñ!:Ô!:ˆDÔÝ#Ô6Ñ8Ô8ˆDÔÝ#'Ô#:Ñ#<Ô#<ˆDÔ Ø).ˆDÔ&Ð&Ð&ó    úList[_T]c                óZ   — t          | j                             | j        ¦  «        ¦  «        S ©N)Úlistr<   Úunionr;   ©rM   s    rN   Úadded_plus_unchangedz%WriteOnlyHistory.added_plus_unchangedp   s$   € å�DÔ$×*Ò*¨4Ô+?Ñ@Ô@ÑAÔAÐArP   c                óŠ   — t          | j                             | j        ¦  «                             | j        ¦  «        ¦  «        S rS   )rT   r<   rU   r;   r=   rV   s    rN   Ú	all_itemszWriteOnlyHistory.all_itemst   sA   € åØÔ×"Ò" 4Ô#7Ñ8Ô8×>Ò>ØÔ"ñô ñ
ô 
ð 	
rP   úattributes.Historyc                óf  — | j         rY| j                             | j        ¦  «        }| j                             | j        ¦  «        }| j                             |¦  «        }n| j        | j        | j        }}}t          j        t          |¦  «        t          |¦  «        t          |¦  «        ¦  «        S rS   )	r?   r<   Ú
differencer;   r=   Úintersectionr   ÚHistoryrT   )rM   ÚaddedÚdeletedÚ	unchangeds       rN   Ú
as_historyzWriteOnlyHistory.as_history|   s�   € ØÔ%ð 		ØÔ$×/Ò/°Ô0DÑEÔEˆEØÔ(×5Ò5°dÔ6JÑKÔKˆGØÔ,×7Ò7¸Ñ@Ô@ˆIˆIð Ô ØÔ$ØÔ"ð &�9ˆEõ
 Ô!¥$ u¡+¤+­t°I©¬ÅÀWÁÄÑNÔNÐNrP   ÚindexúUnion[int, slice]úUnion[List[_T], _T]c                ó6   — t          | j        ¦  «        |         S rS   )rT   r<   )rM   rc   s     rN   ÚindexedzWriteOnlyHistory.indexed‰   s   € Ý�DÔ$Ñ%Ô% eÔ,Ð,rP   Úvaluer7   c                ó:   — | j                              |¦  «         d S rS   )r<   Úadd©rM   rh   s     rN   Ú	add_addedzWriteOnlyHistory.add_addedŒ   s   € ØÔ×Ò˜UÑ#Ô#Ð#Ð#Ð#rP   c                ó„   — || j         v r| j                              |¦  «         d S | j                             |¦  «         d S rS   )r<   Úremover=   rj   rk   s     rN   Úadd_removedzWriteOnlyHistory.add_removed�   sJ   € Ø�DÔ$Ð$Ð$ØÔ×#Ò# EÑ*Ô*Ð*Ð*Ð*àÔ×"Ò" 5Ñ)Ô)Ð)Ð)Ð)rP   rS   )
r@   rA   rB   rC   rD   r   rE   rF   rG   rH   )rG   rQ   )rG   rZ   )rc   rd   rG   re   )rh   r7   rG   rH   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rO   ÚpropertyrW   rY   rb   rg   rl   ro   © rP   rN   r:   r:   M   s  € € € € € € ØNÐNà,Ð,Ð,Ñ,Ø(Ð(Ð(Ñ(Ø*Ð*Ð*Ñ*ØÐÐÑð 48ð/ð /ð /ð /ð /ð6 ðBð Bð Bñ „XðBð ð
ð 
ð 
ñ „Xð
ðOð Oð Oð Oð-ð -ð -ð -ð$ð $ð $ð $ð*ð *ð *ð *ð *ð *rP   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<   dPˆ fd„Zej        fdQd$„Ze	 	 dRdSd*„¦   «         Ze	 	 dRdTd,„¦   «         Ze	 	 dRdUd/„¦   «         Zd0ej        fdUd1„Zej        dVd3„¦   «         Zej        dVd4„¦   «         Z	 dWdXd;„Z	 dWdXd<„ZdYd>„Zd0ej        d0ddfdZdB„Zd[dF„Zd\dG„Zej        fd]dI„Zej        fd^dK„Z d_dL„Z!ej        fd`dM„Z"ej        fd`dN„Z#ej        fd`dO„Z$ˆ xZ%S )arA   Tr>   Úuses_objectsFÚdefault_accepts_scalar_loaderÚsupports_populationÚ_supports_dynamic_iterationÚ
collectionÚdynamicrv   r1   Úorder_byzType[WriteOnlyHistory[Any]]Úcollection_history_clszType[WriteOnlyCollection[Any]]Úquery_classÚclass_ú#Union[Type[Any], AliasedClass[Any]]ÚkeyÚstrÚdispatchú"_Dispatch[QueryableAttribute[Any]]Útarget_mapperú
Mapper[_T]Úkwr   c                ó˜   •—  t          ¦   «         j        ||d |fi |¤Ž || _        t          | _        |rt          |¦  «        | _        d S d S rS   )ÚsuperrO   r‡   ÚWriteOnlyCollectionr€   Útupler~   )rM   r�   rƒ   r…   r‡   r~   r‰   Ú	__class__s          €rN   rO   zWriteOnlyAttributeImpl.__init__¤   s]   ø€ ð 	�‰ŒÔ˜  d¨HÐ;Ð;¸Ð;Ð;Ð;Ø*ˆÔÝ.ˆÔØð 	,Ý! (™OœOˆDŒMˆMˆMð	,ð 	,rP   rB   úInstanceState[Any]Údict_r+   rD   r   rG   ú8Union[util.OrderedIdentitySet, WriteOnlyCollection[Any]]c                ó–   — |t           j        z  s%|                      |t           j        ¦  «        j        S |                      | |¦  «        S rS   )r   rJ   Ú_get_collection_historyÚPASSIVE_NO_INITIALIZEr<   r€   )rM   rB   r�   rD   s       rN   ÚgetzWriteOnlyAttributeImpl.get³   sO   € ð �Ô+Ñ+ð 	1Ø×/Ò/Ø•{Ô8ñô äðð ×#Ò# D¨%Ñ0Ô0Ð0rP   .Ú	user_dataúLiteral[None]ú Literal[PassiveFlag.PASSIVE_OFF]r/   c                ó   — d S rS   rv   ©rM   rB   r�   r–   rD   s        rN   Úget_collectionz%WriteOnlyAttributeImpl.get_collectionÀ   ó	   € ð  ˜CrP   r.   c                ó   — d S rS   rv   rš   s        rN   r›   z%WriteOnlyAttributeImpl.get_collectionÉ   rœ   rP   ú$Optional[_AdaptedCollectionProtocol]úIUnion[Literal[LoaderCallableStatus.PASSIVE_NO_RESULT], CollectionAdapter]c                ó   — d S rS   rv   rš   s        rN   r›   z%WriteOnlyAttributeImpl.get_collectionÒ   s	   € ð €srP   Nc                ó°   — |t           j        z  s|                      ||¦  «        j        }n|                      ||¦  «        }|j        }t          |¦  «        S rS   )r   rJ   r“   r<   rW   ÚDynamicCollectionAdapter)rM   rB   r�   r–   rD   ÚdataÚhistorys          rN   r›   z%WriteOnlyAttributeImpl.get_collectionÝ   sY   € ð �Ô+Ñ+ð 	0Ø×/Ò/°°wÑ?Ô?ÔKˆDˆDà×2Ò2°5¸'ÑBÔBˆGØÔ/ˆDÝ'¨Ñ-Ô-Ð-rP   úattributes.AttributeEventTokenc                ó@   — t          j        | t           j        ¦  «        S rS   )r   r,   Ú	OP_APPENDrV   s    rN   Ú_append_tokenz$WriteOnlyAttributeImpl._append_tokenî   ó   € åÔ-¨dµJÔ4HÑIÔIÐIrP   c                ó@   — t          j        | t           j        ¦  «        S rS   )r   r,   Ú	OP_REMOVErV   s    rN   Ú_remove_tokenz$WriteOnlyAttributeImpl._remove_tokenò   r©   rP   rh   Ú	initiatorúOptional[AttributeEventToken]Úcollection_historyúOptional[WriteOnlyHistory[Any]]rH   c                ó  — |€|                       ||¦  «        }|                     |¦  «         | j        j        D ]} ||||p| j        ¦  «        }Œ| j        r-|�-|                      t          j        |¦  «        |d¦  «         d S d S d S ©NT)	Ú_modified_eventrl   r…   Úappendr¨   ÚtrackparentÚsethasparentr   Úinstance_state©rM   rB   r�   rh   r­   r¯   Úfns          rN   Úfire_append_eventz(WriteOnlyAttributeImpl.fire_append_eventö   s³   € ð Ð%Ø!%×!5Ò!5°e¸UÑ!CÔ!CÐà×$Ò$ UÑ+Ô+Ð+à”-Ô&ð 	Fð 	FˆBØ�B�u˜e YÐ%D°$Ô2DÑEÔEˆEˆEàÔð 	M Ð 1Ø×Ò�jÔ7¸Ñ>Ô>ÀÀtÑLÔLÐLÐLÐLð	Mð 	MÐ 1Ð 1rP   c                ó
  — |€|                       ||¦  «        }|                     |¦  «         | j        r+|�)|                      t	          j        |¦  «        |d¦  «         | j        j        D ]} ||||p| j        ¦  «         Œd S )NF)	r³   ro   rµ   r¶   r   r·   r…   rn   r¬   r¸   s          rN   Úfire_remove_eventz(WriteOnlyAttributeImpl.fire_remove_event	  s¥   € ð Ð%Ø!%×!5Ò!5°e¸UÑ!CÔ!CÐà×&Ò& uÑ-Ô-Ð-àÔð 	N Ð 1Ø×Ò�jÔ7¸Ñ>Ô>ÀÀuÑMÔMÐMà”-Ô&ð 	>ð 	>ˆBØˆBˆu�e˜YÐ<¨$Ô*<Ñ=Ô=Ð=Ð=ð	>ð 	>rP   úWriteOnlyHistory[Any]c                óê   — | j         |j        vr.|                      | |t          j        ¦  «        |j        | j         <   |                     || t          ¦  «         d|| j         <   |j        | j                  S r²   )rƒ   Úcommitted_stater   r   ÚPASSIVE_NO_FETCHr³   r   )rM   rB   r�   s      rN   r³   z&WriteOnlyAttributeImpl._modified_event  st   € ð Œ8˜5Ô0Ð0Ð0Ø.2×.IÒ.IØ�e�[Ô9ñ/ô /ˆEÔ! $¤(Ñ+ð 	×Ò˜e T­9Ñ5Ô5Ð5ð ˆˆdŒh‰ØÔ$ T¤XÔ.Ð.rP   Ú	check_oldÚpopÚ_adaptc	                óœ  — |r|j         | j         u rd S |r|€d S |}	t          |	¦  «        }
|j        rI| j        st	          j        d| › d�¦  «        ‚t          j        |                      |||¬¦  «        ¦  «        }|  	                    ||¦  «        }|j        s|j
        }n|                     |j
        ¦  «        }|                     |
¦  «        }t          j        |
¦  «                             |¦  «        }|                     |¦  «        }|
D ] }||v r|                      |||d |¬¦  «         Œ!|D ]}|                      |||d |¬¦  «         Œd S )NzCollection "zV" does not support implicit iteration; collection replacement operations can't be used©rD   )r¯   )Úparent_tokenrT   Úhas_identityr{   r   rK   r!   ÚIdentitySetr•   r³   r<   rU   r]   r\   rº   r¼   )rM   rB   r�   rh   r­   rD   rÁ   rÂ   rÃ   ÚiterableÚ
new_valuesÚold_collectionr¯   Ú	constantsÚ	additionsÚremovalsÚmembers                    rN   ÚsetzWriteOnlyAttributeImpl.set+  sÍ  € ð ð 	˜Ô/°4Ô3DÐDÐDØˆFàð 	�5�=ØˆFàˆÝ˜(‘^”^ˆ
ØÔð 		ØÔ3ð ÝÔ-ð$ 4ð $ð $ð $ñô ð õ
 "Ô-Ø—’˜ ¨w�Ñ7Ô7ñô ˆNð "×1Ò1°%¸Ñ?Ô?ÐØÔ!ð 	Ø/Ô;ˆNˆNà+×1Ò1Ø"Ô.ñô ˆNð #×/Ò/°
Ñ;Ô;ˆ	ÝÔ$ ZÑ0Ô0×;Ò;¸IÑFÔFˆ	Ø!×,Ò,¨YÑ7Ô7ˆà ð 	ð 	ˆFØ˜Ð"Ð"Ø×&Ò&ØØØØØ'9ð 'ñ ô ð øð ð 	ð 	ˆFØ×"Ò"ØØØØØ#5ð #ñ ô ð ð ð	ð 	rP   ÚargsÚkwargsr   c                ó   — t          ¦   «         ‚rS   ©ÚNotImplementedError)rM   rÑ   rÒ   s      rN   r"   zWriteOnlyAttributeImpl.deleteh  s   € Ý!Ñ#Ô#Ð#rP   c                ó    — t          d¦  «        ‚)Nz7Dynamic attributes don't support collection population.rÔ   )rM   rB   r�   rh   s       rN   Úset_committed_valuez*WriteOnlyAttributeImpl.set_committed_valuek  s   € õ "ØEñ
ô 
ð 	
rP   rZ   c                óV   — |                       ||¦  «        }|                     ¦   «         S rS   )r“   rb   ©rM   rB   r�   rD   Úcs        rN   Úget_historyz"WriteOnlyAttributeImpl.get_historyr  s'   € ð ×(Ò(¨°Ñ8Ô8ˆØ�|Š|‰~Œ~ÐrP   ú$List[Tuple[InstanceState[Any], Any]]c                óP   — |                       ||¦  «        }d„ |j        D ¦   «         S )Nc                ó:   — g | ]}t          j        |¦  «        |f‘ŒS rv   )r   r·   )Ú.0Úxs     rN   ú
<listcomp>z:WriteOnlyAttributeImpl.get_all_pending.<locals>.<listcomp>‚  s(   € ÐGÐGÐG°a•Ô*¨1Ñ-Ô-¨qÐ1ÐGÐGÐGrP   )r“   rY   rÙ   s        rN   Úget_all_pendingz&WriteOnlyAttributeImpl.get_all_pending{  s/   € ð ×(Ò(¨°Ñ8Ô8ˆØGÐG¸1¼;ÐGÑGÔGÐGrP   c                óè   — | j         |j        v r|j        | j                  }n!|                      | |t          j        ¦  «        }|j        r(|t          j        z  r|                      | |||¬¦  «        S |S )N)rE   )rƒ   r¿   r   r   rÀ   rÇ   ÚINIT_OK)rM   rB   rD   rÚ   s       rN   r“   z.WriteOnlyAttributeImpl._get_collection_history„  s�   € ð Œ8�uÔ,Ð,Ð,ØÔ% d¤hÔ/ˆAˆAà×+Ò+Ø�e�[Ô9ñô ˆAð Ôð 	 7­[Ô-@Ñ#@ð 	Ø×.Ò.Ø�e˜W¨qð /ñ ô ð ð ˆHrP   c                óB   — || ur|                       ||||¦  «         d S d S rS   )rº   ©rM   rB   r�   rh   r­   rD   s         rN   r´   zWriteOnlyAttributeImpl.append–  ó7   € ð ˜DÐ Ð Ø×"Ò" 5¨%°¸	ÑBÔBÐBÐBÐBð !Ð rP   c                óB   — || ur|                       ||||¦  «         d S d S rS   )r¼   ræ   s         rN   rn   zWriteOnlyAttributeImpl.remove¡  rç   rP   c                ó:   — |                       |||||¬¦  «         d S )NrÅ   )rn   ræ   s         rN   rÂ   zWriteOnlyAttributeImpl.pop¬  s&   € ð 	�Š�E˜5 %¨¸GˆÑDÔDÐDÐDÐDrP   )r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r~   r1   r‰   r   )rB   r�   r�   r+   rD   r   rG   r‘   )..)
rB   r�   r�   r+   r–   r—   rD   r˜   rG   r/   )
rB   r�   r�   r+   r–   r.   rD   r   rG   r/   )
rB   r�   r�   r+   r–   rž   rD   r   rG   rŸ   )rG   r¥   rS   )rB   r�   r�   r+   rh   r   r­   r®   r¯   r°   rG   rH   )rB   r�   r�   r+   rG   r½   )rB   r�   r�   r+   rh   r   r­   r®   rD   r   rÁ   r   rÂ   r>   rÃ   r>   rG   rH   )rÑ   r   rÒ   r   rG   r   )rB   r�   r�   r+   rh   r   rG   r   )rB   r�   r�   r+   rD   r   rG   rZ   )rB   r�   r�   r+   rD   r   rG   rÜ   )rB   r�   rD   r   rG   r½   )rB   r�   r�   r+   rh   r   r­   r®   rD   r   rG   rH   )&rp   rq   rr   rx   rt   ry   rz   r{   r|   r}   r~   r:   r   rO   r   ÚPASSIVE_OFFr•   r   r›   r!   Úmemoized_propertyr¨   r¬   rº   r¼   r³   rÐ   r"   r×   rÀ   rÛ   r”   râ   r“   r´   rn   rÂ   Ú__classcell__)rŽ   s   @rN   rA   rA   –   ss  ø€ € € € € € ð €LÐÐÐÑØ*/Ð!Ð/Ð/Ð/Ñ/Ø %ÐÐ%Ð%Ð%Ñ%Ø(-ÐÐ-Ð-Ð-Ñ-Ø€JÐÐÐÑØ€GÐÐÐÑØ(*€HÐ*Ð*Ð*Ñ*Ø:JÐÐJÐJÐJÑJà/Ð/Ð/Ñ/ð,ð ,ð ,ð ,ð ,ð ,ð&  +Ô6ð	1ð 1ð 1ð 1ð 1ð ð
 $'Ø47ð ð  ð  ð  ñ „Xð ð ð
 14Ø"ð ð  ð  ð  ñ „Xð ð ð
 ;>Ø"ðð ð ð ñ „Xðð ;?Ø*Ô6ð.ð .ð .ð .ð .ð" 
ÔðJð Jð Jñ ÔðJð 
ÔðJð Jð Jñ ÔðJð ?CðMð Mð Mð Mð Mð2 ?Cð>ð >ð >ð >ð >ð&/ð /ð /ð /ð( 48Ø*Ô6ØØØð;ð ;ð ;ð ;ð ;ðz$ð $ð $ð $ð
ð 
ð 
ð 
ð  +Ô;ð	ð ð ð ð ð  +Ô@ð	Hð Hð Hð Hð Hðð ð ð ð0  +Ô;ð	Cð 	Cð 	Cð 	Cð 	Cð"  +Ô;ð	Cð 	Cð 	Cð 	Cð 	Cð"  +Ô;ðEð Eð Eð Eð Eð Eð Eð Eð ErP   rA   Ú
write_only)Úlazyc                  ó   — e Zd ZeZdd„ZdS )ÚWriteOnlyLoaderÚmapperúMapper[Any]rG   rH   c           	     ó(  — d| _         | j        r$| 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        ¬¦  «         d S )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   rK   r   Ú_register_attributerõ   rñ   r~   r€   )rM   rñ   s     rN   Úinit_class_attributez$WriteOnlyLoader.init_class_attribute¼  s±   € Ø"ˆÔØŒ|ð 	˜tÔ3Ô=ÝÔ ÝÔ!ðF
ð  
ð  
õ Ô)ð!à#'Ô#7ñ8ñô ð õ 	Ô&ØÔ ØØØ”ØÔ.Ô5ØÔ)Ô2ØÔ,Ô8ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
rP   N)rñ   rò   rG   rH   )rp   rq   rr   rA   rõ   rý   rv   rP   rN   rð   rð   ·  s/   € € € € € ð (€Jð
ð 
ð 
ð 
ð 
ð 
rP   rð   c                  óF   — 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	dS )r¢   z9simplified CollectionAdapter for internal API consistencyúCollection[Any]r£   c                ó   — || _         d S rS   )r£   )rM   r£   s     rN   rO   z!DynamicCollectionAdapter.__init__Ø  s   € ØˆŒ	ˆ	ˆ	rP   rG   úIterator[Any]c                ó*   — t          | j        ¦  «        S rS   )Úiterr£   rV   s    rN   Ú__iter__z!DynamicCollectionAdapter.__iter__Û  s   € Ý�D”I‰ŒÐrP   rH   c                ó   — d S rS   rv   rV   s    rN   Ú_reset_emptyz%DynamicCollectionAdapter._reset_emptyÞ  s   € ØˆrP   Úintc                ó*   — t          | j        ¦  «        S rS   )Úlenr£   rV   s    rN   Ú__len__z DynamicCollectionAdapter.__len__á  s   € Ý�4”9‰~Œ~ÐrP   r>   c                ó   — dS r²   rv   rV   s    rN   Ú__bool__z!DynamicCollectionAdapter.__bool__ä  s   € ØˆtrP   N)r£   rÿ   )rG   r  )rG   rH   )rG   r  )rG   r>   )
rp   rq   rr   rs   rt   rO   r  r  r
  r  rv   rP   rN   r¢   r¢   Ó  sŒ   € € € € € € ØCÐCàÐÐÑðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð ð rP   r¢   c                  óH   — 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	dS )ÚAbstractCollectionWriterzsVirtual collection which includes append/remove methods that synchronize
    into the attribute event system.

    rv   r7   ÚinstancezTuple[FromClause, ...]Ú	_from_objr@   rA   rB   rC   c                óš  — |                      ¦   «         }t          r|sJ ‚|| _        || _        t	          |¦  «        }|j        | j        j                 }|j        �&|j         	                    ¦   «         |j        f| _
        nd| _
        |                     |d¬¦  «        f| _        | j        j        r| j        j        | _        d S d| _        d S )Nrv   F)Úalias_secondary)Úobjr   r  r@   r   Ú_propsrƒ   Ú	secondaryrñ   Ú__clause_element__r  Ú_with_parentÚ_where_criteriar~   Ú_order_by_clauses)rM   r@   rB   r  rñ   Úprops         rN   rO   z!AbstractCollectionWriter.__init__ô  sÌ   € Ø—9’9‘;”;ˆÝð 	ØˆOˆO�8Ø ˆŒØˆŒ	å˜xÑ(Ô(ˆØŒ}˜TœYœ]Ô+ˆàŒ>Ð%ð #œk×<Ò<Ñ>Ô>ÀÄÐOˆDŒNˆNàˆDŒNð ×Ò˜h¸ÐÑ>Ô>ð 
ˆÔð Œ9Ôð 	(Ø%)¤YÔ%7ˆDÔ"Ð"Ð"à%'ˆDÔ"Ð"Ð"rP   ÚiteratorúIterable[_T]rG   rH   c                ó¦   — |D ]M}| j                              t          j        | j        ¦  «        t          j        | j        ¦  «        |d ¦  «         ŒNd S rS   )r@   r´   r   r·   r  Úinstance_dict)rM   r  Úitems      rN   Ú_add_all_implz&AbstractCollectionWriter._add_all_impl  s`   € Øð 	ð 	ˆDØŒI×ÒÝÔ)¨$¬-Ñ8Ô8ÝÔ(¨¬Ñ7Ô7ØØñ	ô ð ð ð	ð 	rP   r  c                óœ   — | j                              t          j        | j        ¦  «        t          j        | j        ¦  «        |d ¦  «         d S rS   )r@   rn   r   r·   r  r  ©rM   r  s     rN   Ú_remove_implz%AbstractCollectionWriter._remove_impl  sL   € ØŒ	×ÒÝÔ% d¤mÑ4Ô4ÝÔ$ T¤]Ñ3Ô3ØØñ		
ô 	
ð 	
ð 	
ð 	
rP   N)r@   rA   rB   rC   ©r  r  rG   rH   ©r  r7   rG   rH   )
rp   rq   rr   rs   r   Ú	__slots__rt   rO   r   r#  rv   rP   rN   r  r  è  s�   € € € € € € ðð ð
 ð Øˆ	à€L€L�LØ%Ð%Ð%Ñ%ð(ð (ð (ð (ðBð ð ð ð
ð 
ð 
ð 
ð 
ð 
rP   r  c                  óV   — 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dS )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  r@   r  r  r  rG   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().)Ú	TypeErrorrV   s    rN   r  zWriteOnlyCollection.__iter__@  s   € ÝðMñ
ô 
ð 	
rP   úSelect[Tuple[_T]]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$   r@   r‡   Úwherer  r  Úselect_fromr  r~   )rM   Ústmts     rN   r$   zWriteOnlyCollection.selectG  s_   € ð
 5�v�d”iÔ-Ñ.Ô.Ô4°dÔ6JÐKˆØŒ>ð 	5Ø#�4Ô# T¤^Ð4ˆDØÔ!ð 	:Ø �4”= $Ô"8Ð9ˆDØˆrP   r'   c                ó†  — t          | j        ¦  «        }|j        }|j        | j        j                 }|j        t          j        urt          j
        d¦  «        ‚i }|j        D ];\  }}|                     |||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_rv   )r   r  rñ   r  r@   rƒ   rù   r   rú   r   rK   Úsynchronize_pairsÚ_get_attr_w_warn_on_noneÚdictr   r#   r‡   Úvalues)rM   rB   rñ   r  r�   ÚlÚrr¹   s           rN   r#   zWriteOnlyCollection.insertS  s×   € õ ˜œÑ&Ô&ˆØ”ˆØŒ}˜TœYœ]Ô+ˆàŒ>Õ!6Ô!@Ð@Ð@ÝÔ)ð/ñô ð ð !#ˆàÔ*ð 	9ð 	9‰DˆAˆqØ×.Ò.ØØØ”
Øñ	ô ˆBõ % T°RÐ8Ñ8Ô8ˆE�!”%‰LˆLà5�v�d”iÔ-Ñ.Ô.Ô5Ð>Ð>¸Ð>Ð>Ð>rP   r(   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%   r@   r‡   r,  r  rV   s    rN   r%   zWriteOnlyCollection.update{  ó$   € ð
 5�v�d”iÔ-Ñ.Ô.Ô4°dÔ6JÐKÐKrP   r&   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"   r@   r‡   r,  r  rV   s    rN   r"   zWriteOnlyCollection.delete‚  r8  rP   r  r  rH   c                ó0   — |                       |¦  «         dS )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   )rM   r  s     rN   Úadd_allzWriteOnlyCollection.add_all‰  s   € ð 	×Ò˜8Ñ$Ô$Ð$Ð$Ð$rP   r  r7   c                ó2   — |                       |g¦  «         dS )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     rN   rj   zWriteOnlyCollection.add’  s    € ð 	×Ò˜D˜6Ñ"Ô"Ð"Ð"Ð"rP   c                ó0   — |                       |¦  «         dS )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     rN   rn   zWriteOnlyCollection.remove›  s   € ð 	×Ò˜$ÑÔÐÐÐrP   N)rG   r   )rG   r*  )rG   r'   )rG   r(   )rG   r&   r$  r%  )rp   rq   rr   rs   r&  r  r$   r#   r%   r"   r<  rj   rn   rv   rP   rN   rŒ   rŒ   '  sÎ   € € € € € ðð ð €Ið
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð&?ð &?ð &?ð &?ðPLð Lð Lð LðLð Lð Lð Lð%ð %ð %ð %ð#ð #ð #ð #ð ð  ð  ð  ð  ð  rP   rŒ   N)Ors   Ú
__future__r   Útypingr   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!   Úsqlr"   r#   r$   r%   Úsql.dmlr&   r'   r(   Úutil.typingr)   r*   Ú_typingr+   r,   r-   Úcollectionsr.   r/   rñ   r0   r1   rB   r2   r3   Úeventr4   Úsql.selectabler5   r6   r7   r:   ÚHasCollectionAdapterÚAttributeImplrA   Úclass_loggerÚRelationshipPropertyÚstrategy_forÚAbstractRelationshipLoaderÚ
Identifiedrð   r¢   r  rŒ   rv   rP   rN   ú<module>rR     s(  ðð	ð 	ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !àð (Ø$Ð$Ð$Ð$Ð$Ð$Ø&Ð&Ð&Ð&Ð&Ð&Ø/Ð/Ð/Ð/Ð/Ð/Ø*Ð*Ð*Ð*Ð*Ð*Ø7Ð7Ð7Ð7Ð7Ð7Ø.Ð.Ð.Ð.Ð.Ð.ØÐÐÐÐÐØ6Ð6Ð6Ð6Ð6Ð6Ø$Ð$Ð$Ð$Ð$Ð$Ø"Ð"Ð"Ð"Ð"Ð"Ø!Ð!Ð!Ð!Ð!Ð!Ø+Ð+Ð+Ð+Ð+Ð+Ø'Ð'Ð'Ð'Ð'Ð'à€WˆT˜ÐÑÔ€ðF*ð F*ð F*ð F*ð F*�w˜r”{ñ F*ô F*ð F*ðR^Eð ^Eð ^Eð ^Eð ^EØÔ# ZÔ%=ñ^Eô ^Eð ^EðB	 ÔØÔ#×0Ò0°lÐ0ÑCÔCð
ð 
ð 
ð 
ð 
�jÔ;¸S¼^ñ 
ô 
ñ DÔCñ Ôð
ð4ð ð ð ð ñ ô ð ð*<
ð <
ð <
ð <
ð <
˜w rœ{ñ <
ô <
ð <
ð~{ ð { ð { ð { ð { Ð2°2Ô6ñ { ô { ð { ð { ð { rP   