+
    8i                    j   R t ^ RIHt ^ RIHtHt ^ RIHtHtH	t	H
t
HtHtHt ^ RIHt ^ RIHtHt  ! R R]],          ]4      t]! . RO4      tR^R	^R
^R^R^ R^@R^/t ! R R4      t]]]]]]]]]]	]]3,          3,          3,          3,          ,          ]	]]3,          3,          t]]]3,          tR# )z5Constants and types shared across all cursor classes.)annotations)ABCabstractmethod)AnyGenericMappingOptionalSequenceTupleUnion)_CursorAddress)_Address_DocumentTypec                      ] tR t^t$ RtR]R&   R]R&   R]R&   R]R&   R]R	&   R
]R&   R]R&   ]R R l4       tR R lt]	R R l4       t
]	R R l4       t]	R R l4       tR R ltR R ltRtR# )_AgnosticCursorBasez
Shared IO-agnostic cursor base used by both async and sync cursor classes.
All IO-specific behavior is implemented in subclasses.
r   _collectionOptional[int]_id_dataOptional[_Address]_address	_sock_mgrzOptional[Any]_sessionbool_killedc                   V ^8  d   QhRR/# )   returnstr )formats   "S/var/www/html/photoedit/myenv/lib/python3.14/site-packages/pymongo/cursor_shared.py__annotate__ _AgnosticCursorBase.__annotate__*   s           c                    R# )z<Return the full namespace (dbname.collname) for this cursor.Nr   selfs   &r!   _get_namespace"_AgnosticCursorBase._get_namespace)   s     	r$   c                   V ^8  d   QhRR/# r   r   Noner   )r    s   "r!   r"   r#   .   s       r$   c                	&    V P                  4        R # )N)_die_no_lockr&   s   &r!   __del___AgnosticCursorBase.__del__.   s    r$   c                   V ^8  d   QhRR/# )r   r   r   r   )r    s   "r!   r"   r#   2   s     ; ;t ;r$   c                p    \        \        V P                  4      ;'       g    V P                  '       * 4      # )a  Does this cursor have the potential to return more data?

This is mostly useful with `tailable cursors
<https://www.mongodb.com/docs/manual/core/tailable-cursors/>`_
since they will stop iterating even though they *may* return more
results in the future.

With regular cursors, simply use an asynchronous for loop instead of :attr:`alive`::

    async for doc in collection.find():
        print(doc)

.. note:: Even if :attr:`alive` is True, :meth:`next` can raise
  :exc:`StopIteration`. :attr:`alive` can also be True while iterating
  a cursor from a failed server. In this case :attr:`alive` will
  return False after :meth:`next` fails to retrieve the next batch
  of results from the server.
)r   lenr   r   r&   s   &r!   alive_AgnosticCursorBase.alive1   s&    ( C

O99DLL(8::r$   c                   V ^8  d   QhRR/# )r   r   r   r   )r    s   "r!   r"   r#   H   s      = r$   c                    V P                   # )z5Returns the id of the cursor.

.. versionadded:: 2.2
)r   r&   s   &r!   	cursor_id_AgnosticCursorBase.cursor_idG   s     xxr$   c                   V ^8  d   QhRR/# )r   r   r   r   )r    s   "r!   r"   r#   P   s      + r$   c                    V P                   # )zbThe (host, port) of the server used, or None.

.. versionchanged:: 3.0
   Renamed from "conn_id".
)r   r&   s   &r!   address_AgnosticCursorBase.addressO   s     }}r$   c                    V ^8  d   QhRRRR/# )r   already_killedr   r   z$tuple[int, Optional[_CursorAddress]]r   )r    s   "r!   r"   r#   X   s     
" 
"d 
"7[ 
"r$   c                	    R V n         V P                  '       dL   V'       gD   V P                  pV P                  f   Q h\        V P                  V P	                  4       4      pW#3# ^ pRpW#3# )TN)r   r   r   r   r(   r'   r?   r8   r<   s   &&  r!   _prepare_to_die#_AgnosticCursorBase._prepare_to_dieX   sf    888NI==,,,$T]]D4G4G4IJG
 !! IG!!r$   c                   V ^8  d   QhRR/# r+   r   )r    s   "r!   r"   r#   d   s      d r$   c                    V P                   pT P                  T4      w  r#T P                  P                  P
                  P                  Y#T P                  T P                  4       T P                  '       d5   T P                  P                  '       d   RT P                  n
        RT n        RT n        R#   \         d     R# i ; i)z,Closes this cursor without acquiring a lock.NF)r   AttributeErrorrB   r   databaseclient_cleanup_cursor_no_lockr   r   	_implicit_attached_to_cursorrA   s   &   r!   r.    _AgnosticCursorBase._die_no_lockd   s    	!\\N
 "11.A	!!((@@	
 ===T]]44405DMM- DM  		s   B5 5CC)r   r   r   N)__name__
__module____qualname____firstlineno____doc____annotations__r   r(   r/   propertyr4   r8   r<   rB   r.   __static_attributes__r   r$   r!   r   r      s     	J  NM  ; ;*    
" r$   r   tailable_cursorsecondary_okayoplog_replay
no_timeout
await_dataexhaustpartialc                  d    ] tR t^t^ t ]R,          t ]]R,          ,          t ]R,          tRt	R# )
CursorTyperU   rY   rZ   r   N)
rM   rN   rO   rP   NON_TAILABLE_QUERY_OPTIONSTAILABLETAILABLE_AWAITEXHAUSTrT   r   r$   r!   r]   r]      sA    L#/0H | <<N Y'Gr$   r]   N)+         io  iC  `      )rQ   
__future__r   abcr   r   typingr   r   r   r   r	   r
   r   pymongo.messager   pymongo.typingsr   r   r   	frozenset_CURSOR_CLOSED_ERRORSr_   r]   r   int_Sort_Hintr   r$   r!   <module>rr      s     < " # J J J * 3Y'-0# Y| " : qaA""rs : 	U3c5c7383D)D#EEFFGH'RUWZRZJ[[	 	c5jr$   