Author: hammer
Date: Tue Jun  1 16:33:19 2010
New Revision: 950149

URL: http://svn.apache.org/viewvc?rev=950149&view=rev
Log:
AVRO-526. Fall back to pure Python StringIO if cStringIO is not available
(Esteve Fernandez via hammer)


Modified:
    avro/branches/branch-1.3/CHANGES.txt
    avro/branches/branch-1.3/lang/py/src/avro/ipc.py
    avro/branches/branch-1.3/lang/py/test/test_io.py

Modified: avro/branches/branch-1.3/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/avro/branches/branch-1.3/CHANGES.txt?rev=950149&r1=950148&r2=950149&view=diff
==============================================================================
--- avro/branches/branch-1.3/CHANGES.txt (original)
+++ avro/branches/branch-1.3/CHANGES.txt Tue Jun  1 16:33:19 2010
@@ -6,6 +6,9 @@ Avro 1.3.3 (Unreleased)
 
     AVRO-525. remove unused imports (Esteve Fernandez via hammer)
 
+    AVRO-526. Fall back to pure Python StringIO if cStringIO is not available
+    (Esteve Fernandez via hammer)
+
   BUG FIXES
 
     AVRO-496. python sample_http_client.py is broken (Jeff Hodges via hammer)

Modified: avro/branches/branch-1.3/lang/py/src/avro/ipc.py
URL: 
http://svn.apache.org/viewvc/avro/branches/branch-1.3/lang/py/src/avro/ipc.py?rev=950149&r1=950148&r2=950149&view=diff
==============================================================================
--- avro/branches/branch-1.3/lang/py/src/avro/ipc.py (original)
+++ avro/branches/branch-1.3/lang/py/src/avro/ipc.py Tue Jun  1 16:33:19 2010
@@ -17,7 +17,10 @@
 Support for inter-process calls.
 """
 import httplib
-import cStringIO
+try:
+  from cStringIO import StringIO
+except ImportError:
+  from StringIO import StringIO
 import struct
 from avro import io
 from avro import protocol
@@ -128,7 +131,7 @@ class Requestor(object):
     Writes a request message and reads a response or error message.
     """
     # build handshake and call request
-    buffer_writer = cStringIO.StringIO()
+    buffer_writer = StringIO()
     buffer_encoder = io.BinaryEncoder(buffer_writer)
     self.write_handshake_request(buffer_encoder)
     self.write_call_request(message_name, request_datum, buffer_encoder)
@@ -138,7 +141,7 @@ class Requestor(object):
     call_response = self.transceiver.transceive(call_request)
 
     # process the handshake and call response
-    buffer_decoder = io.BinaryDecoder(cStringIO.StringIO(call_response))
+    buffer_decoder = io.BinaryDecoder(StringIO(call_response))
     call_response_exists = self.read_handshake_response(buffer_decoder)
     if call_response_exists:
       return self.read_call_response(message_name, buffer_decoder)
@@ -275,9 +278,9 @@ class Responder(object):
     Called by a server to deserialize a request, compute and serialize
     a response or error. Compare to 'handle()' in Thrift.
     """
-    buffer_reader = cStringIO.StringIO(call_request)
+    buffer_reader = StringIO(call_request)
     buffer_decoder = io.BinaryDecoder(buffer_reader)
-    buffer_writer = cStringIO.StringIO()
+    buffer_writer = StringIO()
     buffer_encoder = io.BinaryEncoder(buffer_writer)
     error = None
     response_metadata = {}
@@ -326,7 +329,7 @@ class Responder(object):
         self.write_error(writers_schema, error, buffer_encoder)
     except schema.AvroException, e:
       error = AvroRemoteException(str(e))
-      buffer_encoder = io.BinaryEncoder(cStringIO.StringIO())
+      buffer_encoder = io.BinaryEncoder(StringIO())
       META_WRITER.write(response_metadata, buffer_encoder)
       buffer_encoder.write_boolean(True)
       self.write_error(SYSTEM_ERROR_SCHEMA, error, buffer_encoder)
@@ -397,7 +400,7 @@ class FramedReader(object):
   def read_framed_message(self):
     message = []
     while True:
-      buffer = cStringIO.StringIO()
+      buffer = StringIO()
       buffer_length = self._read_buffer_length()
       if buffer_length == 0:
         return ''.join(message)
@@ -483,7 +486,7 @@ class HTTPTransceiver(object):
     req_resource = '/'
     req_headers = {'Content-Type': 'avro/binary'}
 
-    req_body_buffer = FramedWriter(cStringIO.StringIO())
+    req_body_buffer = FramedWriter(StringIO())
     req_body_buffer.write_framed_message(message)
     req_body = req_body_buffer.writer.getvalue()
 

Modified: avro/branches/branch-1.3/lang/py/test/test_io.py
URL: 
http://svn.apache.org/viewvc/avro/branches/branch-1.3/lang/py/test/test_io.py?rev=950149&r1=950148&r2=950149&view=diff
==============================================================================
--- avro/branches/branch-1.3/lang/py/test/test_io.py (original)
+++ avro/branches/branch-1.3/lang/py/test/test_io.py Tue Jun  1 16:33:19 2010
@@ -14,7 +14,10 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 import unittest
-import cStringIO
+try:
+  from cStringIO import StringIO
+except ImportError:
+  from StringIO import StringIO
 from binascii import hexlify
 from avro import schema
 from avro import io
@@ -110,14 +113,14 @@ def print_test_name(test_name):
   print ''
 
 def write_datum(datum, writers_schema):
-  writer = cStringIO.StringIO()
+  writer = StringIO()
   encoder = io.BinaryEncoder(writer)
   datum_writer = io.DatumWriter(writers_schema)
   datum_writer.write(datum, encoder)
   return writer, encoder, datum_writer
 
 def read_datum(buffer, writers_schema, readers_schema=None):
-  reader = cStringIO.StringIO(buffer.getvalue())
+  reader = StringIO(buffer.getvalue())
   decoder = io.BinaryDecoder(reader)
   datum_reader = io.DatumReader(writers_schema, readers_schema)
   return datum_reader.read(decoder)
@@ -152,7 +155,7 @@ def check_skip_number(number_type):
     datum_writer.write(VALUE_TO_READ, encoder)
 
     # skip the value
-    reader = cStringIO.StringIO(writer.getvalue())
+    reader = StringIO(writer.getvalue())
     decoder = io.BinaryDecoder(reader)
     decoder.skip_long()
 
@@ -250,7 +253,7 @@ class TestIO(unittest.TestCase):
        "symbols": ["BAR", "BAZ"]}""")
 
     writer, encoder, datum_writer = write_datum(datum_to_write, writers_schema)
-    reader = cStringIO.StringIO(writer.getvalue())
+    reader = StringIO(writer.getvalue())
     decoder = io.BinaryDecoder(reader)
     datum_reader = io.DatumReader(writers_schema, readers_schema)
     self.assertRaises(io.SchemaResolutionException, datum_reader.read, decoder)
@@ -284,7 +287,7 @@ class TestIO(unittest.TestCase):
        "fields": [{"name": "H", "type": "int"}]}""")
 
     writer, encoder, datum_writer = write_datum(datum_to_write, writers_schema)
-    reader = cStringIO.StringIO(writer.getvalue())
+    reader = StringIO(writer.getvalue())
     decoder = io.BinaryDecoder(reader)
     datum_reader = io.DatumReader(writers_schema, readers_schema)
     self.assertRaises(io.SchemaResolutionException, datum_reader.read, decoder)


Reply via email to