o
    ;'h  ã                   @  sl   d dl mZ d dlZd dlmZ d dlmZ ddlmZm	Z	m
Z
 edƒZG dd	„ d	ee	e ee f ƒZdS )
é    )ÚannotationsN)ÚTypeVar)Úwarné   )ÚMemoryObjectReceiveStreamÚMemoryObjectSendStreamÚMemoryObjectStreamStateÚT_Itemc                   @  s   e Zd ZdZ	ddd
d„ZdS )Úcreate_memory_object_streama  
    Create a memory object stream.

    The stream's item type can be annotated like
    :func:`create_memory_object_stream[T_Item]`.

    :param max_buffer_size: number of items held in the buffer until ``send()`` starts
        blocking
    :param item_type: old way of marking the streams with the right generic type for
        static typing (does nothing on AnyIO 4)

        .. deprecated:: 4.0
          Use ``create_memory_object_stream[YourItemType](...)`` instead.
    :return: a tuple of (send stream, receive stream)

    r   NÚmax_buffer_sizeÚfloatÚ	item_typeÚobjectÚreturnúHtuple[MemoryObjectSendStream[T_Item], MemoryObjectReceiveStream[T_Item]]c                 C  s^   |t jkrt|tƒstdƒ‚|dk rtdƒ‚|d ur!tdtdd� tt |ƒ}t	|ƒt
|ƒfS )Nz5max_buffer_size must be either an integer or math.infr   z"max_buffer_size cannot be negativeztThe item_type argument has been deprecated in AnyIO 4.0. Use create_memory_object_stream[YourItemType](...) instead.r   )Ú
stacklevel)ÚmathÚinfÚ
isinstanceÚintÚ
ValueErrorr   ÚDeprecationWarningr   r	   r   r   )Úclsr   r   Ústate© r   úJC:\Users\shubh\Videos\agent\nova\Lib\site-packages\anyio/_core/_streams.pyÚ__new__$   s   üz#create_memory_object_stream.__new__)r   N)r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r
      s    ÿr
   )Ú
__future__r   r   Útypingr   Úwarningsr   Zstreams.memoryr   r   r   r	   Útupler
   r   r   r   r   Ú<module>   s    
ÿ