1010import attr
1111import outcome
1212
13- from .. import _channel , _core
13+ from .. import _core
1414from ._run import _public
1515from ._wakeup_socketpair import WakeupSocketpair
1616
1717if TYPE_CHECKING :
1818 from typing_extensions import TypeAlias
1919
20+ from .._channel import MemoryReceiveChannel , MemorySendChannel
2021 from .._core import Abort , RaiseCancelT , Task
2122 from .._file_io import _HasFileNo
2223
@@ -36,7 +37,7 @@ class _KqueueStatistics:
3637class KqueueIOManager :
3738 _kqueue : select .kqueue = attr .ib (factory = select .kqueue )
3839 _registered : dict [
39- tuple [int , int ], Task | _channel . MemorySendChannel [select .kevent ]
40+ tuple [int , int ], Task | MemorySendChannel [select .kevent ]
4041 ] = attr .ib (factory = dict )
4142 _force_wakeup : WakeupSocketpair = attr .ib (factory = WakeupSocketpair )
4243 _force_wakeup_fd : int | None = attr .ib (default = None )
@@ -119,17 +120,19 @@ def current_kqueue(self) -> select.kqueue:
119120 @_public
120121 def monitor_kevent (
121122 self , ident : int , filter : int
122- ) -> Iterator [_channel . MemoryReceiveChannel [select .kevent ]]:
123+ ) -> Iterator [MemoryReceiveChannel [select .kevent ]]:
123124 """TODO: these are implemented, but are currently more of a sketch than
124125 anything real. See `#26
125126 <https://github.com/python-trio/trio/issues/26>`__.
126127 """
128+ from .._channel import open_memory_channel
129+
127130 key = (ident , filter )
128131 if key in self ._registered :
129132 raise _core .BusyResourceError (
130133 "attempt to register multiple listeners for same ident/filter pair"
131134 )
132- send , recv = _channel . open_memory_channel [select .kevent ](math .inf )
135+ send , recv = open_memory_channel [select .kevent ](math .inf )
133136 self ._registered [key ] = send
134137 try :
135138 yield recv
0 commit comments