[pypy-commit] pypy py3k: kill stupid softspace because it's stupid
pjenvey
noreply at buildbot.pypy.org
Fri Feb 22 01:41:30 CET 2013
Author: Philip Jenvey <pjenvey at underboss.org>
Branch: py3k
Changeset: r61580:442dad67f48e
Date: 2013-02-21 16:40 -0800
http://bitbucket.org/pypy/pypy/changeset/442dad67f48e/
Log: kill stupid softspace because it's stupid
diff --git a/pypy/interpreter/app_main.py b/pypy/interpreter/app_main.py
--- a/pypy/interpreter/app_main.py
+++ b/pypy/interpreter/app_main.py
@@ -47,24 +47,11 @@
"""Calls f() and handles all OperationErrors.
Intended use is to run the main program or one interactive statement.
run_protected() handles details like forwarding exceptions to
- sys.excepthook(), catching SystemExit, printing a newline after
- sys.stdout if needed, etc.
+ sys.excepthook(), catching SystemExit, etc.
"""
try:
# run it
f(*fargs, **fkwds)
-
- # we arrive here if no exception is raised. stdout cosmetics...
- try:
- stdout = sys.stdout
- softspace = stdout.softspace
- except AttributeError:
- pass
- # Don't crash if user defined stdout doesn't have softspace
- else:
- if softspace:
- stdout.write('\n')
-
except SystemExit as e:
handle_sys_exit(e)
except:
diff --git a/pypy/interpreter/main.py b/pypy/interpreter/main.py
--- a/pypy/interpreter/main.py
+++ b/pypy/interpreter/main.py
@@ -95,25 +95,11 @@
"""Calls f() and handle all OperationErrors.
Intended use is to run the main program or one interactive statement.
run_protected() handles details like forwarding exceptions to
- sys.excepthook(), catching SystemExit, printing a newline after
- sys.stdout if needed, etc.
+ sys.excepthook(), catching SystemExit, etc.
"""
try:
# run it
f()
-
- # we arrive here if no exception is raised. stdout cosmetics...
- try:
- w_stdout = space.sys.get('stdout')
- w_softspace = space.getattr(w_stdout, space.wrap('softspace'))
- except OperationError, e:
- if not e.match(space, space.w_AttributeError):
- raise
- # Don't crash if user defined stdout doesn't have softspace
- else:
- if space.is_true(w_softspace):
- space.call_method(w_stdout, 'write', space.wrap('\n'))
-
except OperationError, operationerr:
operationerr.normalize_exception(space)
w_type = operationerr.w_type
diff --git a/pypy/interpreter/pyopcode.py b/pypy/interpreter/pyopcode.py
--- a/pypy/interpreter/pyopcode.py
+++ b/pypy/interpreter/pyopcode.py
@@ -1472,43 +1472,20 @@
displayhook(obj)
def print_item_to(x, stream):
- if file_softspace(stream, False):
- stream.write(" ")
-
# give to write() an argument which is either a string or a unicode
# (and let it deals itself with unicode handling)
if not isinstance(x, str):
x = str(x)
stream.write(x)
- # add a softspace unless we just printed a string which ends in a '\t'
- # or '\n' -- or more generally any whitespace character but ' '
- if x:
- lastchar = x[-1]
- if lastchar.isspace() and lastchar != ' ':
- return
- file_softspace(stream, True)
-
def print_item(x):
print_item_to(x, sys_stdout())
def print_newline_to(stream):
stream.write("\n")
- file_softspace(stream, False)
def print_newline():
print_newline_to(sys_stdout())
-
- def file_softspace(file, newflag):
- try:
- softspace = file.softspace
- except AttributeError:
- softspace = 0
- try:
- file.softspace = newflag
- except AttributeError:
- pass
- return softspace
''', filename=__file__)
sys_stdout = app.interphook('sys_stdout')
@@ -1517,7 +1494,6 @@
print_item_to = app.interphook('print_item_to')
print_newline = app.interphook('print_newline')
print_newline_to= app.interphook('print_newline_to')
-file_softspace = app.interphook('file_softspace')
app = gateway.applevel(r'''
def find_metaclass(bases, namespace, globals, builtin):
diff --git a/pypy/interpreter/test/test_interpreter.py b/pypy/interpreter/test/test_interpreter.py
--- a/pypy/interpreter/test/test_interpreter.py
+++ b/pypy/interpreter/test/test_interpreter.py
@@ -308,7 +308,6 @@
assert out.data == [(str, chr(0xa2)), (str, "\n")]
del out.data[:]
del out.encoding
- # we don't care about softspace anymore
print("foo\t", "bar\n", "trick", "baz\n")
assert out.data == [(str, "foo\t"),
(str, " "),
diff --git a/pypy/module/__builtin__/test/test_rawinput.py b/pypy/module/__builtin__/test/test_rawinput.py
--- a/pypy/module/__builtin__/test/test_rawinput.py
+++ b/pypy/module/__builtin__/test/test_rawinput.py
@@ -51,52 +51,3 @@
finally:
sys.stdin = stdin
assert result == 'foo'
-
- def test_softspace(self):
- import sys
- import io
- fin = io.StringIO()
- fout = io.StringIO()
-
- fin.write("Coconuts\n")
- fin.seek(0)
-
- sys_stdin_orig = sys.stdin
- sys_stdout_orig = sys.stdout
-
- sys.stdin = fin
- sys.stdout = fout
-
- print("test", end='')
- input("test")
-
- sys.stdin = sys_stdin_orig
- sys.stdout = sys_stdout_orig
-
- fout.seek(0)
- assert fout.read() == "testtest"
-
- def test_softspace_carryover(self):
- import sys
- import io
- fin = io.StringIO()
- fout = io.StringIO()
-
- fin.write("Coconuts\n")
- fin.seek(0)
-
- sys_stdin_orig = sys.stdin
- sys_stdout_orig = sys.stdout
-
- sys.stdin = fin
- sys.stdout = fout
-
- print("test", end='')
- input("test")
- print("test", end='')
-
- sys.stdin = sys_stdin_orig
- sys.stdout = sys_stdout_orig
-
- fout.seek(0)
- assert fout.read() == "testtesttest"
diff --git a/pypy/module/cpyext/pyfile.py b/pypy/module/cpyext/pyfile.py
--- a/pypy/module/cpyext/pyfile.py
+++ b/pypy/module/cpyext/pyfile.py
@@ -81,27 +81,3 @@
def PyFile_Name(space, w_p):
"""Return the name of the file specified by p as a string object."""
return borrow_from(w_p, space.getattr(w_p, space.wrap("name")))
-
- at cpython_api([PyObject, rffi.INT_real], rffi.INT_real, error=CANNOT_FAIL)
-def PyFile_SoftSpace(space, w_p, newflag):
- """
- This function exists for internal use by the interpreter. Set the
- softspace attribute of p to newflag and return the previous value.
- p does not have to be a file object for this function to work
- properly; any object is supported (thought its only interesting if
- the softspace attribute can be set). This function clears any
- errors, and will return 0 as the previous value if the attribute
- either does not exist or if there were errors in retrieving it.
- There is no way to detect errors from this function, but doing so
- should not be needed."""
- try:
- if rffi.cast(lltype.Signed, newflag):
- w_newflag = space.w_True
- else:
- w_newflag = space.w_False
- oldflag = space.int_w(space.getattr(w_p, space.wrap("softspace")))
- space.setattr(w_p, space.wrap("softspace"), w_newflag)
- return oldflag
- except OperationError, e:
- return 0
-
diff --git a/pypy/module/cpyext/test/test_pyfile.py b/pypy/module/cpyext/test/test_pyfile.py
--- a/pypy/module/cpyext/test/test_pyfile.py
+++ b/pypy/module/cpyext/test/test_pyfile.py
@@ -83,19 +83,3 @@
out, err = capfd.readouterr()
out = out.replace('\r\n', '\n')
assert out == "test\n'test\\n'"
-
- def test_file_softspace(self, space, api, capfd):
- w_stdout = space.sys.get("stdout")
- assert api.PyFile_SoftSpace(w_stdout, 1) == 0
- assert api.PyFile_SoftSpace(w_stdout, 0) == 1
-
- api.PyFile_SoftSpace(w_stdout, 1)
- w_ns = space.newdict()
- space.exec_("print 1,", w_ns, w_ns)
- space.exec_("print 2,", w_ns, w_ns)
- api.PyFile_SoftSpace(w_stdout, 0)
- space.exec_("print 3", w_ns, w_ns)
- space.call_method(w_stdout, "flush")
- out, err = capfd.readouterr()
- out = out.replace('\r\n', '\n')
- assert out == " 1 23\n"
More information about the pypy-commit
mailing list