Skip to content

Commit

Permalink
Fix UnsupportedOperation: fileno in suppress_stdout_stderr (#961)
Browse files Browse the repository at this point in the history
* bug fixing

* llava from readme got this error: UnsupportedOperation: fileno   quick fix by checking hasattr

* multi modal params fix: add logits = True -> to make llava work

* multi modal params fix: add logits = True -> to make llava work

---------

Co-authored-by: Andrei <abetlen@gmail.com>
  • Loading branch information
zocainViken and abetlen authored Dec 12, 2023
1 parent b938ccc commit ac35f68
Showing 1 changed file with 16 additions and 10 deletions.
26 changes: 16 additions & 10 deletions llama_cpp/_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,18 @@ def __enter__(self):
if self.disable:
return self

# Check if sys.stdout and sys.stderr have fileno method
if not hasattr(self.sys.stdout, 'fileno') or not hasattr(self.sys.stderr, 'fileno'):
return self # Return the instance without making changes

self.outnull_file = self.open(self.os.devnull, "w")
self.errnull_file = self.open(self.os.devnull, "w")

self.old_stdout_fileno_undup = self.sys.stdout.fileno()
self.old_stderr_fileno_undup = self.sys.stderr.fileno()

self.old_stdout_fileno = self.os.dup(self.sys.stdout.fileno())
self.old_stderr_fileno = self.os.dup(self.sys.stderr.fileno())
self.old_stdout_fileno = self.os.dup(self.old_stdout_fileno_undup)
self.old_stderr_fileno = self.os.dup(self.old_stderr_fileno_undup)

self.old_stdout = self.sys.stdout
self.old_stderr = self.sys.stderr
Expand All @@ -40,14 +44,16 @@ def __exit__(self, *_):
if self.disable:
return

self.sys.stdout = self.old_stdout
self.sys.stderr = self.old_stderr
# Check if sys.stdout and sys.stderr have fileno method
if hasattr(self.sys.stdout, 'fileno') and hasattr(self.sys.stderr, 'fileno'):
self.sys.stdout = self.old_stdout
self.sys.stderr = self.old_stderr

self.os.dup2(self.old_stdout_fileno, self.old_stdout_fileno_undup)
self.os.dup2(self.old_stderr_fileno, self.old_stderr_fileno_undup)
self.os.dup2(self.old_stdout_fileno, self.old_stdout_fileno_undup)
self.os.dup2(self.old_stderr_fileno, self.old_stderr_fileno_undup)

self.os.close(self.old_stdout_fileno)
self.os.close(self.old_stderr_fileno)
self.os.close(self.old_stdout_fileno)
self.os.close(self.old_stderr_fileno)

self.outnull_file.close()
self.errnull_file.close()
self.outnull_file.close()
self.errnull_file.close()

0 comments on commit ac35f68

Please sign in to comment.