a
´iÐ! ã @ sì d Z ddlZddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZzddlZW n ey¦ dZY n0 ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd lmZ dd
lmZ ddlmZ ddlmZ dd
lmZ ddlmZ ddl m!Z! dZ"dZ#dZ$e%e dƒZ&dZ'e(ƒ Z)dd„ Z*dd„ Z+dd„ Z,d-dd„Z-d.dd„Z.dd „ Z/e%e d!ƒ�r¢d"d#„ Z0nd$d#„ Z0d%d&„ Z1G d'd(„ d(ej2ƒZ3G d)d*„ d*ej4ƒZ5G d+d,„ d,ej6ƒZ7dS )/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é )Ú constants)Ú
coroutines)Úevents)Ú
exceptions)Úfutures)Ú protocols)Ússlproto)Ú staggered)Útasks)Ú
transports)Útrsock)Úlogger)Ú
BaseEventLoopÚServeréd g à?ÚAF_INET6i€Q c C s0 | j }tt|dd ƒtjƒr$t|jƒS t| ƒS d S )NÚ__self__)Ú _callbackÚ
isinstanceÚgetattrr ÚTaskÚreprr Ústr)ÚhandleÚcb© r ú+/usr/lib64/python3.9/asyncio/base_events.pyÚ_format_handleJ s
r c C s( | t jkrdS | t jkrdS t| ƒS d S )Nz