Currently, data should have a __len__ method. However in some cases I'd like to pass a iterator with a known size (mostly in the case of database, where I can run the SELECT SUM(...) FROM table, for the size. Then SELECT * FROM table and pass the cursor as data.
Currently I need to create in memory copy of the rows in the cursor.