MCPcopy Index your code
hub / github.com/python/cpython / PipeHandle

Class PipeHandle

Lib/asyncio/windows_utils.py:88–126  ·  view source on GitHub ↗

Wrapper for an overlapped pipe handle which is vaguely file-object like. The IOCP event loop can use these instead of socket objects.

Source from the content-addressed store, hash-verified

86
87
88class PipeHandle:
89 """Wrapper for an overlapped pipe handle which is vaguely file-object like.
90
91 The IOCP event loop can use these instead of socket objects.
92 """
93 def __init__(self, handle):
94 self._handle = handle
95
96 def __repr__(self):
97 if self._handle is not None:
98 handle = f'handle={self._handle!r}'
99 else:
100 handle = 'closed'
101 return f'<{self.__class__.__name__} {handle}>'
102
103 @property
104 def handle(self):
105 return self._handle
106
107 def fileno(self):
108 if self._handle is None:
109 raise ValueError("I/O operation on closed pipe")
110 return self._handle
111
112 def close(self, *, CloseHandle=_winapi.CloseHandle):
113 if self._handle is not None:
114 CloseHandle(self._handle)
115 self._handle = None
116
117 def __del__(self, _warn=warnings.warn):
118 if self._handle is not None:
119 _warn(f"unclosed {self!r}", ResourceWarning, source=self)
120 self.close()
121
122 def __enter__(self):
123 return self
124
125 def __exit__(self, t, v, tb):
126 self.close()
127
128
129# Replacement for subprocess.Popen using overlapped pipe handles

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…