Ë
    Ü_Ëi7  ã                  ój  — d Z ddlmZ ddl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 ddlmZ dd	lmZmZmZmZmZ dd
lmZmZmZmZ ddlmZm Z  ddl!m"Z" er@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/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8 dZ9ddddœiZ: G d„ d«      Z;y)z2Communicate with one MongoDB server in a topology.é    )ÚannotationsN)Údatetime)ÚTYPE_CHECKINGÚAnyÚCallableÚContextManagerÚOptionalÚUnion)Ú_decode_all_selective)ÚNotPrimaryErrorÚOperationFailure)Ú_check_command_response)Ú_COMMAND_LOGGERÚ_SDAM_LOGGERÚ_CommandStatusMessageÚ
_debug_logÚ_SDAMStatusMessage)Ú_convert_exceptionÚ_GetMoreÚ_OpMsgÚ_Query)ÚPinnedResponseÚResponse)Ú_handle_reauth)ÚQueue)ÚReferenceType)ÚObjectId)Ú_EventListeners)Ú_ServerMode)ÚServerDescription)ÚMongoClientÚ_MongoClientErrorHandler)ÚMonitor)Ú
ConnectionÚPool)Ú_DocumentOutTÚcursoré   )Ú
firstBatchÚ	nextBatchc                  ó  — e Zd Z	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zddd„Zdd„Zdd„Z	 d	 	 	 	 	 	 	 dd„Ze		 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Z
	 d	 	 	 dd	„Zedd
„«       Zej                  dd„«       Zedd„«       Z	 	 	 	 dd„Zdd„Zy)ÚServerNc                ó¸   — || _         || _        || _        || _        |duxr |j                  | _        || _        d| _        | j
                  r |«       | _        yy)zRepresent one MongoDB server.N)Ú_descriptionÚ_poolÚ_monitorÚ_topology_idÚenabled_for_serverÚ_publishÚ	_listenerÚ_events)ÚselfÚserver_descriptionÚpoolÚmonitorÚtopology_idÚ	listenersÚeventss          ú]/var/www/pod-logistic/pod-api/venv/lib/python3.12/site-packages/pymongo/synchronous/server.pyÚ__init__zServer.__init__>   s\   € ð /ˆÔØˆŒ
ØˆŒØ'ˆÔØ!¨Ð-ÒN°)×2NÑ2NˆŒØ"ˆŒØˆŒØ�=Š=Ù!›8ˆD�Lð ó    c                óz   — | j                   j                  j                  s| j                  j	                  «        yy)z[Start monitoring, or restart after a fork.

        Multiple calls have no effect.
        N)r/   ÚoptsÚload_balancedr0   Úopen©r6   s    r=   rC   zServer.openR   s*   € ð
 �z‰z�‰×,Ò,Ø�M‰M×ÑÕ ð -r?   c                ó:   — | j                   j                  |«       y)zClear the connection pool.N)r8   Úreset)r6   Ú
service_ids     r=   rF   zServer.resetZ   s   € à�	‰	�‰˜
Õ#r?   c                óX  — | j                   rm| j                  €J ‚| j                  €J ‚| j                  j                  | j                  j                  | j
                  j                  | j                  ff«       t        j                  t        j                  «      rZt        t        t        j                  | j                  | j
                  j                  d   | j
                  j                  d   ¬«       | j                  j!                  «        | j"                  j!                  «        y)zXClear the connection pool and stop the monitor.

        Reconnect with open().
        Nr   r(   )ÚmessageÚ
topologyIdÚ
serverHostÚ
serverPort)r3   r4   r5   ÚputÚpublish_server_closedr.   Úaddressr1   r   ÚisEnabledForÚloggingÚDEBUGr   r   ÚSTOP_SERVERr0   Úcloser/   rD   s    r=   rT   zServer.close^   sä   € ð
 �=Š=Ø—>‘>Ð-Ð-Ð-Ø—<‘<Ð+Ð+Ð+Ø�L‰L×Ñà—N‘N×8Ñ8Ø×&Ñ&×.Ñ.°×0AÑ0AÐBðôô ×$Ñ$¤W§]¡]Ô3ÜÜÜ*×6Ñ6Ø×,Ñ,Ø×,Ñ,×4Ñ4°QÑ7Ø×,Ñ,×4Ñ4°QÑ7õð 	�‰×ÑÔØ�
‰
×ÑÕr?   c                ó8   — | j                   j                  «        y)zCheck the server's state soon.N)r0   Úrequest_checkrD   s    r=   rV   zServer.request_checkx   s   € à�‰×#Ñ#Õ%r?   c                ó8  — |j                  ||«      \  }}|j                  j                  r[|j                  j                  j                  s;|j                  j                  j	                  |j
                  ||j                  «      }|j                  |«       ||fS ©N)Ú
as_commandÚclientÚ
_encrypterÚ_bypass_auto_encryptionÚencryptÚdbÚcodec_optionsÚupdate_command)r6   Ú	operationÚconnÚapply_timeoutÚcmdr^   s         r=   Úoperation_to_commandzServer.operation_to_command|   sƒ   € ð ×&Ñ& t¨]Ó;‰ˆˆRà×Ñ×&Ò&¨y×/?Ñ/?×/JÑ/J×/bÒ/bØ×"Ñ"×-Ñ-×5Ñ5Ø—‘˜c 9×#:Ñ#:óˆCð 	× Ñ  Ô%à�Bˆwˆr?   c                ó¤  — |€J ‚|j                   }t        j                  «       }|j                  |«      }	|j                  xr |j                  j
                  }
| j                  |||	«      \  }}|
rd}n(|j                  |||	«      }| j                  |«      \  }}}t        j                  t        j                  «      rˆt        t        t        j                  |j                   j"                  |t%        t'        |«      «      ||||j(                  |j*                  |j,                  d   |j,                  d   |j.                  ¬«       |rBd|vr||d<   |€J ‚|j1                  ||||j,                  |j*                  |j.                  ¬«       	 |
r|j3                  d«      }n#|j5                  «       |j3                  |«      }|	r	t6        }d}nd}d} |||j8                  |j:                  ||¬	«      }|	rM|d   }|j<                  j?                  ||j@                  «       tC        ||jD                  |jF                  ¬
«       t        j                  «       |z
  }|	r|d   }nY|jX                  dk(  r
|r|d   ni }n@|j8                  |j[                  «       dœddœ}|jX                  dk(  r	||d   d<   n||d   d<   t        j                  t        j                  «      r‰t        t        t        j\                  |j                   j"                  ||t%        t'        |«      «      ||||j(                  |j*                  |j,                  d   |j,                  d   |j.                  ¬«       |rE|€J ‚|j_                  |||jX                  ||j,                  |j*                  |j.                  |¬«       |j<                  }|rN|j`                  rB|	r@|j`                  jc                  |je                  «       «      }tg        ||j:                  |«      }|ji                  |j@                  «      s|jj                  r |jm                  «        tK        |tn        «      r|j
                  }
n#tq        |jj                  xr |j8                  «      }
|j                  r|j                  js                  |
«       tu        || jv                  j,                  ||||	||
¬«      }|S ty        || jv                  j,                  |||	|¬«      }|S # tH        $ �rM}t        j                  «       |z
  }tK        |tL        tN        f«      r|jP                  }ntS        |«      }t        j                  t        j                  «      r˜t        t        t        jT                  |j                   j"                  ||t%        t'        |«      «      ||||j(                  |j*                  |j,                  d   |j,                  d   |j.                  tK        |tN        «      ¬«       |rE|€J ‚|jW                  |||jX                  ||j,                  |j*                  |j.                  |¬«       ‚ d}~ww xY w)a<  Run a _Query or _GetMore operation and return a Response object.

        This method is used only to run _Query/_GetMore operations from
        cursors.
        Can raise ConnectionFailure, OperationFailure, etc.

        :param conn: A Connection instance.
        :param operation: A _Query or _GetMore object.
        :param read_preference: The read preference to use.
        :param listeners: Instance of _EventListeners or None.
        :param unpack_res: A callable that decodes the wire protocol response.
        :param client: A MongoClient instance.
        Nr   r(   )rI   ÚclientIdÚcommandÚcommandNameÚdatabaseNameÚ	requestIdÚoperationIdÚdriverConnectionIdÚserverConnectionIdrK   rL   Ú	serviceIdz$db)rG   FT)Úlegacy_responseÚuser_fields)Ú	pool_opts)rI   rg   Ú
durationMSÚfailureri   rj   rk   rl   rm   rn   rK   rL   ro   ÚisServerSideError)rG   Údatabase_nameÚexplain)ÚidÚns)r'   ÚokÚfindr'   r)   r*   )rI   rg   rs   Úreplyri   rj   rk   rl   rm   rn   rK   rL   ro   )ÚdatarO   rb   ÚdurationÚ
request_idÚfrom_commandÚdocsÚmore_to_come)r}   rO   r~   r   r€   r�   )=Úenabled_for_commandsr   ÚnowÚuse_commandÚconn_mgrr‚   re   Úget_messageÚ_split_messager   rP   rQ   rR   r   r   ÚSTARTEDÚ_topology_settingsr1   ÚnextÚiterrx   Úserver_connection_idrO   rG   Úpublish_command_startÚreceive_messageÚsend_messageÚ_CURSOR_DOC_FIELDSÚ	cursor_idr_   rZ   Ú_process_responseÚsessionr   Úmax_wire_versionrA   Ú	ExceptionÚ
isinstancer   r   Údetailsr   ÚFAILEDÚpublish_command_failureÚnameÚ	namespaceÚ	SUCCEEDEDÚpublish_command_successr[   ÚdecryptÚraw_command_responser   Ú_should_pin_cursorÚexhaustÚ
pin_cursorr   ÚboolÚupdate_exhaustr   r.   r   )r6   rb   ra   Úread_preferencer;   Ú
unpack_resrZ   ÚpublishÚstartÚuse_cmdr‚   rd   Údbnr   rI   r}   Úmax_doc_sizer|   rq   rp   r�   ÚfirstÚexcr~   rt   ÚresÚ	decryptedÚresponses                               r=   Úrun_operationzServer.run_operation‰   sº  € ð. Ð$Ð$Ð$Ø×0Ñ0ˆÜ—‘“ˆà×'Ñ'¨Ó-ˆØ ×)Ñ)ÒM¨i×.@Ñ.@×.MÑ.MˆØ×,Ñ,¨Y¸¸gÓF‰ˆˆSÙØ‰Jà×+Ñ+¨O¸TÀ7ÓKˆGØ-1×-@Ñ-@ÀÓ-IÑ*ˆJ˜˜lä×'Ñ'¬¯©Ô6ÜÜÜ-×5Ñ5Ø×2Ñ2×?Ñ?ØÜ ¤ c£›OØ Ø$Ø&Ø#'§7¡7Ø#'×#<Ñ#<ØŸ<™<¨™?ØŸ<™<¨™?ØŸ/™/õñ  Ø˜CÑØ ��E‘
ØÐ(Ð(Ð(Ø×+Ñ+ØØØØ—‘Ø×)Ñ)ØŸ?™?ð ,ô ð=	ÙØ×,Ñ,¨TÓ2‘à×!Ñ! $¨Ô5Ø×,Ñ,¨ZÓ8�ñ Ü0�Ø"'‘à"�Ø"&�ÙØØ×#Ñ#Ø×'Ñ'Ø /Ø'ôˆDñ Ø˜Q™�Ø× Ñ ×2Ñ2°5¸)×:KÑ:KÔLÜ'¨¨t×/DÑ/DÐPT×PYÑPYÕZôL —<‘<“> EÑ)ˆñ Ø�q‘'‰CØ�^‰^˜yÒ(Ù!�$�q’' r‰Cà$)§O¡O¸9×;NÑ;NÓ;PÑQÐYZÑ[ˆCØ�~‰~ Ò'Ø.2��H‘˜lÒ+à-1��H‘˜kÑ*Ü×'Ñ'¬¯©Ô6ÜÜÜ-×7Ñ7Ø×2Ñ2×?Ñ?Ø#ØÜ ¤ c£›OØ Ø$Ø&Ø#'§7¡7Ø#'×#<Ñ#<ØŸ<™<¨™?ØŸ<™<¨™?ØŸ/™/õñ  ØÐ(Ð(Ð(Ø×-Ñ-ØØØ—‘ØØ—‘Ø×)Ñ)ØŸ?™?Ø!ð .ô 	ð ×!Ñ!ˆÙ�f×'Ò'ÙØ"×-Ñ-×5Ñ5°e×6PÑ6PÓ6RÓS�	Ü,¨Y¸	×8OÑ8OÐQ\Ó]�ð ×$Ñ$ Y×%6Ñ%6Ô7¸9×;LÒ;LØ�O‰OÔÜ˜%¤Ô(ð  %×1Ñ1‘ô  $ I×$5Ñ$5Ò$I¸%¿/¹/ÓJ�Ø×!Ò!Ø×"Ñ"×1Ñ1°,Ô?Ü%ØØ×)Ñ)×1Ñ1ØØ!Ø%Ø$ØØ)ô	ˆHð( ˆô  ØØ×)Ñ)×1Ñ1Ø!Ø%Ø$ØôˆHð ˆøôq ó $	Ü—|‘|“~¨Ñ-ˆHÜ˜#¤Ô1AÐBÔCØ(+¯©‘ä,¨SÓ1�Ü×+Ñ+¬G¯M©MÔ:ÜÜ#Ü1×8Ñ8Ø#×6Ñ6×CÑCØ'Ø#Ü $¤T¨#£Y£Ø!$Ø(Ø *Ø'+§w¡wØ'+×'@Ñ'@Ø#Ÿ|™|¨A™Ø#Ÿ|™|¨A™Ø"Ÿo™oÜ&0°Ô6FÓ&Gõñ" Ø Ð,Ð,Ð,Ø×1Ñ1ØØØ—N‘NØØ—L‘LØ×-Ñ-Ø#Ÿ™Ø"%ð 2ô 	ð ûðI$	ús   ÆB6S8 Ó8
YÔEY
Ù
Yc                ó8   — | j                   j                  |«      S rX   )r8   Úcheckout)r6   Úhandlers     r=   r´   zServer.checkout^  s   € ð �y‰y×!Ñ! 'Ó*Ð*r?   c                ó   — | j                   S rX   )r.   rD   s    r=   ÚdescriptionzServer.descriptionc  s   € à× Ñ Ð r?   c                ó\   — |j                   | j                  j                   k(  sJ ‚|| _        y rX   )rO   r.   )r6   r7   s     r=   r·   zServer.descriptiong  s*   € à!×)Ñ)¨T×->Ñ->×-FÑ-FÒFÐFÐFØ.ˆÕr?   c                ó   — | j                   S rX   )r/   rD   s    r=   r8   zServer.pooll  s   € à�z‰zÐr?   c                ó6   — t        |«      dk(  r|S |\  }}||dfS )zReturn request_id, data, max_doc_size.

        :param message: (request_id, data, max_doc_size) or (request_id, data)
        é   r   )Úlen)r6   rI   r   r}   s       r=   rˆ   zServer._split_messagep  s.   € ô ˆw‹<˜1ÒØˆNð  'ÑˆJ˜Ø˜t QÐ&Ð&r?   c                óP   — d| j                   j                  › d| j                  ›d�S )Nú<ú ú>)Ú	__class__Ú__name__r.   rD   s    r=   Ú__repr__zServer.__repr__~  s)   € Ø�4—>‘>×*Ñ*Ð+¨1¨T×->Ñ->Ð,AÀÐCÐCr?   )NNN)r7   r    r8   r%   r9   r#   r:   úOptional[ObjectId]r;   úOptional[_EventListeners]r<   z#Optional[ReferenceType[Queue[Any]]]ÚreturnÚNone)rÆ   rÇ   rX   )rG   rÄ   rÆ   rÇ   )F)ra   úUnion[_Query, _GetMore]rb   r$   rc   r¤   rÆ   ztuple[dict[str, Any], str])rb   r$   ra   rÈ   r¦   r   r;   rÅ   r§   z!Callable[..., list[_DocumentOut]]rZ   zMongoClient[Any]rÆ   r   )rµ   z"Optional[_MongoClientErrorHandler]rÆ   zContextManager[Connection])rÆ   r    )r7   r    rÆ   rÇ   )rÆ   r%   )rI   z,Union[tuple[int, Any], tuple[int, Any, int]]rÆ   ztuple[int, Any, int])rÆ   Ústr)rÂ   Ú
__module__Ú__qualname__r>   rC   rF   rT   rV   re   r   r²   r´   Úpropertyr·   Úsetterr8   rˆ   rÃ   © r?   r=   r,   r,   =   sp  „ ð +/Ø/3Ø6:ð$à-ð$ð ð$ð ð	$ð
 (ð$ð -ð$ð 4ð$ð 
ó$ó(!ô$óó4&ð
 [`ðØ0ðØ8BðØSWðà	#óð ðRàðRð +ðRð %ð	Rð
 -ðRð 6ðRð !ðRð 
òRó ðRðj =Að+Ø9ð+à	#ó+ð
 ò!ó ð!ð ×Ñò/ó ð/ð òó ðð'ØCð'à	ó'ôDr?   r,   )<Ú__doc__Ú
__future__r   rQ   r   Útypingr   r   r   r   r	   r
   Úbsonr   Úpymongo.errorsr   r   Úpymongo.helpers_sharedr   Úpymongo.loggerr   r   r   r   r   Úpymongo.messager   r   r   r   Úpymongo.responser   r   Úpymongo.synchronous.helpersr   Úqueuer   Úweakrefr   Úbson.objectidr   Úpymongo.monitoringr   Úpymongo.read_preferencesr   Úpymongo.server_descriptionr    Ú pymongo.synchronous.mongo_clientr!   r"   Úpymongo.synchronous.monitorr#   Úpymongo.synchronous.poolr$   r%   Úpymongo.typingsr&   Ú_IS_SYNCr‘   r,   rÎ   r?   r=   ú<module>rä      s…   ðñ 9Ý "ã Ý ÷÷ õ 'ß <Ý :÷õ ÷ IÓ Hß 5Ý 6áÝÝ%å&Ý2Ý4Ý<ßVÝ3ß9Ý,à€à¨q¸qÑ AÐBÐ ÷BDò BDr?   