From: Guido van Rossum Date: Tue, 17 Apr 2007 21:49:04 +0000 (+0000) Subject: If $PYTHONNEWIO is set and nonempty, X-Git-Tag: v3.0a1~1045 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2fa74bbad5bf780b838b4da3ce827ae329ccddc1;p=python If $PYTHONNEWIO is set and nonempty, io.py is used for open() and sys.std{in,out,err}. Note that this currently breaks about 25 tests. --- diff --git a/Lib/site.py b/Lib/site.py index 95001ba314..48cf385fb9 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -400,6 +400,28 @@ def execsitecustomize(): (err.__class__.__name__, err)) +def installnewio(): + """Install new I/O library as default. + + This is only done if $PYTHONNEWIO is set and non-empty. + """ + if not os.getenv("PYTHONNEWIO"): + return + import io + # Trick so that open won't become a bound method when stored + # as a class variable (as dumbdbm does) + class open: + def __new__(cls, *args, **kwds): + return io.open(*args, **kwds) + __builtin__.classic_open = __builtin__.open + __builtin__.classic_file = __builtin__.file + __builtin__.open = open + __builtin__.file = open + sys.stdin = io.open(0, "r") + sys.stdout = io.open(1, "w") + sys.stderr = io.open(2, "w") + + def main(): abs__file__() paths_in_sys = removeduppaths() @@ -414,6 +436,7 @@ def main(): sethelper() aliasmbcs() setencoding() + installnewio() execsitecustomize() # Remove sys.setdefaultencoding() so that users cannot change the # encoding after initialization. The test for presence is needed when