"""
This namespace represents low-level functionality not intended for daily use,
but useful for extending Trio's functionality.
"""
import select as _select
import sys
import typing as _t
# This is the union of a subset of trio/_core/ and some things from trio/*.py.
# See comments in trio/__init__.py for details. To make static analysis easier,
# this lists all possible symbols from trio._core, and then we prune those that
# aren't available on this system. After that we add some symbols from trio/*.py.
# Generally available symbols
from ._core import (
cancel_shielded_checkpoint,
Abort,
wait_task_rescheduled,
enable_ki_protection,
disable_ki_protection,
currently_ki_protected,
Task,
checkpoint,
current_task,
ParkingLot,
UnboundedQueue,
RunVar,
TrioToken,
current_trio_token,
temporarily_detach_coroutine_object,
permanently_detach_coroutine_object,
reattach_detached_coroutine_object,
current_statistics,
reschedule,
remove_instrument,
add_instrument,
current_clock,
current_root_task,
checkpoint_if_cancelled,
spawn_system_task,
wait_readable,
wait_writable,
notify_closing,
start_thread_soon,
start_guest_run,
)
from ._subprocess import open_process
if sys.platform == "win32":
# Windows symbols
from ._core import (
current_iocp,
register_with_iocp,
wait_overlapped,
monitor_completion_key,
readinto_overlapped,
write_overlapped,
)
from ._wait_for_object import WaitForSingleObject
else:
# Unix symbols
from ._unix_pipes import FdStream
# Kqueue-specific symbols
if sys.platform != "linux" and (_t.TYPE_CHECKING or not hasattr(_select, "epoll")):
from ._core import (
current_kqueue,
monitor_kevent,
wait_kevent,
)
del sys