o
    óT·jå	  ã                   @  sœ   d dl mZ d dlZd dlZd dlZd dl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 e d¡Zddd„Zddd„Zeddd„ƒZdS )é    )ÚannotationsN)ÚAsyncIterableÚAsyncIteratorÚ	GeneratorÚIterableÚIterator)ÚAbstractAsyncContextManagerÚaclosingÚcontextmanagerÚnullcontext)ÚAsyncGeneratorTypeÚTÚsockúsocket.socket | NoneÚreturnÚboolc                 C  s†   | du rdn|   ¡ }|du s|dk rdS tjdks!ttddƒdu r1t |gg g d¡\}}}t|ƒS t ¡ }| |tj¡ t| d¡ƒS )zà
    Return whether a socket, as identified by its file descriptor, is readable.
    "A socket is readable" means that the read buffer isn't empty, i.e. that calling
    .recv() on it would immediately return some data.
    Nr   TÚwin32Úpoll)	ÚfilenoÚsysÚplatformÚgetattrÚselectr   r   ÚregisterÚPOLLIN)r   Úsock_fdÚrreadyÚ_Úp© r   úS/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/httpcore2/_utils.pyÚis_socket_readable   s   r!   Úiterable_or_iteratorú#AsyncIterable[T] | AsyncIterator[T]ú-AbstractAsyncContextManager[AsyncIterator[T]]c                C  s0   t | tƒr| n|  ¡ }t |tƒrt|ƒS t|ƒS ©N)Ú
isinstancer   Ú	__aiter__r   r	   r   ©r"   Úiteratorr   r   r    Úsafe_async_iterate2   s
   ÿ
r*   úIterable[T] | Iterator[T]ú"Generator[Iterator[T], None, None]c                c  s"   � t | tƒr| n|  ¡ }|V  d S r%   )r&   r   Ú__iter__r(   r   r   r    Úsafe_iterate=   s   €
r.   )r   r   r   r   )r"   r#   r   r$   )r"   r+   r   r,   )Ú
__future__r   r   Úsocketr   ÚtypingÚcollections.abcr   r   r   r   r   Ú
contextlibr   r	   r
   r   Útypesr   ÚTypeVarr   r!   r*   r.   r   r   r   r    Ú<module>   s    


