This is a prototype implementation of a client
for discovery based APIs.


Installation
============

To install, simply say

   $ python setup.py install

If you want to do a "mock install" and simply extend your PYTHONPATH
for the current shell to include this folder and the packages in it, do

   $ source setpath.sh

from the root of the project directory.


Running
=======

After following the install directions (using setup.py or setpath.sh) you
should be able to cd to samples/buzz and run buzz.py from there, which will use
the apiclient library to retrieve the title of the most recent entry in Buzz
and post a test message.  The first time you run it you will be prompted to
authorize the application to access your Buzz information.

   $ python samples/buzz/buzz.py


Third Party Libraries
=====================

These libraries will be installed when you install the client library:

http://code.google.com/p/httplib2
http://code.google.com/p/uri-templates
http://code.google.com/p/python-gflags
http://github.com/simplegeo/python-oauth2

Depending on your version of Python, these libraries may also be installed:

http://pypi.python.org/pypi/simplejson/

For developement you will also need:

http://pythonpaste.org/webtest/
