U
    Rh                     @  sp   d dl mZ d dlZd dlmZ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)TupleTypeVar)warn   )MemoryObjectReceiveStreamMemoryObjectSendStreamMemoryObjectStreamStateT_Itemc                   @  s$   e Zd ZdZd
dd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floatobjectzHtuple[MemoryObjectSendStream[T_Item], MemoryObjectReceiveStream[T_Item]])max_buffer_size	item_typereturnc                 C  s^   |t jkrt|tstd|dk r,td|d k	rBt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   :./venv/lib/python3.8/site-packages/anyio/_core/_streams.py__new__$   s    z#create_memory_object_stream.__new__)r   N)__name__
__module____qualname____doc__r   r   r   r   r   r      s      r   )Z
__future__r   r   typingr   r   warningsr   Zstreams.memoryr   r   r	   r
   r   r   r   r   r   <module>   s   
