@@ -16,14 +16,14 @@ def get_path_to_preferences_folder(
1616 # and set the path for all user preferences
1717 path = pathlib .Path .home () / "Library" / "Preferences" / "openadapt"
1818 if not path .exists ():
19- path .mkdir ()
19+ path .mkdir (parents = True , exist_ok = True )
2020 return path
2121 else :
2222 # if windows, get the path to the %APPDATA% directory and set the path
2323 # for all user preferences
2424 path = pathlib .Path .home () / "AppData" / "Roaming" / "openadapt"
2525 if not path .exists ():
26- path .mkdir ()
26+ path .mkdir (parents = True , exist_ok = True )
2727 return path
2828
2929
@@ -32,26 +32,27 @@ def is_running_from_executable() -> bool:
3232 return getattr (sys , "frozen" , False )
3333
3434
35- def override_stdout_stderr () -> object :
36- """Override stdout and stderr to /dev/null when running from an executable ."""
35+ class RedirectOutput :
36+ """Context manager to redirect stdout and stderr to /dev/null."""
3737
38- class StdoutStderrOverride :
39- def __init__ (self ) -> None :
40- self .stdout = None
41- self .stderr = None
38+ def __enter__ (self ) -> "RedirectOutput" :
39+ """Redirect stdout and stderr to /dev/null."""
40+ if is_running_from_executable ():
41+ self .old_stdout = sys .stdout
42+ self .old_stderr = sys .stderr
43+ null_stream = open (os .devnull , "a" )
44+ sys .stdout = sys .stderr = null_stream
45+ return self
4246
43- def __enter__ (self ) -> None :
44- if is_running_from_executable ():
45- self .old_stdout = sys .stdout
46- self .old_stderr = sys .stderr
47- sys .stdout = open (os .devnull , "a" )
48- sys .stderr = open (os .devnull , "a" )
47+ def __exit__ (self , exc_type : type , exc_value : Exception , traceback : type ) -> None :
48+ """Restore stdout and stderr."""
49+ if is_running_from_executable ():
50+ sys .stdout .close ()
51+ sys .stderr .close ()
52+ sys .stdout = self .old_stdout
53+ sys .stderr = self .old_stderr
4954
50- def __exit__ (self , * args : tuple , ** kwargs : dict ) -> None :
51- if is_running_from_executable ():
52- sys .stdout .close ()
53- sys .stderr .close ()
54- sys .stdout = self .old_stdout
55- sys .stderr = self .old_stderr
5655
57- return StdoutStderrOverride ()
56+ def redirect_stdout_stderr () -> RedirectOutput :
57+ """Get the RedirectOutput instance for use as a context manager."""
58+ return RedirectOutput ()
0 commit comments