� c��j�L � �t � d Z ddlmZmZ ddlmZ ddlmZ ddlZddl Z ddl Z dZdZd� Z ed g d �� Zde_ dej _ d ej _ dej" _ dej$ _ G d� de� Z G d� de�� Z G d� de� Z G d� de� Z G d� de� Z ee d� r G d� de� Z ee d� r G d� d e� Z ee d!� r G d"� d#e� Z ee d$� r G d%� d&e� Zd'� Z ed$� reZy ed� reZy ed!� reZy ed� reZyeZy)(z|Selectors module. This module allows high-level and efficient I/O multiplexing, built upon the `select` module primitives. � )�ABCMeta�abstractmethod)� namedtuple)�MappingN� � c � � t | t � r| }n t | j � � }|dk rt dj |� � �|S # t t t f$ r t dj | � � d�w xY w)z�Return a file descriptor from a file object. Parameters: fileobj -- file object or file descriptor Returns: corresponding file descriptor Raises: ValueError if the object is invalid zInvalid file object: {!r}Nr zInvalid file descriptor: {})� isinstance�int�fileno�AttributeError� TypeError� ValueError�format)�fileobj�fds �"/usr/lib64/python3.12/selectors.py�_fileobj_to_fdr s� � � �'�3�� �� ?��W�^�^�%�&�B� �A�v��6�=�=�b�A�B�B� �I�� � �:�6� ?�� $�$*�F�7�O�5�:>� ?� ?�s �A �0A?�SelectorKey)r r �events�dataz�SelectorKey(fileobj, fd, events, data) Object used to associate a file object to its backing file descriptor, selected event mask, and attached data. zFile object registered.zUnderlying file descriptor.z3Events that must be waited for on this file object.zvOptional opaque data associated to this file object. For example, this could be used to store a per-client session ID.c �( � e Zd ZdZd� Zd� Zd� Zd� Zy)�_SelectorMappingz)Mapping of file objects to selector keys.c � � || _ y �N)� _selector)�self�selectors r �__init__z_SelectorMapping.__init__? s � �!��� c �@ � t | j j � S r )�lenr � _fd_to_key�r s r �__len__z_SelectorMapping.__len__B s � ��4�>�>�,�,�-�-r c � � | j j |� }| j j | S # t $ r t dj |� � d �w xY w�N�{!r} is not registered)r �_fileobj_lookupr# �KeyErrorr )r r r s r �__getitem__z_SelectorMapping.__getitem__E s[ � � O����/�/��8�B��>�>�,�,�R�0�0��� O��3�:�:�7�C�D�$�N� O�s �36 �%Ac �@ � t | j j � S r )�iterr r# r$ s r �__iter__z_SelectorMapping.__iter__L s � ��D�N�N�-�-�.�.r N)�__name__� __module__�__qualname__�__doc__r r% r+ r. � r r r r <