Support recursive get and put of collections
The new get() and put() transfer methods in python-irodsclient/irods/manager/data_object_manager.py are a step in the right direction. But for iget and iput functionality in python-irodsclient to be very useful, it needs to support recursion of collections, that is, the functionality of iget -r and iput -r.
Note: python-irodsclient/irods/manager/collection_manager.py already contains a get() method which returns an iRODSCollection object, so the resulting API may not be completely orthogonal.
Ideally, all the options of iget and iput should be implemented. But -r appears to me as the most important option to implement for the uptake of python-irodsclient as a programmatic replacement for icommands. Currently, every time I try to use python-irodsclient, I end up invoking iget and iput via subprocess.Popen, Popen.communicate, and then checking Popen.returncode to raise Exceptions, which is not terrifically Pythonic and requires icommands to be installed as a crutch.
be sure to consider both status streaming (n bytes / n total of n files/ n total) and callbacks for overwrite (overwrite all, no for all, overwrite this file, skip this file), also an ability to send a graceful pause or cancellation
I can relate how I did in in the Java api but we'll be repeating history