
    $g                         d dl 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mZmZ dgZ G d d          ZdS )	    )CancelledErrorEventTaskensure_futurewait)FIRST_COMPLETED)
isasyncgenisawaitable)TracebackType)AnyAsyncIterableCallableOptionalSetTypeUnionMapAsyncIteratorc            	           e Zd ZdZdededdfdZddZdefdZ		 	 dd	e
eee         f         d
ee         dee         ddfdZddZedefd            Zej        d
eddfd            ZdS )r   a+  Map an AsyncIterable over a callback function.

    Given an AsyncIterable and a callback function, return an AsyncIterator which
    produces values mapped via calling the callback function.

    When the resulting AsyncIterator is closed, the underlying AsyncIterable will also
    be closed.
    iterablecallbackreturnNc                 l    |                                 | _        || _        t                      | _        d S )N)	__aiter__iteratorr   r   _close_event)selfr   r   s      d/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/graphql/execution/map_async_iterator.py__init__zMapAsyncIterator.__init__   s.     **,, !GG    c                     | S )zGet the iterator object. r   s    r   r   zMapAsyncIterator.__aiter__   s    r   c                 .  K   | j         r<t          | j                  st          | j                                         d{V }n#t          | j                                                  }t          | j                                                  }	 t          ||gt                     d{V d         }nQ# t          $ rD |
                                 |
                                 |                                  d{V   w xY w|D ]}|
                                 |                                rt          |                                }|r||                                }|                     |          }t!          |          r| d{V n|S )z#Get the next value of the iterator.N)return_when   )	is_closedr	   r   StopAsyncIteration	__anext__r   r   r   r   r   cancelaclosedone	exceptionresultr   r
   )r   valuer*   anextpendingtaskerrorr-   s           r   r(   zMapAsyncIterator.__anext__   s     > 	#dm,, )((-1133333333EE"4#4#9#9#;#;<<F!$-"9"9";";<<E	OLLLLLLLLL& "   kkmm#######    {{}} )((OO%%E LLNNEu%%*622>V|||||||>s   $B8 8ADtype_r.   	tracebackc                   K   | j         rdS t          |t                    r|}t          |          }|j        }t          | j        dd          }|r |||n|           d{V  dS |                                  d{V  |%||t          |t                    r|n	 |            }||                    |          }|)z2Throw an exception into the asynchronous iterator.Nathrow)	r&   
isinstanceBaseExceptiontype__traceback__getattrr   r*   with_traceback)r   r3   r.   r4   r6   s        r   r6   zMapAsyncIterator.athrowC   s       > 	Fe]++ 	,EKKE+I$77 
	&%-U;;;;;;;;;;;++--}$K!+E=!A!ANuuww$,,Y77Kr   c                    K   | j         sCt          | j        dd          }|r"	  |             d{V  n# t          $ r Y nw xY wd| _         dS dS )zClose the iterator.r*   NT)r&   r;   r   RuntimeError)r   r*   s     r   r*   zMapAsyncIterator.aclose]   s~      ~ 	"T]Hd;;F  &((NNNNNNNN#   D!DNNN	" 	"s   4 
A Ac                 4    | j                                         S )z%Check whether the iterator is closed.)r   is_setr"   s    r   r&   zMapAsyncIterator.is_closedh   s      '')))r   c                 r    |r| j                                          dS | j                                          dS )zMark the iterator as closed.N)r   setclear)r   r.   s     r   r&   zMapAsyncIterator.is_closedm   sB      	&!!#######%%%%%r   )r   r   )NN)r   N)__name__
__module____qualname____doc__r   r   r   r   r   r(   r   r8   r   r   r   r6   r*   propertyboolr&   setterr!   r   r   r   r      sD        $ $( $t $ $ $ $
   #? #? #? #? #?P *.-1	 ]D$778 & M*	
 
   4	" 	" 	" 	" *4 * * * X* &t & & & & & & &r   N)asyncior   r   r   r   r   concurrent.futuresr   inspectr	   r
   typesr   typingr   r   r   r   r   r   r   __all__r   r!   r   r   <module>rQ      s    D D D D D D D D D D D D D D . . . . . . + + + + + + + +       K K K K K K K K K K K K K K K K K K
h& h& h& h& h& h& h& h& h& h&r   