1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
"""Python 3.8 compatibility and platform compatibility."""
import platform
import sys
if sys.version_info < (3, 9): # pragma: no cover
# pytype not supported
import unittest.mock
Literal = unittest.mock.MagicMock(name='Literal')
else: # pragma: no cover
from typing import Literal
Literal = Literal # CAVEAT: use None instead of Literal[None]
def get_startupinfo() -> None:
"""Return None for startupinfo argument of ``subprocess.Popen``."""
return None
assert get_startupinfo() is None, 'get_startupinfo() defaults to a no-op'
if platform.system() == 'Windows': # pragma: no cover
import subprocess
def get_startupinfo() -> subprocess.STARTUPINFO: # pytype: disable=module-attr
"""Return subprocess.STARTUPINFO instance hiding the console window."""
startupinfo = subprocess.STARTUPINFO() # pytype: disable=module-attr
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW # pytype: disable=module-attr
startupinfo.wShowWindow = subprocess.SW_HIDE # pytype: disable=module-attr
return startupinfo
|