Method: rich.console.Console._check_buffer
Calls: 690, Exceptions: 1, Paths: 7Back
Path 1: 336 calls (0.49)
1def _check_buffer(self) -> None:
2 """Check if the buffer may be rendered. Render it if it can (e.g. Console.quiet is False)
3 Rendering is supported on Windows, Unix and Jupyter environments. For
4 legacy Windows consoles, the win32 API is called directly.
5 This method will also record what it renders if recording is enabled via Console.record.
6 """
7 if self.quiet:
8 del self._buffer[:]
9 return
10 with self._lock:
11 if self.record:
12 with self._record_buffer_lock:
13 self._record_buffer.extend(self._buffer[:])
14
15 if self._buffer_index == 0:
16
17 if self.is_jupyter: # pragma: no cover
18 from .jupyter import display
19
20 display(self._buffer, self._render_buffer(self._buffer[:]))
21 del self._buffer[:]
22 else:
23 if WINDOWS:
24 use_legacy_windows_render = False
25 if self.legacy_windows:
26 try:
27 use_legacy_windows_render = (
28 self.file.fileno() in _STD_STREAMS_OUTPUT
29 )
30 except (ValueError, io.UnsupportedOperation):
31 pass
32
33 if use_legacy_windows_render:
34 from rich._win32_console import LegacyWindowsTerm
35 from rich._windows_renderer import legacy_windows_render
36
37 buffer = self._buffer[:]
38 if self.no_color and self._color_system:
39 buffer = list(Segment.remove_color(buffer))
40
41 legacy_windows_render(buffer, LegacyWindowsTerm(self.file))
42 else:
43 # Either a non-std stream on legacy Windows, or modern Windows.
44 text = self._render_buffer(self._buffer[:])
45 # https://bugs.python.org/issue37871
46 write = self.file.write
47 for line in text.splitlines(True):
48 try:
49 write(line)
50 except UnicodeEncodeError as error:
51 error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***"
52 raise
53 else:
54 text = self._render_buffer(self._buffer[:])
55 try:
56 self.file.write(text)
57 except UnicodeEncodeError as error:
58 error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***"
59 raise
60
61 self.file.flush()
62 del self._buffer[:]
Path 2: 309 calls (0.45)
1def _check_buffer(self) -> None:
2 """Check if the buffer may be rendered. Render it if it can (e.g. Console.quiet is False)
3 Rendering is supported on Windows, Unix and Jupyter environments. For
4 legacy Windows consoles, the win32 API is called directly.
5 This method will also record what it renders if recording is enabled via Console.record.
6 """
7 if self.quiet:
8 del self._buffer[:]
9 return
10 with self._lock:
11 if self.record:
12 with self._record_buffer_lock:
13 self._record_buffer.extend(self._buffer[:])
14
15 if self._buffer_index == 0:
16
17 if self.is_jupyter: # pragma: no cover
18 from .jupyter import display
19
20 display(self._buffer, self._render_buffer(self._buffer[:]))
21 del self._buffer[:]
22 else:
23 if WINDOWS:
24 use_legacy_windows_render = False
25 if self.legacy_windows:
26 try:
27 use_legacy_windows_render = (
28 self.file.fileno() in _STD_STREAMS_OUTPUT
29 )
30 except (ValueError, io.UnsupportedOperation):
31 pass
32
33 if use_legacy_windows_render:
34 from rich._win32_console import LegacyWindowsTerm
35 from rich._windows_renderer import legacy_windows_render
36
37 buffer = self._buffer[:]
38 if self.no_color and self._color_system:
39 buffer = list(Segment.remove_color(buffer))
40
41 legacy_windows_render(buffer, LegacyWindowsTerm(self.file))
42 else:
43 # Either a non-std stream on legacy Windows, or modern Windows.
44 text = self._render_buffer(self._buffer[:])
45 # https://bugs.python.org/issue37871
46 write = self.file.write
47 for line in text.splitlines(True):
48 try:
49 write(line)
50 except UnicodeEncodeError as error:
51 error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***"
52 raise
53 else:
54 text = self._render_buffer(self._buffer[:])
55 try:
56 self.file.write(text)
57 except UnicodeEncodeError as error:
58 error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***"
59 raise
60
61 self.file.flush()
62 del self._buffer[:]
Path 3: 36 calls (0.05)
1def _check_buffer(self) -> None:
2 """Check if the buffer may be rendered. Render it if it can (e.g. Console.quiet is False)
3 Rendering is supported on Windows, Unix and Jupyter environments. For
4 legacy Windows consoles, the win32 API is called directly.
5 This method will also record what it renders if recording is enabled via Console.record.
6 """
7 if self.quiet:
8 del self._buffer[:]
9 return
10 with self._lock:
11 if self.record:
12 with self._record_buffer_lock:
13 self._record_buffer.extend(self._buffer[:])
14
15 if self._buffer_index == 0:
16
17 if self.is_jupyter: # pragma: no cover
18 from .jupyter import display
19
20 display(self._buffer, self._render_buffer(self._buffer[:]))
21 del self._buffer[:]
22 else:
23 if WINDOWS:
24 use_legacy_windows_render = False
25 if self.legacy_windows:
26 try:
27 use_legacy_windows_render = (
28 self.file.fileno() in _STD_STREAMS_OUTPUT
29 )
30 except (ValueError, io.UnsupportedOperation):
31 pass
32
33 if use_legacy_windows_render:
34 from rich._win32_console import LegacyWindowsTerm
35 from rich._windows_renderer import legacy_windows_render
36
37 buffer = self._buffer[:]
38 if self.no_color and self._color_system:
39 buffer = list(Segment.remove_color(buffer))
40
41 legacy_windows_render(buffer, LegacyWindowsTerm(self.file))
42 else:
43 # Either a non-std stream on legacy Windows, or modern Windows.
44 text = self._render_buffer(self._buffer[:])
45 # https://bugs.python.org/issue37871
46 write = self.file.write
47 for line in text.splitlines(True):
48 try:
49 write(line)
50 except UnicodeEncodeError as error:
51 error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***"
52 raise
53 else:
54 text = self._render_buffer(self._buffer[:])
55 try:
56 self.file.write(text)
57 except UnicodeEncodeError as error:
58 error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***"
59 raise
60
61 self.file.flush()
62 del self._buffer[:]
Path 4: 6 calls (0.01)
1def _check_buffer(self) -> None:
2 """Check if the buffer may be rendered. Render it if it can (e.g. Console.quiet is False)
3 Rendering is supported on Windows, Unix and Jupyter environments. For
4 legacy Windows consoles, the win32 API is called directly.
5 This method will also record what it renders if recording is enabled via Console.record.
6 """
7 if self.quiet:
8 del self._buffer[:]
9 return
10 with self._lock:
11 if self.record:
12 with self._record_buffer_lock:
13 self._record_buffer.extend(self._buffer[:])
14
15 if self._buffer_index == 0:
16
17 if self.is_jupyter: # pragma: no cover
18 from .jupyter import display
19
20 display(self._buffer, self._render_buffer(self._buffer[:]))
21 del self._buffer[:]
22 else:
23 if WINDOWS:
24 use_legacy_windows_render = False
25 if self.legacy_windows:
26 try:
27 use_legacy_windows_render = (
28 self.file.fileno() in _STD_STREAMS_OUTPUT
29 )
30 except (ValueError, io.UnsupportedOperation):
31 pass
32
33 if use_legacy_windows_render:
34 from rich._win32_console import LegacyWindowsTerm
35 from rich._windows_renderer import legacy_windows_render
36
37 buffer = self._buffer[:]
38 if self.no_color and self._color_system:
39 buffer = list(Segment.remove_color(buffer))
40
41 legacy_windows_render(buffer, LegacyWindowsTerm(self.file))
42 else:
43 # Either a non-std stream on legacy Windows, or modern Windows.
44 text = self._render_buffer(self._buffer[:])
45 # https://bugs.python.org/issue37871
46 write = self.file.write
47 for line in text.splitlines(True):
48 try:
49 write(line)
50 except UnicodeEncodeError as error:
51 error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***"
52 raise
53 else:
54 text = self._render_buffer(self._buffer[:])
55 try:
56 self.file.write(text)
57 except UnicodeEncodeError as error:
58 error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***"
59 raise
60
61 self.file.flush()
62 del self._buffer[:]
Path 5: 1 calls (0.0)
1def _check_buffer(self) -> None:
2 """Check if the buffer may be rendered. Render it if it can (e.g. Console.quiet is False)
3 Rendering is supported on Windows, Unix and Jupyter environments. For
4 legacy Windows consoles, the win32 API is called directly.
5 This method will also record what it renders if recording is enabled via Console.record.
6 """
7 if self.quiet:
8 del self._buffer[:]
9 return
10 with self._lock:
11 if self.record:
12 with self._record_buffer_lock:
13 self._record_buffer.extend(self._buffer[:])
14
15 if self._buffer_index == 0:
16
17 if self.is_jupyter: # pragma: no cover
18 from .jupyter import display
19
20 display(self._buffer, self._render_buffer(self._buffer[:]))
21 del self._buffer[:]
22 else:
23 if WINDOWS:
24 use_legacy_windows_render = False
25 if self.legacy_windows:
26 try:
27 use_legacy_windows_render = (
28 self.file.fileno() in _STD_STREAMS_OUTPUT
29 )
30 except (ValueError, io.UnsupportedOperation):
31 pass
32
33 if use_legacy_windows_render:
34 from rich._win32_console import LegacyWindowsTerm
35 from rich._windows_renderer import legacy_windows_render
36
37 buffer = self._buffer[:]
38 if self.no_color and self._color_system:
39 buffer = list(Segment.remove_color(buffer))
40
41 legacy_windows_render(buffer, LegacyWindowsTerm(self.file))
42 else:
43 # Either a non-std stream on legacy Windows, or modern Windows.
44 text = self._render_buffer(self._buffer[:])
45 # https://bugs.python.org/issue37871
46 write = self.file.write
47 for line in text.splitlines(True):
48 try:
49 write(line)
50 except UnicodeEncodeError as error:
51 error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***"
52 raise
53 else:
54 text = self._render_buffer(self._buffer[:])
55 try:
56 self.file.write(text)
57 except UnicodeEncodeError as error:
58 error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***"
59 raise
60
61 self.file.flush()
62 del self._buffer[:]
Path 6: 1 calls (0.0)
UnicodeEncodeError (1)
1def _check_buffer(self) -> None:
2 """Check if the buffer may be rendered. Render it if it can (e.g. Console.quiet is False)
3 Rendering is supported on Windows, Unix and Jupyter environments. For
4 legacy Windows consoles, the win32 API is called directly.
5 This method will also record what it renders if recording is enabled via Console.record.
6 """
7 if self.quiet:
8 del self._buffer[:]
9 return
10 with self._lock:
11 if self.record:
12 with self._record_buffer_lock:
13 self._record_buffer.extend(self._buffer[:])
14
15 if self._buffer_index == 0:
16
17 if self.is_jupyter: # pragma: no cover
18 from .jupyter import display
19
20 display(self._buffer, self._render_buffer(self._buffer[:]))
21 del self._buffer[:]
22 else:
23 if WINDOWS:
24 use_legacy_windows_render = False
25 if self.legacy_windows:
26 try:
27 use_legacy_windows_render = (
28 self.file.fileno() in _STD_STREAMS_OUTPUT
29 )
30 except (ValueError, io.UnsupportedOperation):
31 pass
32
33 if use_legacy_windows_render:
34 from rich._win32_console import LegacyWindowsTerm
35 from rich._windows_renderer import legacy_windows_render
36
37 buffer = self._buffer[:]
38 if self.no_color and self._color_system:
39 buffer = list(Segment.remove_color(buffer))
40
41 legacy_windows_render(buffer, LegacyWindowsTerm(self.file))
42 else:
43 # Either a non-std stream on legacy Windows, or modern Windows.
44 text = self._render_buffer(self._buffer[:])
45 # https://bugs.python.org/issue37871
46 write = self.file.write
47 for line in text.splitlines(True):
48 try:
49 write(line)
50 except UnicodeEncodeError as error:
51 error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***"
52 raise
53 else:
54 text = self._render_buffer(self._buffer[:])
55 try:
56 self.file.write(text)
57 except UnicodeEncodeError as error:
58 error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***"
59 raise
60
61 self.file.flush()
62 del self._buffer[:]
Path 7: 1 calls (0.0)
None (1)
1def _check_buffer(self) -> None:
2 """Check if the buffer may be rendered. Render it if it can (e.g. Console.quiet is False)
3 Rendering is supported on Windows, Unix and Jupyter environments. For
4 legacy Windows consoles, the win32 API is called directly.
5 This method will also record what it renders if recording is enabled via Console.record.
6 """
7 if self.quiet:
8 del self._buffer[:]
9 return
10 with self._lock:
11 if self.record:
12 with self._record_buffer_lock:
13 self._record_buffer.extend(self._buffer[:])
14
15 if self._buffer_index == 0:
16
17 if self.is_jupyter: # pragma: no cover
18 from .jupyter import display
19
20 display(self._buffer, self._render_buffer(self._buffer[:]))
21 del self._buffer[:]
22 else:
23 if WINDOWS:
24 use_legacy_windows_render = False
25 if self.legacy_windows:
26 try:
27 use_legacy_windows_render = (
28 self.file.fileno() in _STD_STREAMS_OUTPUT
29 )
30 except (ValueError, io.UnsupportedOperation):
31 pass
32
33 if use_legacy_windows_render:
34 from rich._win32_console import LegacyWindowsTerm
35 from rich._windows_renderer import legacy_windows_render
36
37 buffer = self._buffer[:]
38 if self.no_color and self._color_system:
39 buffer = list(Segment.remove_color(buffer))
40
41 legacy_windows_render(buffer, LegacyWindowsTerm(self.file))
42 else:
43 # Either a non-std stream on legacy Windows, or modern Windows.
44 text = self._render_buffer(self._buffer[:])
45 # https://bugs.python.org/issue37871
46 write = self.file.write
47 for line in text.splitlines(True):
48 try:
49 write(line)
50 except UnicodeEncodeError as error:
51 error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***"
52 raise
53 else:
54 text = self._render_buffer(self._buffer[:])
55 try:
56 self.file.write(text)
57 except UnicodeEncodeError as error:
58 error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***"
59 raise
60
61 self.file.flush()
62 del self._buffer[:]