o 0iPL @ s d dl mZmZ d dlmZ d dlmZ d dlZd dlZd dl Z dZ dZdd Zed g d Z de _e jdkrHd e j_de j_de j_de j_G dd deZG dd dedZG dd deZG dd deZG dd deZeedr~G dd deZeedrG d d! d!eZeed"rG d#d$ d$eZeed%rG d&d' d'eZd(d) Zed%reZdS edreZdS ed"reZdS edreZdS eZdS )* )ABCMetaabstractmethod) namedtuple)MappingN c C sb t | tr | }nzt| }W n tttfy# td| d w |dk r/td||S )NzInvalid file object: {!r}r zInvalid file descriptor: {}) isinstanceintfilenoAttributeError TypeError ValueErrorformat)fileobjfd r 0/opt/alt/python310/lib64/python3.10/selectors.py_fileobj_to_fd s r SelectorKey)r r eventsdatazSelectorKey(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.zzOptional opaque data associated to this file object. For example, this could be used to store a per-client session ID.c @ s. e Zd Z dd Zdd Zdd Zdd Zd S ) _SelectorMappingc C s || _ d S N) _selector)selfselectorr r r __init__@ z_SelectorMapping.__init__c C t | jjS r )lenr _fd_to_keyr r r r __len__C z_SelectorMapping.__len__c C s: z | j |}| j j| W S ty td|d w N{!r} is not registered)r _fileobj_lookupr" KeyErrorr )r r r r r r __getitem__F s z_SelectorMapping.__getitem__c C r r )iterr r" r# r r r __iter__M r% z_SelectorMapping.__iter__N)__name__ __module____qualname__r r$ r* r, r r r r r = s r c @ sl e Zd Z edddZedd ZdddZeddd Zd d Zdd Z edd Z dd Zdd ZdS )BaseSelectorNc C t r NotImplementedErrorr r r r r r r register` s zBaseSelector.registerc C r1 r r2 )r r r r r unregisterw zBaseSelector.unregisterc C s | | | |||S r )r6 r5 r4 r r r modify s zBaseSelector.modifyc C r1 r r2 )r timeoutr r r select r7 zBaseSelector.selectc C s d S r r r# r r r close s zBaseSelector.closec C sD | }|d u r tdz|| W S ty! td|d w )NzSelector is closedr' )get_mapRuntimeErrorr) r )r r mappingr r r get_key s zBaseSelector.get_keyc C r1 r r2 r# r r r r<