I'm just graduating from bash scripting, and I'm looking to write a REST API client library with Python to use as a basis for end-to-end QA of the API. I looked over the OpenStack clients for guidance and found them to be a mix of functions and objects. Does API client design favor one approach over the other, or should I stop worrying so much and just code it up with scripting functions like I would have with bash + curl? I have identified the "requests" module as something I want to use in this project. Also, any reason to go Python 3 over 2 for this? One use of the client lib will be for stress testing the API. Testing will probably be via unittest2 + testrepository + tox, much like OpenStack Tempest uses.