3
PfR @ sz d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZ y
ej Z W n e
efk
rh ejZ Y nX d(Zd)Z
dZe ZdaG dd deZdd Zejd*krdd Znd
d ZedddddgZG dd deZG dd deZeedrG dd deZeedrG dd deZeedr:G dd deZeed rVG d!d" d"eZeedsfd#Zd$d% Zd&d' Z dS )+ N)
namedtupleMapping Tc s, e Zd Z fddZdd Zdd Z ZS )
SelectorErrorc s t t| j || _d S )N)superr __init__errno)selferrcode) __class__ /usr/lib/python3.6/selectors.pyr s zSelectorError.__init__c C s dj | jS )Nz)formatr )r r r r
__repr__" s zSelectorError.__repr__c C s | j S )N)r )r r r r
__str__% s zSelectorError.__str__)__name__
__module____qualname__r r r
__classcell__r r )r r
r s r c
C sd t | tr| }n:yt| j }W n( tttfk
rH tdj| Y nX |dk r`tdj||S )zl Return a file descriptor from a file object. If
given an integer will simply return that integer back. zInvalid file object: {0!r}r zInvalid file descriptor: {0})
isinstanceintfilenoAttributeError TypeError
ValueErrorr )fileobjfdr r r
_fileobj_to_fd) s
r c O sV y
| ||S t ttjfk
rP } z"d}t|dr8|j}t|W Y dd}~X nX dS )z This is the short-circuit version of the below logic
because in Python 3.5+ all system calls automatically restart
and recalculate their timeouts. Nr )OSErrorIOErrorselecterrorhasattrr r )func_argskwargser
r r r
_syscall_wrapper; s
r* c O sR |j dd}|dkrd}d}n t|}|dk r4d}n
t | }t|}|rZd|krZtdt}x|tkrLy| ||}W q` tttj fk
rH } zd}t
|dr|j}nt
|dr|jd }|tj
kpt
td o|tjk} | r&|dk r$t }
|
|krttjd
|r$d|kr$||
|d<