Skip to content

Commit 35050e7

Browse files
committed
refactor: wrap_stdio
1 parent e36d432 commit 35050e7

File tree

2 files changed

+117
-115
lines changed

2 files changed

+117
-115
lines changed

commitizen/wrap_stdio/linux.py

+46-45
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,62 @@
1+
import os
12
import sys
23

3-
if sys.platform == "linux": # pragma: no cover
4-
import os
54

6-
# from io import IOBase
5+
class WrapStdinLinux:
6+
def __init__(self):
7+
fd = os.open("/dev/tty", os.O_RDWR | os.O_NOCTTY)
8+
tty = open(fd, "wb+", buffering=0)
9+
self.tty = tty
710

8-
class WrapStdinLinux:
9-
def __init__(self):
10-
fd = os.open("/dev/tty", os.O_RDWR | os.O_NOCTTY)
11-
tty = open(fd, "wb+", buffering=0)
12-
self.tty = tty
11+
def __getattr__(self, key):
12+
if key == "encoding":
13+
return "UTF-8"
14+
return getattr(self.tty, key)
1315

14-
def __getattr__(self, key):
15-
if key == "encoding":
16-
return "UTF-8"
17-
return getattr(self.tty, key)
16+
def __del__(self):
17+
self.tty.close()
1818

19-
def __del__(self):
20-
self.tty.close()
2119

22-
class WrapStdoutLinux:
23-
def __init__(self):
24-
tty = open("/dev/tty", "w")
25-
self.tty = tty
20+
class WrapStdoutLinux:
21+
def __init__(self):
22+
tty = open("/dev/tty", "w")
23+
self.tty = tty
2624

27-
def __getattr__(self, key):
28-
return getattr(self.tty, key)
25+
def __getattr__(self, key):
26+
return getattr(self.tty, key)
2927

30-
def __del__(self):
31-
self.tty.close()
28+
def __del__(self):
29+
self.tty.close()
3230

33-
backup_stdin = None
34-
backup_stdout = None
35-
backup_stderr = None
3631

37-
def _wrap_stdio():
38-
global backup_stdin
39-
backup_stdin = sys.stdin
40-
sys.stdin = WrapStdinLinux()
32+
backup_stdin = None
33+
backup_stdout = None
34+
backup_stderr = None
4135

42-
global backup_stdout
43-
backup_stdout = sys.stdout
44-
sys.stdout = WrapStdoutLinux()
4536

46-
global backup_stderr
47-
backup_stderr = sys.stderr
48-
sys.stderr = WrapStdoutLinux()
37+
def _wrap_stdio():
38+
global backup_stdin
39+
backup_stdin = sys.stdin
40+
sys.stdin = WrapStdinLinux()
4941

50-
def _unwrap_stdio():
51-
global backup_stdin
52-
sys.stdin.close()
53-
sys.stdin = backup_stdin
42+
global backup_stdout
43+
backup_stdout = sys.stdout
44+
sys.stdout = WrapStdoutLinux()
5445

55-
global backup_stdout
56-
sys.stdout.close()
57-
sys.stdout = backup_stdout
46+
global backup_stderr
47+
backup_stderr = sys.stderr
48+
sys.stderr = WrapStdoutLinux()
5849

59-
global backup_stderr
60-
sys.stderr.close()
61-
sys.stderr = backup_stderr
50+
51+
def _unwrap_stdio():
52+
global backup_stdin
53+
sys.stdin.close()
54+
sys.stdin = backup_stdin
55+
56+
global backup_stdout
57+
sys.stdout.close()
58+
sys.stdout = backup_stdout
59+
60+
global backup_stderr
61+
sys.stderr.close()
62+
sys.stderr = backup_stderr

commitizen/wrap_stdio/unix.py

+71-70
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,73 @@
1+
import os
2+
import selectors
13
import sys
4+
from asyncio import (
5+
DefaultEventLoopPolicy,
6+
SelectorEventLoop,
7+
get_event_loop_policy,
8+
set_event_loop_policy,
9+
)
10+
from io import IOBase
211

3-
if sys.platform != "win32" and sys.platform != "linux": # pragma: no cover
4-
import os
5-
import selectors
6-
from asyncio import (
7-
DefaultEventLoopPolicy,
8-
SelectorEventLoop,
9-
get_event_loop_policy,
10-
set_event_loop_policy,
11-
)
12-
from io import IOBase
13-
14-
class WrapStdioUnix:
15-
def __init__(self, stdx: IOBase):
16-
self._fileno = stdx.fileno()
17-
fd = os.open("/dev/tty", os.O_RDWR | os.O_NOCTTY)
18-
if self._fileno == 0:
19-
tty = open(fd, "wb+", buffering=0)
20-
else:
21-
tty = open(fd, "rb+", buffering=0)
22-
self.tty = tty
23-
24-
def __getattr__(self, key):
25-
if key == "encoding":
26-
return "UTF-8"
27-
return getattr(self.tty, key)
28-
29-
def __del__(self):
30-
self.tty.close()
31-
32-
# backup_event_loop = None
33-
backup_event_loop_policy = None
34-
backup_stdin = None
35-
backup_stdout = None
36-
backup_stderr = None
37-
38-
def _wrap_stdio():
39-
global backup_event_loop_policy
40-
backup_event_loop_policy = get_event_loop_policy()
41-
42-
event_loop = DefaultEventLoopPolicy()
43-
event_loop.set_event_loop(SelectorEventLoop(selectors.SelectSelector()))
44-
set_event_loop_policy(event_loop)
45-
46-
global backup_stdin
47-
backup_stdin = sys.stdin
48-
sys.stdin = WrapStdioUnix(sys.stdin)
49-
50-
global backup_stdout
51-
backup_stdout = sys.stdout
52-
sys.stdout = WrapStdioUnix(sys.stdout)
53-
54-
global backup_stderr
55-
backup_stdout = sys.stderr
56-
sys.stderr = WrapStdioUnix(sys.stderr)
57-
58-
def _unwrap_stdio():
59-
global backup_event_loop_policy
60-
set_event_loop_policy(backup_event_loop_policy)
61-
62-
global backup_stdin
63-
sys.stdin.close()
64-
sys.stdin = backup_stdin
65-
66-
global backup_stdout
67-
sys.stdout.close()
68-
sys.stdout = backup_stdout
69-
70-
global backup_stderr
71-
sys.stderr.close()
72-
sys.stderr = backup_stderr
12+
13+
class WrapStdioUnix:
14+
def __init__(self, stdx: IOBase):
15+
self._fileno = stdx.fileno()
16+
fd = os.open("/dev/tty", os.O_RDWR | os.O_NOCTTY)
17+
if self._fileno == 0:
18+
tty = open(fd, "wb+", buffering=0)
19+
else:
20+
tty = open(fd, "rb+", buffering=0)
21+
self.tty = tty
22+
23+
def __getattr__(self, key):
24+
if key == "encoding":
25+
return "UTF-8"
26+
return getattr(self.tty, key)
27+
28+
def __del__(self):
29+
self.tty.close()
30+
31+
32+
backup_event_loop_policy = None
33+
backup_stdin = None
34+
backup_stdout = None
35+
backup_stderr = None
36+
37+
38+
def _wrap_stdio():
39+
global backup_event_loop_policy
40+
backup_event_loop_policy = get_event_loop_policy()
41+
42+
event_loop = DefaultEventLoopPolicy()
43+
event_loop.set_event_loop(SelectorEventLoop(selectors.SelectSelector()))
44+
set_event_loop_policy(event_loop)
45+
46+
global backup_stdin
47+
backup_stdin = sys.stdin
48+
sys.stdin = WrapStdioUnix(sys.stdin)
49+
50+
global backup_stdout
51+
backup_stdout = sys.stdout
52+
sys.stdout = WrapStdioUnix(sys.stdout)
53+
54+
global backup_stderr
55+
backup_stdout = sys.stderr
56+
sys.stderr = WrapStdioUnix(sys.stderr)
57+
58+
59+
def _unwrap_stdio():
60+
global backup_event_loop_policy
61+
set_event_loop_policy(backup_event_loop_policy)
62+
63+
global backup_stdin
64+
sys.stdin.close()
65+
sys.stdin = backup_stdin
66+
67+
global backup_stdout
68+
sys.stdout.close()
69+
sys.stdout = backup_stdout
70+
71+
global backup_stderr
72+
sys.stderr.close()
73+
sys.stderr = backup_stderr

0 commit comments

Comments
 (0)