| 421 | class BaseEventLoop(events.AbstractEventLoop): |
| 422 | |
| 423 | def __init__(self): |
| 424 | self._timer_cancelled_count = 0 |
| 425 | self._closed = False |
| 426 | self._stopping = False |
| 427 | self._ready = collections.deque() |
| 428 | self._scheduled = [] |
| 429 | self._default_executor = None |
| 430 | self._internal_fds = 0 |
| 431 | # Identifier of the thread running the event loop, or None if the |
| 432 | # event loop is not running |
| 433 | self._thread_id = None |
| 434 | self._clock_resolution = time.get_clock_info('monotonic').resolution |
| 435 | self._exception_handler = None |
| 436 | self.set_debug(coroutines._is_debug_mode()) |
| 437 | # The preserved state of async generator hooks. |
| 438 | self._old_agen_hooks = None |
| 439 | # In debug mode, if the execution of a callback or a step of a task |
| 440 | # exceed this duration in seconds, the slow callback/task is logged. |
| 441 | self.slow_callback_duration = 0.1 |
| 442 | self._current_handle = None |
| 443 | self._task_factory = None |
| 444 | self._coroutine_origin_tracking_enabled = False |
| 445 | self._coroutine_origin_tracking_saved_depth = None |
| 446 | |
| 447 | # A weak set of all asynchronous generators that are |
| 448 | # being iterated by the loop. |
| 449 | self._asyncgens = weakref.WeakSet() |
| 450 | # Set to True when `loop.shutdown_asyncgens` is called. |
| 451 | self._asyncgens_shutdown_called = False |
| 452 | # Set to True when `loop.shutdown_default_executor` is called. |
| 453 | self._executor_shutdown_called = False |
| 454 | |
| 455 | def __repr__(self): |
| 456 | return ( |