Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 7467f12

Browse filesBrowse files
authored
Revert "Fix: fileno error google colab (abetlen#729) (abetlen#1156)" (abetlen#1157)
This reverts commit bebfba0.
1 parent bebfba0 commit 7467f12
Copy full SHA for 7467f12

File tree

Expand file treeCollapse file tree

1 file changed

+30
-8
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+30
-8
lines changed

‎llama_cpp/_utils.py

Copy file name to clipboardExpand all lines: llama_cpp/_utils.py
+30-8Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
import sys
55
from typing import Any, Dict
66

7-
class NullDevice():
8-
def write(self, s):
9-
pass
7+
# Avoid "LookupError: unknown encoding: ascii" when open() called in a destructor
8+
outnull_file = open(os.devnull, "w")
9+
errnull_file = open(os.devnull, "w")
1010

1111
class suppress_stdout_stderr(object):
1212
# NOTE: these must be "saved" here to avoid exceptions when using
@@ -21,19 +21,41 @@ def __init__(self, disable: bool = True):
2121
def __enter__(self):
2222
if self.disable:
2323
return self
24+
25+
# Check if sys.stdout and sys.stderr have fileno method
26+
if not hasattr(self.sys.stdout, 'fileno') or not hasattr(self.sys.stderr, 'fileno'):
27+
return self # Return the instance without making changes
28+
29+
self.old_stdout_fileno_undup = self.sys.stdout.fileno()
30+
self.old_stderr_fileno_undup = self.sys.stderr.fileno()
31+
32+
self.old_stdout_fileno = self.os.dup(self.old_stdout_fileno_undup)
33+
self.old_stderr_fileno = self.os.dup(self.old_stderr_fileno_undup)
34+
2435
self.old_stdout = self.sys.stdout
2536
self.old_stderr = self.sys.stderr
2637

27-
self.sys.stdout = NullDevice()
28-
self.sys.stderr = NullDevice()
38+
self.os.dup2(outnull_file.fileno(), self.old_stdout_fileno_undup)
39+
self.os.dup2(errnull_file.fileno(), self.old_stderr_fileno_undup)
40+
41+
self.sys.stdout = outnull_file
42+
self.sys.stderr = errnull_file
2943
return self
3044

3145
def __exit__(self, *_):
3246
if self.disable:
3347
return
34-
35-
self.sys.stdout = self.old_stdout
36-
self.sys.stderr = self.old_stderr
48+
49+
# Check if sys.stdout and sys.stderr have fileno method
50+
if hasattr(self.sys.stdout, 'fileno') and hasattr(self.sys.stderr, 'fileno'):
51+
self.sys.stdout = self.old_stdout
52+
self.sys.stderr = self.old_stderr
53+
54+
self.os.dup2(self.old_stdout_fileno, self.old_stdout_fileno_undup)
55+
self.os.dup2(self.old_stderr_fileno, self.old_stderr_fileno_undup)
56+
57+
self.os.close(self.old_stdout_fileno)
58+
self.os.close(self.old_stderr_fileno)
3759

3860

3961
class MetaSingleton(type):

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.