8000 lazy import _overlapped · RustPython/RustPython@ede4124 · GitHub
[go: up one dir, main page]

Skip to content

Commit ede4124

Browse files
committed
lazy import _overlapped
1 parent 404d66a commit ede4124

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

Lib/asyncio/windows_events.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
if sys.platform != 'win32': # pragma: no cover
66
raise ImportError('win32 only')
77

8-
import _overlapped
8+
# import _overlapped; XXX: RUSTPYTHON
99
import _winapi
1010
import errno
1111
from functools import partial
@@ -132,6 +132,7 @@ def _unregister_wait_cb(self, fut):
132132
self._ov = None
133133

134134
def _unregister_wait(self):
135+
import _overlapped
135136
if not self._registered:
136137
return
137138
self._registered = False
@@ -194,6 +195,7 @@ def set_exception(self, exception):
194195

195196
class _WaitHandleFuture(_BaseWaitHandleFuture):
196197
def __init__(self, ov, handle, wait_handle, proactor, *, loop=None):
198+
import _overlapped # XXX: RUSTPYTHON
197199
super().__init__(ov, handle, wait_handle, loop=loop)
198200
self._proactor = proactor
199201
self._unregister_proactor = True
@@ -219,6 +221,7 @@ def _unregister_wait_cb(self, fut):
219221
super()._unregister_wait_cb(fut)
220222

221223
def _unregister_wait(self):
224+
import _overlapped # XXX: RUSTPYTHON
222225
if not self._registered:
223226
return
224227
self._registered = False
@@ -417,6 +420,7 @@ class IocpProactor:
417420
"""Proactor implementation using IOCP."""
418421

419422
def __init__(self, concurrency=INFINITE):
423+
import _overlapped # XXX: RUSTPYTHON
420424
self._loop = None
421425
self._results = []
422426
self._iocp = _overlapped.CreateIoCompletionPort(
@@ -458,6 +462,7 @@ def _result(self, value):
458462

459463
@staticmethod
460464
def finish_socket_func(trans, key, ov):
465+
import _overlapped # XXX: RUSTPYTHON
461466
try:
462467
return ov.getresult()
463468
except OSError as exc:
@@ -469,6 +474,7 @@ def finish_socket_func(trans, key, ov):
469474

470475
@classmethod
471476
def _finish_recvfrom(cls, trans, key, ov, *, empty_result):
477+
import _overlapped # XXX: RUSTPYTHON
472478
try:
473479
return cls.finish_socket_func(trans, key, ov)
474480
except OSError as exc:
@@ -480,6 +486,7 @@ def _finish_recvfrom(cls, trans, key, ov, *, empty_result):
480486
raise
481487

482488
def recv(self, conn, nbytes, flags=0):
489+
import _overlapped # XXX: RUSTPYTHON
483490
self._register_with_iocp(conn)
484491
ov = _overlapped.Overlapped(NULL)
485492
try:
@@ -493,6 +500,7 @@ def recv(self, conn, nbytes, flags=0):
493500
return self._register(ov, conn, self.finish_socket_func)
494501

495502
def recv_into(self, conn, buf, flags=0):
503+
import _overlapped # XXX: RUSTPYTHON
496504
self._register_with_iocp(conn)
497505
ov = _overlapped.Overlapped(NULL)
498506
try:
@@ -506,6 +514,7 @@ def recv_into(self, conn, buf, flags=0):
506514
return self._register(ov, conn, self.finish_socket_func)
507515

508516
def recvfrom(self, conn, nbytes, flags=0):
517+
import _overlapped # XXX: RUSTPYTHON
509518
self._register_with_iocp(conn)
510519
ov = _overlapped.Overlapped(NULL)
511520
try:
@@ -517,6 +526,7 @@ def recvfrom(self, conn, nbytes, flags=0):
517526
empty_result=b''))
518527

519528
def recvfrom_into(self, conn, buf, flags=0):
529+
import _overlapped # XXX: RUSTPYTHON
520530
self._register_with_iocp(conn)
521531
ov = _overlapped.Overlapped(NULL)
522532
try:
@@ -528,6 +538,7 @@ def recvfrom_into(self, conn, buf, flags=0):
528538
empty_result=0))
529539

530540
def sendto(self, conn, buf, flags=0, addr=None):
541+
import _overlapped # XXX: RUSTPYTHON
531542
self._register_with_iocp(conn)
532543
ov = _overlapped.Overlapped(NULL)
533544

@@ -536,6 +547,7 @@ def sendto(self, conn, buf, flags=0, addr=None):
536547
return self._register(ov, conn, self.finish_socket_func)
537548

538549
def send(self, conn, buf, flags=0):
550+
import _overlapped # XXX: RUSTPYTHON
539551
self._register_with_iocp(conn)
540552
ov = _overlapped.Overlapped(NULL)
541553
if isinstance(conn, socket.socket):
@@ -546,6 +558,7 @@ def send(self, conn, buf, flags=0):
546558
return self._register(ov, conn, self.finish_socket_func)
547559

548560
def accept(self, listener):
561+
import _overlapped # XXX: RUSTPYTHON
549562
self._register_with_iocp(listener)
550563
conn = self._get_accept_socket(listener.family)
551564
ov = _overlapped.Overlapped(NULL)
@@ -574,6 +587,7 @@ async def accept_coro(future, conn):
574587
return future
575588

576589
def connect(self, conn, address):
590+
import _overlapped # XXX: RUSTPYTHON
577591
if conn.type == socket.SOCK_DGRAM:
578592
# WSAConnect will complete immediately for UDP sockets so we don't
579593
# need to register any IOCP operation
@@ -605,6 +619,7 @@ def finish_connect(trans, key, ov):
605619
return self._register(ov, conn, finish_connect)
606620

607621
def sendfile(self, sock, file, offset, count):
622+
import _overlapped # XXX: RUSTPYTHON
608623
self._register_with_iocp(sock)
609624
ov = _overlapped.Overlapped(NULL)
610625
offset_low = offset & 0xffff_ffff
@@ -617,6 +632,7 @@ def sendfile(self, sock, file, offset, count):
617632
return self._register(ov, sock, self.finish_socket_func)
618633

619634
def accept_pipe(self, pipe):
635+
import _overlapped # XXX: RUSTPYTHON
620636
self._register_with_iocp(pipe)
621637
ov = _overlapped.Overlapped(NULL)
622638
connected = ov.ConnectNamedPipe(pipe.fileno())
@@ -634,6 +650,7 @@ def finish_accept_pipe(trans, key, ov):
634650
return self._register(ov, pipe, finish_accept_pipe)
635651

636652
async def connect_pipe(self, address):
653+
import _overlapped # XXX: RUSTPYTHON
637654
delay = CONNECT_PIPE_INIT_DELAY
638655
while True:
639656
# Unfortunately there is no way to do an overlapped connect to
@@ -668,6 +685,7 @@ def _wait_cancel(self, event, done_callback):
668685
return fut
669686

670687
def _wait_for_handle(self, handle, timeout, _is_cancel):
688+
import _overlapped # XXX: RUSTPYTHON
671689
self._check_closed()
672690

673691
if timeout is None:
@@ -702,6 +720,7 @@ def finish_wait_for_handle(trans, key, ov):
702720
return f
703721

704722
def _register_with_iocp(self, 8D12 obj):
723+
import _overlapped # XXX: RUSTPYTHON
705724
# To get notifications of finished ops on this objects sent to the
706725
# completion port, were must register the handle.
707726
if obj not in self._registered:
@@ -759,6 +778,7 @@ def _get_accept_socket(self, family):
759778
return s
760779

761780
def _poll(self, timeout=None):
781+
import _overlapped # XXX: RUSTPYTHON
762782
if timeout is None:
763783
ms = INFINITE
764784
elif timeout < 0:

0 commit comments

Comments
 (0)
0