Lib.modjy.modjy_write.py Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jython Show documentation
Show all versions of jython Show documentation
Jython is an implementation of the high-level, dynamic, object-oriented
language Python written in 100% Pure Java, and seamlessly integrated with
the Java platform. It thus allows you to run Python on any Java platform.
###
#
# Copyright Alan Kennedy.
#
# You may contact the copyright holder at this uri:
#
# http://www.xhaus.com/contact/modjy
#
# The licence under which this code is released is the Apache License v2.0.
#
# The terms and conditions of this license are listed in a file contained
# in the distribution that also contained this file, under the name
# LICENSE.txt.
#
# You may also read a copy of the license at the following web address.
#
# http://modjy.xhaus.com/LICENSE.txt
#
###
import types
from modjy_exceptions import *
class write_object:
def __init__(self, ostream):
self.ostream = ostream
self.num_writes = 0
def __call__(self, *args, **keywords):
if len(args) != 1 or not isinstance(args[0], types.StringTypes):
raise NonStringOutput("Invocation of write callable requires exactly one string argument")
try:
self.ostream.write(args[0]) # Jython implicitly converts the (binary) string to a byte array
# WSGI requires that all output be flushed before returning to the application
# According to the java docs: " The flush method of OutputStream does nothing."
# Still, leave it in place for now: it's in the right place should this
# code ever be ported to another platform.
self.ostream.flush()
self.num_writes += 1
except Exception, x:
raise ModjyIOException(x)