MCPcopy Index your code
hub / github.com/RustPython/RustPython / _get_handles

Method _get_handles

Lib/subprocess.py:1349–1425  ·  view source on GitHub ↗

Construct and return tuple with IO objects: p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite

(self, stdin, stdout, stderr)

Source from the content-addressed store, hash-verified

1347 # Windows methods
1348 #
1349 def _get_handles(self, stdin, stdout, stderr):
1350 """Construct and return tuple with IO objects:
1351 p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite
1352 """
1353 if stdin is None and stdout is None and stderr is None:
1354 return (-1, -1, -1, -1, -1, -1)
1355
1356 p2cread, p2cwrite = -1, -1
1357 c2pread, c2pwrite = -1, -1
1358 errread, errwrite = -1, -1
1359
1360 with self._on_error_fd_closer() as err_close_fds:
1361 if stdin is None:
1362 p2cread = _winapi.GetStdHandle(_winapi.STD_INPUT_HANDLE)
1363 if p2cread is None:
1364 p2cread, _ = _winapi.CreatePipe(None, 0)
1365 p2cread = Handle(p2cread)
1366 err_close_fds.append(p2cread)
1367 _winapi.CloseHandle(_)
1368 elif stdin == PIPE:
1369 p2cread, p2cwrite = _winapi.CreatePipe(None, 0)
1370 p2cread, p2cwrite = Handle(p2cread), Handle(p2cwrite)
1371 err_close_fds.extend((p2cread, p2cwrite))
1372 elif stdin == DEVNULL:
1373 p2cread = msvcrt.get_osfhandle(self._get_devnull())
1374 elif isinstance(stdin, int):
1375 p2cread = msvcrt.get_osfhandle(stdin)
1376 else:
1377 # Assuming file-like object
1378 p2cread = msvcrt.get_osfhandle(stdin.fileno())
1379 p2cread = self._make_inheritable(p2cread)
1380
1381 if stdout is None:
1382 c2pwrite = _winapi.GetStdHandle(_winapi.STD_OUTPUT_HANDLE)
1383 if c2pwrite is None:
1384 _, c2pwrite = _winapi.CreatePipe(None, 0)
1385 c2pwrite = Handle(c2pwrite)
1386 err_close_fds.append(c2pwrite)
1387 _winapi.CloseHandle(_)
1388 elif stdout == PIPE:
1389 c2pread, c2pwrite = _winapi.CreatePipe(None, 0)
1390 c2pread, c2pwrite = Handle(c2pread), Handle(c2pwrite)
1391 err_close_fds.extend((c2pread, c2pwrite))
1392 elif stdout == DEVNULL:
1393 c2pwrite = msvcrt.get_osfhandle(self._get_devnull())
1394 elif isinstance(stdout, int):
1395 c2pwrite = msvcrt.get_osfhandle(stdout)
1396 else:
1397 # Assuming file-like object
1398 c2pwrite = msvcrt.get_osfhandle(stdout.fileno())
1399 c2pwrite = self._make_inheritable(c2pwrite)
1400
1401 if stderr is None:
1402 errwrite = _winapi.GetStdHandle(_winapi.STD_ERROR_HANDLE)
1403 if errwrite is None:
1404 _, errwrite = _winapi.CreatePipe(None, 0)
1405 errwrite = Handle(errwrite)
1406 err_close_fds.append(errwrite)

Callers 1

__init__Method · 0.95

Calls 10

_on_error_fd_closerMethod · 0.95
_get_devnullMethod · 0.95
_make_inheritableMethod · 0.95
isinstanceFunction · 0.85
hasattrFunction · 0.85
HandleClass · 0.70
appendMethod · 0.45
extendMethod · 0.45
filenoMethod · 0.45
pipeMethod · 0.45

Tested by

no test coverage detected