Ë
    V.jÇY  ã                  ó¼  — 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j†                  ejˆ                  «      ZEe!jŒ                  ejŽ                  j‘                  d<¬=«       G d>„ d?ej’                  e!j”                  «      «       «       ZK G d@„ dA«      ZL G dB„ dCeeA   «      ZM G dD„ dEeMeA   «      ZNyF)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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=   r?   r!   ÚOrderedIdentitySet)ÚselfÚattrÚstateÚpassiveÚapply_tos        úZC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\sqlalchemy/orm/writeonly.pyÚ__init__zWriteOnlyHistory.__init__U   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;   ©rD   s    rI   Úadded_plus_unchangedz%WriteOnlyHistory.added_plus_unchangedp   s$   € ä�D×$Ñ$×*Ñ*¨4×+?Ñ+?Ó@ÓAÐArK   c                ó�   — t        | j                  j                  | j                  «      j                  | j                  «      «      S rM   )rN   r<   rO   r;   r=   rP   s    rI   Ú	all_itemszWriteOnlyHistory.all_itemst   s=   € äØ×Ñ×"Ñ" 4×#7Ñ#7Ó8×>Ñ>Ø×"Ñ"óó
ð 	
rK   c                ó’  — | j                   rf| j                  j                  | j                  «      }| j                  j                  | j                  «      }| j                  j                  |«      }n$| j                  | j                  | j                  }}}t        j                  t        |«      t        |«      t        |«      «      S rM   )	r?   r<   Ú
differencer;   r=   Úintersectionr   ÚHistoryrN   )rD   ÚaddedÚdeletedÚ	unchangeds       rI   Ú
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ÐNrK   c                ó2   — t        | j                  «      |   S rM   )rN   r<   )rD   Úindexs     rI   ÚindexedzWriteOnlyHistory.indexed‰   s   € Ü�D×$Ñ$Ó% eÑ,Ð,rK   c                ó:   — | j                   j                  |«       y rM   )r<   Úadd©rD   Úvalues     rI   Ú	add_addedzWriteOnlyHistory.add_addedŒ   s   € Ø×Ñ×Ñ˜UÕ#rK   c                óŽ   — || j                   v r| j                   j                  |«       y | j                  j                  |«       y rM   )r<   Úremover=   r`   ra   s     rI   Úadd_removedzWriteOnlyHistory.add_removed�   s8   € Ø�D×$Ñ$Ñ$Ø×Ñ×#Ñ# EÕ*à×Ñ×"Ñ" 5Õ)rK   rM   )
rE   ÚWriteOnlyAttributeImplrF   úInstanceState[_T]rG   r   rH   zOptional[WriteOnlyHistory[_T]]ÚreturnÚNone)ri   zList[_T])ri   úattributes.History)r]   zUnion[int, slice]ri   zUnion[List[_T], _T])rb   r7   ri   rj   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rJ   ÚpropertyrQ   rS   r[   r^   rc   rf   © rK   rI   r:   r:   M   s–   … ÙNà,Ó,Ø(Ó(Ø*Ó*ØÓð 48ð/à$ð/ð !ð/ð ð	/ð
 1ð/ð 
ó/ð6 òBó ðBð ò
ó ð
óOó-ó$ô*rK   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	 	 	 	 	 	 d/d„Zdej                  dddf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d0d„Zd1d„Z	 	 	 	 	 	 	 	 d2d„Zej:                  f	 	 	 	 	 	 	 d3d „Zej>                  f	 	 	 	 	 	 	 d4d!„Z 	 	 	 	 	 	 d5d"„Z!ej:                  f	 	 	 	 	 	 	 	 	 	 	 d6d#„Z"ej:                  f	 	 	 	 	 	 	 	 	 	 	 d6d$„Z#ej:                  f	 	 	 	 	 	 	 	 	 	 	 d6d%„Z$ˆ xZ%S )7rg   Tr>   Úuses_objectsFÚdefault_accepts_scalar_loaderÚsupports_populationÚ_supports_dynamic_iterationÚ
collectionÚdynamicrr   r1   Úorder_byzType[WriteOnlyHistory[Any]]Úcollection_history_clszType[WriteOnlyCollection[Any]]Úquery_classc                óv   •— t        ‰| �  ||d |fi |¤Ž || _        t        | _        |rt        |«      | _        y y rM   )ÚsuperrJ   Útarget_mapperÚWriteOnlyCollectionr|   Útuplerz   )rD   Úclass_ÚkeyÚdispatchr   rz   ÚkwÚ	__class__s          €rI   rJ   zWriteOnlyAttributeImpl.__init__¤   s@   ø€ ô 	‰Ñ˜  d¨HÑ;¸Ò;Ø*ˆÔÜ.ˆÔÙÜ! (›OˆD�Mð rK   c                ó    — |t         j                  z  s*| j                  |t         j                  «      j                  S | j                  | |«      S rM   )r   rA   Ú_get_collection_historyÚPASSIVE_NO_INITIALIZEr<   r|   )rD   rF   Údict_rG   s       rI   ÚgetzWriteOnlyAttributeImpl.get³   sJ   € ð œ×+Ñ+Ò+Ø×/Ñ/Ø”{×8Ñ8óç‰kðð ×#Ñ# D¨%Ó0Ð0rK   c                 ó   — y rM   rr   ©rD   rF   rŠ   Ú	user_datarG   s        rI   Úget_collectionz%WriteOnlyAttributeImpl.get_collectionÀ   ó   € ð  rK   c                 ó   — y rM   rr   r�   s        rI   r�   z%WriteOnlyAttributeImpl.get_collectionÉ   r�   rK   c                 ó   — y rM   rr   r�   s        rI   r�   z%WriteOnlyAttributeImpl.get_collectionÒ   s   € ð rK   Nc                óÈ   — |t         j                  z  s'| j                  ||«      j                  }t        |«      S | j                  ||«      }|j                  }t        |«      S rM   )r   rA   rˆ   r<   rQ   ÚDynamicCollectionAdapter)rD   rF   rŠ   rŽ   rG   ÚdataÚhistorys          rI   r�   z%WriteOnlyAttributeImpl.get_collectionÝ   sa   € ð œ×+Ñ+Ò+Ø×/Ñ/°°wÓ?×KÑKˆDô (¨Ó-Ð-ð ×2Ñ2°5¸'ÓBˆGØ×/Ñ/ˆDÜ'¨Ó-Ð-rK   c                óJ   — t        j                  | t         j                  «      S rM   )r   r,   Ú	OP_APPENDrP   s    rI   Ú_append_tokenz$WriteOnlyAttributeImpl._append_tokenî   ó   € ô ×-Ñ-¨d´J×4HÑ4HÓIÐIrK   c                óJ   — t        j                  | t         j                  «      S rM   )r   r,   Ú	OP_REMOVErP   s    rI   Ú_remove_tokenz$WriteOnlyAttributeImpl._remove_tokenô   rš   rK   c                ó   — |€| j                  ||«      }|j                  |«       | j                  j                  D ]  } ||||xs | j                  «      }Œ | j
                  r*|�'| j                  t        j                  |«      |d«       y y y ©NT)	Ú_modified_eventrc   r„   Úappendr™   ÚtrackparentÚsethasparentr   Úinstance_state©rD   rF   rŠ   rb   Ú	initiatorÚcollection_historyÚfns          rI   Úfire_append_eventz(WriteOnlyAttributeImpl.fire_append_eventú   s�   € ð Ð%Ø!%×!5Ñ!5°e¸UÓ!CÐà×$Ñ$ UÔ+à—-‘-×&Ô&ˆBÙ�u˜e YÒ%D°$×2DÑ2DÓE‰Eð 'ð ×Ò Ð 1Ø×Ñœj×7Ñ7¸Ó>ÀÀtÕLð !2ÐrK   c                ó  — |€| j                  ||«      }|j                  |«       | j                  r(|�&| j                  t	        j
                  |«      |d«       | j                  j                  D ]  } ||||xs | j                  «       Œ y )NF)	r    rf   r¢   r£   r   r¤   r„   re   r�   r¥   s          rI   Úfire_remove_eventz(WriteOnlyAttributeImpl.fire_remove_event  s�   € ð Ð%Ø!%×!5Ñ!5°e¸UÓ!CÐà×&Ñ& uÔ-à×Ò Ð 1Ø×Ñœj×7Ñ7¸Ó>ÀÀuÔMà—-‘-×&Ô&ˆBÙˆu�e˜YÒ<¨$×*<Ñ*<Õ=ñ 'rK   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   )rD   rF   rŠ   s      rI   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Ñ.Ð.rK   c	                ó¤  — |r|j                   | j                   u ry |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©rG   )r§   )Úparent_tokenrN   Úhas_identityrw   r   rB   r!   ÚIdentitySetr‹   r    r<   rO   rV   rU   r©   r«   )rD   rF   rŠ   rb   r¦   rG   Ú	check_oldÚpopÚ_adaptÚiterableÚ
new_valuesÚold_collectionr§   Ú	constantsÚ	additionsÚremovalsÚmembers                    rI   ÚsetzWriteOnlyAttributeImpl.set/  sp  € ñ ˜×/Ñ/°4×3DÑ3DÑDØá�5�=ØàˆÜ˜(“^ˆ
Ø×ÒØ×3Ò3Ü×-Ñ-Ø" 4 &ð )$ð $óð ô
 "×-Ñ-Ø—‘˜ ¨w�Ó7óˆNð "×1Ñ1°%¸Ó?ÐØ×!Ò!Ø/×;Ñ;‰Nà+×1Ñ1Ø"×.Ñ.óˆNð #×/Ñ/°
Ó;ˆ	Ü×$Ñ$ ZÓ0×;Ñ;¸IÓFˆ	Ø!×,Ñ,¨YÓ7ˆã ˆFØ˜Ò"Ø×&Ñ&ØØØØØ'9ð 'õ ð !ó ˆFØ×"Ñ"ØØØØØ#5ð #õ ñ rK   c                ó   — t        «       ‚rM   ©ÚNotImplementedError)rD   ÚargsÚkwargss      rI   r"   zWriteOnlyAttributeImpl.deletel  s   € Ü!Ó#Ð#rK   c                ó   — t        d«      ‚)Nz7Dynamic attributes don't support collection population.rÀ   )rD   rF   rŠ   rb   s       rI   Úset_committed_valuez*WriteOnlyAttributeImpl.set_committed_valueo  s   € ô "ØEó
ð 	
rK   c                óF   — | j                  ||«      }|j                  «       S rM   )rˆ   r[   )rD   rF   rŠ   rG   Úcs        rI   Úget_historyz"WriteOnlyAttributeImpl.get_historyv  s"   € ð ×(Ñ(¨°Ó8ˆØ�|‰|‹~ÐrK   c                óŽ   — | j                  ||«      }|j                  D �cg c]  }t        j                  |«      |f‘Œ c}S c c}w rM   )rˆ   rS   r   r¤   )rD   rF   rŠ   rG   rÇ   Úxs         rI   Úget_all_pendingz&WriteOnlyAttributeImpl.get_all_pending  sB   € ð ×(Ñ(¨°Ó8ˆØ;<¿;º;ÓG¹;°a”×*Ñ*¨1Ó-¨qÒ1¸;ÑGÐGùÒGs   ¡Ac                ó  — | j                   |j                  v r|j                  | j                      }n!| j                  | |t        j                  «      }|j
                  r(|t        j                  z  r| j                  | |||¬«      S |S )N)rH   )rƒ   r­   r{   r   r®   r²   ÚINIT_OK)rD   rF   rG   rÇ   s       rI   rˆ   z.WriteOnlyAttributeImpl._get_collection_historyˆ  s‡   € ð �8‰8�u×,Ñ,Ñ,Ø×%Ñ% d§h¡hÑ/‰Aà×+Ñ+Ø�eœ[×9Ñ9óˆAð ×Ò 7¬[×-@Ñ-@Ò#@Ø×.Ñ.Ø�e˜W¨qð /ó ð ð ˆHrK   c                ó6   — || ur| j                  ||||«       y y rM   )r©   ©rD   rF   rŠ   rb   r¦   rG   s         rI   r¡   zWriteOnlyAttributeImpl.appendš  ó%   € ð ˜DÑ Ø×"Ñ" 5¨%°¸	ÕBð !rK   c                ó6   — || ur| j                  ||||«       y y rM   )r«   rÏ   s         rI   re   zWriteOnlyAttributeImpl.remove¥  rÐ   rK   c                ó0   — | j                  |||||¬«       y )Nr°   )re   rÏ   s         rI   rµ   zWriteOnlyAttributeImpl.pop°  s   € ð 	�‰�E˜5 %¨¸GˆÕDrK   )r‚   z#Union[Type[Any], AliasedClass[Any]]rƒ   Ústrr„   z"_Dispatch[QueryableAttribute[Any]]r   z
Mapper[_T]rz   r1   r…   r   )rF   úInstanceState[Any]rŠ   r+   rG   r   ri   z8Union[util.OrderedIdentitySet, WriteOnlyCollection[Any]])..)
rF   rÔ   rŠ   r+   rŽ   zLiteral[None]rG   z Literal[PassiveFlag.PASSIVE_OFF]ri   r/   )
rF   rÔ   rŠ   r+   rŽ   r.   rG   r   ri   r/   )
rF   rÔ   rŠ   r+   rŽ   z$Optional[_AdaptedCollectionProtocol]rG   r   ri   zIUnion[Literal[LoaderCallableStatus.PASSIVE_NO_RESULT], CollectionAdapter])ri   zattributes.AttributeEventTokenrM   )rF   rÔ   rŠ   r+   rb   r   r¦   úOptional[AttributeEventToken]r§   zOptional[WriteOnlyHistory[Any]]ri   rj   )rF   rÔ   rŠ   r+   ri   úWriteOnlyHistory[Any])rF   rÔ   rŠ   r+   rb   r   r¦   rÕ   rG   r   r´   r   rµ   r>   r¶   r>   ri   rj   )rÂ   r   rÃ   r   ri   r   )rF   rÔ   rŠ   r+   rb   r   ri   r   )rF   rÔ   rŠ   r+   rG   r   ri   rk   )rF   rÔ   rŠ   r+   rG   r   ri   z$List[Tuple[InstanceState[Any], Any]])rF   rÔ   rG   r   ri   rÖ   )rF   rÔ   rŠ   r+   rb   r   r¦   rÕ   rG   r   ri   rj   )&rl   rm   rn   rt   rp   ru   rv   rw   rx   ry   rz   r:   r{   rJ   r   ÚPASSIVE_OFFr‹   r   r�   r!   Úmemoized_propertyr™   r�   r©   r«   r    r¾   r"   rÅ   r®   rÈ   r‰   rË   rˆ   r¡   re   rµ   Ú__classcell__)r†   s   @rI   rg   rg   –   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à	'òJó ðJð ?CðMà!ðMð ðMð ð	Mð
 1ðMð <ðMð 
óMð2 ?Cð>à!ð>ð ð>ð ð	>ð
 1ð>ð <ð>ð 
ó>ð&/Ø'ð/Ø0=ð/à	ó/ð( 48Ø*×6Ñ6ØØØð;à!ð;ð ð;ð ð	;ð
 1ð;ð ð;ð ð;ð ð;ð ð;ð 
ó;óz$ð
Ø'ð
Ø0=ð
ØFIð
à	ó
ð  +×;Ñ;ð	à!ðð ðð ð	ð
 
óð  +×@Ñ@ð	Hà!ðHð ðHð ð	Hð
 
.óHðØ'ðØ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rK   rg   Ú
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   rz   r|   )Úis_class_levelÚuselistÚparent_propertyÚ	directionr   Ú	ONETOMANYÚ
MANYTOMANYr   rB   r   Ú_register_attributerà   Úmapperrz   r|   )rD   rè   s     rI   Úinit_class_attributez$WriteOnlyLoader.init_class_attributeÀ  s·   € Ø"ˆÔØ�|Š|˜t×3Ñ3×=Ñ=Ü× Ñ Ü×!Ñ!ðF
ñ  
ô ×)Ñ)ð!à#'×#7Ñ#7ñ8óð ô 	×&Ñ&Ø× Ñ ØØØ—‘Ø×.Ñ.×5Ñ5Ø×)Ñ)×2Ñ2Ø×,Ñ,×8Ñ8ö	
rK   N)rè   zMapper[Any]ri   rj   )rl   rm   rn   rg   rà   ré   rr   rK   rI   rÝ   rÝ   »  s   „ ð (€Jô
rK   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 rM   )r•   )rD   r•   s     rI   rJ   z!DynamicCollectionAdapter.__init__Ü  s	   € Øˆ�	rK   c                ó,   — t        | j                  «      S rM   )Úiterr•   rP   s    rI   Ú__iter__z!DynamicCollectionAdapter.__iter__ß  s   € Ü�D—I‘I‹ÐrK   c                 ó   — y rM   rr   rP   s    rI   Ú_reset_emptyz%DynamicCollectionAdapter._reset_emptyâ  s   € ØrK   c                ó,   — t        | j                  «      S rM   )Úlenr•   rP   s    rI   Ú__len__z DynamicCollectionAdapter.__len__å  s   € Ü�4—9‘9‹~ÐrK   c                 ó   — yrŸ   rr   rP   s    rI   Ú__bool__z!DynamicCollectionAdapter.__bool__è  s   € ØrK   N)r•   rë   )ri   zIterator[Any])ri   rj   )ri   Úint)ri   r>   )
rl   rm   rn   ro   rp   rJ   rï   rñ   rô   rö   rr   rK   rI   r”   r”   ×  s$   … ÙCà
ÓóóóóôrK   r”   c                  óF   — 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.

    rr   r7   ÚinstancezTuple[FromClause, ...]Ú	_from_objc                óÒ  — |j                  «       }t        r|sJ ‚|| _        || _        t	        |«      }|j
                  | j                  j                     }|j                  �,|j                  j                  «       |j                  f| _
        nd| _
        |j                  |d¬«      f| _        | j                  j                  r| j                  j                  | _        y d| _        y )Nrr   F)Úalias_secondary)Úobjr   rú   rE   r   Ú_propsrƒ   Ú	secondaryrè   Ú__clause_element__rû   Ú_with_parentÚ_where_criteriarz   Ú_order_by_clauses)rD   rE   rF   rú   rè   Úprops         rI   rJ   z!AbstractCollectionWriter.__init__ø  s½   € Ø—9‘9“;ˆÝÙˆO�8Ø ˆŒØˆŒ	ä˜xÓ(ˆØ�}‰}˜TŸY™YŸ]™]Ñ+ˆà�>‰>Ð%ð #Ÿk™k×<Ñ<Ó>ÀÇÁÐOˆD�NàˆDŒNð ×Ñ˜h¸ÐÓ>ð 
ˆÔð �9‰9×ÒØ%)§Y¡Y×%7Ñ%7ˆDÕ"à%'ˆDÕ"rK   c                óÂ   — |D ]Z  }| j                   j                  t        j                  | j                  «      t        j
                  | j                  «      |d «       Œ\ y rM   )rE   r¡   r   r¤   rú   Úinstance_dict)rD   ÚiteratorÚitems      rI   Ú_add_all_implz&AbstractCollectionWriter._add_all_impl  sH   € ÛˆDØ�I‰I×ÑÜ×)Ñ)¨$¯-©-Ó8Ü×(Ñ(¨¯©Ó7ØØõ	ñ rK   c                ó´   — | j                   j                  t        j                  | j                  «      t        j
                  | j                  «      |d «       y rM   )rE   re   r   r¤   rú   r  ©rD   r	  s     rI   Ú_remove_implz%AbstractCollectionWriter._remove_impl"  s>   € Ø�	‰	×ÑÜ×%Ñ% d§m¡mÓ4Ü×$Ñ$ T§]¡]Ó3ØØõ		
rK   N)rE   rg   rF   rh   ©r  zIterable[_T]ri   rj   ©r	  r7   ri   rj   )
rl   rm   rn   ro   r   Ú	__slots__rp   rJ   r
  r  rr   rK   rI   rù   rù   ì  s,   … ññ
 Øˆ	àƒLØ%Ó%ó(óBô
rK   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ú   rE   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().)Ú	TypeErrorrP   s    rI   rï   zWriteOnlyCollection.__iter__D  s   € ÜðMó
ð 	
rK   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$   rE   r   Úwherer  rû   Úselect_fromr  rz   )rD   Ústmts     rI   r$   zWriteOnlyCollection.selectK  sl   € ð
 5Œv�d—i‘i×-Ñ-Ó.×4Ñ4°d×6JÑ6JÐKˆØ�>Š>Ø#�4×#Ñ# T§^¡^Ð4ˆDØ×!Ò!Ø �4—=‘= $×"8Ñ"8Ð9ˆDØˆrK   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_rr   )r   rú   rè   rÿ   rE   rƒ   rä   r   rå   r   rB   Úsynchronize_pairsÚ_get_attr_w_warn_on_noneÚdictr   r#   r   Úvalues)rD   rF   rè   r  rŠ   ÚlÚrr¨   s           rI   r#   zWriteOnlyCollection.insertW  sÔ   € ô ˜Ÿ™Ó&ˆØ—‘ˆØ�}‰}˜TŸY™YŸ]™]Ñ+ˆà�>‰>Ô!6×!@Ñ!@Ñ@Ü×)Ñ)ð/óð ð !#ˆà×*Ô*‰DˆAˆqØ×.Ñ.ØØØ—
‘
Øó	ˆBô % T°RÔ8ˆE�!—%‘%ŠLð +ð 6Œv�d—i‘i×-Ñ-Ó.×5Ñ5Ñ>¸Ñ>Ð>rK   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%   rE   r   r  r  rP   s    rI   r%   zWriteOnlyCollection.update  ó,   € ð
 5Œv�d—i‘i×-Ñ-Ó.×4Ñ4°d×6JÑ6JÐKÐKrK   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"   rE   r   r  r  rP   s    rI   r"   zWriteOnlyCollection.delete†  r!  rK   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
  )rD   r  s     rI   Úadd_allzWriteOnlyCollection.add_all�  s   € ð 	×Ñ˜8Õ$rK   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     rI   r`   zWriteOnlyCollection.add–  s   € ð 	×Ñ˜D˜6Õ"rK   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     rI   re   zWriteOnlyCollection.removeŸ  s   € ð 	×Ñ˜$ÕrK   N)ri   r   )ri   zSelect[Tuple[_T]])ri   r'   )ri   r(   )ri   r&   r  r  )rl   rm   rn   ro   r  rï   r$   r#   r%   r"   r%  r`   re   rr   rK   rI   r€   r€   +  s9   „ ñð €Ió
ó
ó&?óPLóLó%ó#ô rK   r€   N)Oro   Ú
__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   rF   r2   r3   Úeventr4   Úsql.selectabler5   r6   r7   r:   ÚHasCollectionAdapterÚAttributeImplrg   Úclass_loggerÚRelationshipPropertyÚstrategy_forÚAbstractRelationshipLoaderÚ
IdentifiedrÝ   r”   rù   r€   rr   rK   rI   Ú<module>r;     s]  ðñ	õ #å Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý Ý å $Ý Ý Ý Ý Ý Ý Ý Ý 'Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý !áÝ$Ý&Ý/Ý*Ý7Ý.ÝÝ6Ý$Ý"Ý!Ý+Ý'áˆT˜Ô€ôF*�w˜r‘{ô F*ôRbEØ×#Ñ# Z×%=Ñ%=ôbEðJ	 ×ÑØ×#Ñ#×0Ñ0°lÐ0ÓCô
�j×;Ñ;¸S¿^¹^ó 
ó Dó ð
÷4ñ ô*<
˜w r™{ô <
ô~{ Ð2°2Ñ6õ { rK   