Author: sharad
Date: Tue Oct 20 06:25:37 2009
New Revision: 826972
URL: http://svn.apache.org/viewvc?rev=826972&view=rev
Log:
AVRO-155. Make python avro.io.DataFileReader iterable. Contributed by Jeff
Hammerbacher.
Modified:
hadoop/avro/trunk/CHANGES.txt
hadoop/avro/trunk/src/py/avro/io.py
hadoop/avro/trunk/src/test/py/testio.py
Modified: hadoop/avro/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/avro/trunk/CHANGES.txt?rev=826972&r1=826971&r2=826972&view=diff
==============================================================================
--- hadoop/avro/trunk/CHANGES.txt (original)
+++ hadoop/avro/trunk/CHANGES.txt Tue Oct 20 06:25:37 2009
@@ -15,6 +15,9 @@
AVRO-147. Use configure to create makefile for C++ builds. (sbanacho)
+ AVRO-155. Make python avro.io.DataFileReader iterable.
+ (Jeff Hammerbacher via sharad)
+
OPTIMIZATIONS
BUG FIXES
Modified: hadoop/avro/trunk/src/py/avro/io.py
URL:
http://svn.apache.org/viewvc/hadoop/avro/trunk/src/py/avro/io.py?rev=826972&r1=826971&r2=826972&view=diff
==============================================================================
--- hadoop/avro/trunk/src/py/avro/io.py (original)
+++ hadoop/avro/trunk/src/py/avro/io.py Tue Oct 20 06:25:37 2009
@@ -323,6 +323,9 @@
self.__dreader.setschema(self.__schema)
self.__reader.seek(len(_MAGIC))
+ def __iter__(self):
+ return self
+
def getmeta(self, key):
"""Return the value of a metadata property."""
return self.__meta.get(key)
@@ -331,7 +334,7 @@
"""Return the next datum in the file."""
while self.__blockcount == 0:
if self.__reader.tell() == self.__length:
- return None
+ raise StopIteration
self.__skipsync()
self.__blockcount = self.__decoder.readlong()
if self.__blockcount == _FOOTER_BLOCK:
Modified: hadoop/avro/trunk/src/test/py/testio.py
URL:
http://svn.apache.org/viewvc/hadoop/avro/trunk/src/test/py/testio.py?rev=826972&r1=826971&r2=826972&view=diff
==============================================================================
--- hadoop/avro/trunk/src/test/py/testio.py (original)
+++ hadoop/avro/trunk/src/test/py/testio.py Tue Oct 20 06:25:37 2009
@@ -220,10 +220,12 @@
dw.close()
randomData = self.__random(schm, seed)
dr = io.DataFileReader(open(_FILE, "rb"), self.__datumreader())
- for i in range(0,count):
- data = randomData.next()
+ count_read = 0
+ for data in dr:
+ count_read = count_read + 1
if self.__assertdata:
- self.assertEquals(data, dr.next())
+ self.assertEquals(randomData.next(), data)
+ self.assertEquals(count, count_read)
if __name__ == '__main__':
if len(sys.argv) != 4: