3
« fâ ã @ s� d Z ddlZddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd lmZ dd
lmZ dgZdZd
ZeeefZ e!e dƒZ"d)Z#e$ƒ Z%dd„ Z&dd„ Z'dd„ Z(dd„ Z)dd„ Z*dd„ Z+de j,dddœdd„Z-e!e d ƒ�rXd!d"„ Z.nd#d"„ Z.d$d%„ Z/G d&d'„ d'ej0ƒZ1G d(d„ dej2ƒZ3dS )*a™ Base implementation of event loop.
The event loop can be broken up into a multiplexer (the part
responsible for notifying us of I/O events) and the event loop proper,
which wraps a multiplexer with functionality for scheduling callbacks,
immediately or at a given time in the future.
Whenever a public API takes a callback, subsequent positional
arguments will be passed to the callback if/when it is called. This
avoids the proliferation of trivial lambdas implementing closures.
Keyword arguments for the callback are not supported; this is a
conscious design decision, leaving the door open for keyword arguments
to modify the meaning of the API call itself.
é Né )Úcompat)Ú
coroutines)Úevents)Úfutures)Útasks)Ú coroutine)ÚloggerÚ
BaseEventLoopéd g à?ÚAF_INET6é i c C s0 | j }tt|dd ƒtjƒr$t|jƒS t| ƒS d S )NÚ__self__)Z _callbackÚ
isinstanceÚgetattrr ÚTaskÚreprr Ústr)ÚhandleÚcb© r ú8/opt/alt/python36/lib64/python3.6/asyncio/base_events.pyÚ_format_handleC s
r c C s( | t jkrdS | t jkrdS t| ƒS d S )Nz