Skip to content

Commit 2ff9863

Browse files
committed
fix: potential fix for #52 and windows
1 parent e583b26 commit 2ff9863

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

dmlcloud/util/logging.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,27 @@ def __init__(self, parent):
2424
self.parent = parent
2525

2626
def write(self, data):
27-
self.parent.file.write(data)
27+
if self.parent.file is not None:
28+
self.parent.file.write(data)
2829
self.parent.stdout.write(data)
2930

3031
def flush(self):
31-
self.parent.file.flush()
32+
if self.parent.file is not None:
33+
self.parent.file.flush()
3234
self.parent.stdout.flush()
3335

3436
class Stderr:
3537
def __init__(self, parent):
3638
self.parent = parent
3739

3840
def write(self, data):
39-
self.parent.file.write(data)
41+
if self.parent.file is not None:
42+
self.parent.file.write(data)
4043
self.parent.stderr.write(data)
4144

4245
def flush(self):
43-
self.parent.file.flush()
46+
if self.parent.file is not None:
47+
self.parent.file.flush()
4448
self.parent.stderr.flush()
4549

4650
def __init__(self, log_file: Path):
@@ -53,7 +57,7 @@ def install(self):
5357
if self.file is not None:
5458
return
5559

56-
self.file = self.path.open('a')
60+
self.file = self.path.open('a', encoding='utf-8', errors='replace')
5761
self.stdout = sys.stdout
5862
self.stderr = sys.stderr
5963
self.stdout.flush()
@@ -63,13 +67,19 @@ def install(self):
6367
sys.stderr = self.Stderr(self)
6468

6569
def uninstall(self):
70+
if self.file is None:
71+
raise ValueError('IORedirector is not installed')
72+
6673
self.stdout.flush()
6774
self.stderr.flush()
6875

6976
sys.stdout = self.stdout
7077
sys.stderr = self.stderr
7178

7279
self.file.close()
80+
self.file = None
81+
self.stdout = None
82+
self.stderr = None
7383

7484
def __enter__(self):
7585
self.install()

0 commit comments

Comments
 (0)