=== 2.0.17 ===
1143   3a0447b78b27   2012-04-20 13:25 -0400   jeffy
  The gdata.youtube.service class now explicitly sets the GData-Version: 1 header, and is updated to use the correct ClientLogin URL.

1142   1e302ccfd1db   2012-04-19 14:09 -0700   dhermes
  Adding support for OAuth2 revoke endpoint.

1141   7dbf78073e2c   2012-04-18 09:51 -0700   alainv
  Make Resource and ResourceFeed "Batch" compatible.

1140   cde9a812ff75   2012-04-02 22:25 -0700   dhermes
  Forgot to add camelcase alias for batch in issue 5970062.

1139   f3db7c388325   2012-04-02 20:37 -0700   dhermes
  Adding support for performance data in Content API for Shopping (fixes Issue 5976061).

1138   f5d8bd1a5d58   2012-04-02 20:30 -0700   dhermes
  Added support for custom attributes in Content API for Shopping (fixes Issue 5970070).

1137   df2263245009   2012-04-02 08:18 -0700   dhermes
  Changed dest attrs in Content API to iterable, added validate_dest and fixed qname on app:control (fixes Issue 5976046).

1136   6fa84c09df8e   2012-04-02 07:46 -0700   dhermes
  Added camel case names to content API client public methods (fixes Issue 5970062).

1135   f5d03167e6de   2012-04-02 07:38 -0700   dhermes
  Added support for Content for API errors on single and batch requests (fixes Issue 5971061).

1134   906bb1d9c899   2012-04-02 07:31 -0700   dhermes
  Added support for start-token in Content API for Shopping (closes Issue 5980044).

1133   f98fff494fb8   2012-03-30 11:36 -0700   alainv
  Change gdata.docs.client.DocsClient.DeleteResource to use the entry instead of the link.

1132   e3594e4ea683   2012-03-30 10:56 -0700   alainv
  Allow for random kwargs in atom.client.AtomClient.request method.

1131   57db9d630ee7   2012-03-29 15:44 -0700   dhermes
  Changing Shipping to list element in Content API for Shopping.

1130   ab61823f2562   2012-03-29 15:34 -0700   dhermes
  Fixing behavior in atom.http_core.Uri._get_query_string for query parameters with no parameter value (closes Issue 5938047).

1129   583a2f25c123   2012-03-27 15:21 -0700   dhermes
  Fixed batch function issues in content api for shopping client.

1128   900e9a0c3b3a   2012-03-03 18:08 -0800   ccherubino
  Updated GetFeed methods in the Email Settings API to return typed feeds

1127   c21438385488   2012-02-29 09:18 -0800   dhermes
  Namespace for channel element (in contentforshopping) was promoted from scp to sc.

1126   5e7914da3fc5   2012-02-13 10:29 -0500   afshar
  Fixed release date year.

1125   78f1044f8338   2012-02-09 16:48 -0800   ccherubino
  Fixing bug in recent change to the Email Settings API client library (rev. 194d0fd21fdd) + some typos

1123   194d0fd21fdd   2012-02-09 11:29 -0800   ccherubino
  Updating the Email Settings API to return instances of the correct classes when retrieving settings

1122:1120   5d90af058646   2012-02-09 17:14 +0530   shraddhag
  Added a sample to create a group and update its settings using the Groups Provisioning and Groups Settings APIs.

1121   632df99f18bb   2012-02-09 14:30 -0500   afshar
  Added docs:description element to docs resources.

1120   b916755be737   2012-02-02 09:49 -0500   afshar
  Fixed error in docs sample.

1119   19b1a2901d7e   2012-02-01 12:20 +0530   gunjansharma
  Added scopes for all Admin APIs in apps tag

1118   0e47dfadd4f6   2012-02-01 12:18 +0530   gunjansharma
  Added a sample for Email Audit API demonstrating CRUD operations on email monitors

1117   ce66eae4ca6f   2012-01-31 17:02 -0800   dhermes
  Fixed small doc errors, made tax a list element

1116   9676d3b1059b   2012-01-30 08:57 -0800   alainv
  Fix issues 590/591: Contact's gender XML element was wrong.

1115   32d0f6e650f5   2012-01-30 15:54 +0530   gunjansharma
  Added a sample marketplace application

1114   3a91fa3c66d1   2012-01-30 14:50 +0530   shraddhag
  Sample to delete obsolete suspended users

1113   1b7323bc42e7   2012-01-30 14:49 +0530   shraddhag
  Sample to retrieve user's profile and contacts using 2LO

1112   3265462309de   2012-01-25 22:42 -0500   vicfryzel
  Fixing issue 587.  Wrong URL used for batch ACL changes.

1111   15e17565f0ed   2012-01-24 12:04 +0530   shraddhag
  Added a sample to list all the members of a group

1108:1106   d762873e72e8   2012-01-06 14:35 -0800   alainv
  Adding access_type=offline to OAuth 2.0 authorize URL.

1107   9941fe8ba765   2012-01-20 19:30 +0000   afshar
  Check document list entries have a content before trying to download them.

1106   090c7ee66c93   2012-01-05 20:43 +0000   afshar
  Added tag 2.0.16 for changeset c67f3c6398ba

1105[2.0.16]   c67f3c6398ba   2012-01-05 20:39 +0000   afshar
  Updated hgignore

1104   e3c66713a107   2012-01-05 20:34 +0000   afshar
  Updated MANIFEST.in

1103   20c9ab58878a   2012-01-05 20:24 +0000   afshar
  Use a generated MANIFEST from MANIFEST.in

1102   b395b9e31ee9   2012-01-05 20:15 +0000   afshar
  Updated release notes.

1101   012305c4dac1   2012-01-05 19:43 +0000   afshar
  Fixed recording test, sometimes outside the US, google.com tries to redirect.

1100   e93eb1a3fe7c   2012-01-05 19:08 +0000   afshar
  Updated pydocs

1099   85cc6c57a719   2012-01-05 19:08 +0000   afshar
  Bumped version string

1098   afd40075d6bd   2012-01-05 18:42 +0000   afshar
  Fixed doc generation script for my environment.

1096   c6b6a36a98be   2012-01-16 22:21 +0530   shraddhag
  Added a sample to search users with a given pattern and and move them to an organization

=== 2.0.16 ===
5 Jan 2012

- Add sample for Docs List API to delete ACL.
- Added support for label deletion in the Email Settings API client library
- Added a sample for Email Settings create label and filters with exponential
  back-off
- Added sample for enabling pop settings using Email Settings API
- Fixed typo in analytics sample.
- Fixed ACL batching URI in Docs.
- Updated RetrieveAllUsers and RetrieveAllAliases to return all pages instead
  of one.
- Removing force=True from some ACL requests in DocsClient
- Added RetrieveGroups method and updated RetrieveAllGroups and
  RetrieveAllMembers method
- Added a quick start sample for user provisioning
- Added a client for organization unit provisioning
- Added client architecture for group provisioning
- Added a new sample for multidonain provisioning. Demonstrates all the
  functions available.
- Added test for RetrieveAllUserAliases and changed OAuth scopes for Apps
- Added client architecture for provisioning api and tests for client
- Added support for batch requests to update spreadsheet cells.
- Added GetAcl alias for get_acl in DocsClient
- Added new ACL and get by ID methods to DocsClient.
- Added some conditional imports for tlslite.
- Updates to category handling for Documents list API
- Added a function to retrieve all the aliases for a given user email.
- Fixed #553


=== 2.0.15 ===
18 Oct 2011

- New Documents List API client
- Added support for MDM Provisioning API
- Added Batch support for Documents List API ACL changes
- Added category handling for Documents List API client
- Added commenter role to Documents List API client
- Added support for gContact:status
- Added subdomain support for Email Settings API
- Added support for Apparel attributes in Content API for Shopping client
- Added Documents List sample
- Added Sample for Provisioning API with OAuth2
- Added Sample for Email Settings API with OAuth2
- Added Sample for Provisioning API with Sites and Profiles API
- Fixed Youtube client to use SSL
- Fixed Sites API sample to use SSL
- Removed Google Base Data API support
- Issues closed:
    #190, #206, #215, #230, #268, #270, #279, #281, #288, #296, #303, #312,
    #346, #363, #399, #424, #435, #483, #492, #494, #498, #508, #512, #516,
    #526, #532, #533, #534, #541, #547

=== 2.0.14 ===
7 Mar 2011

 - Bug Fixes:
  * 491. 302 redirect on some gsessionids
  * 501. Remove support for deprecated Maps Data API.
  * 462. Bug in samples/analytics/data_feed_demo.py (using segments)
  * 482. String exception in service.py
  * 414. http proxy url containing properly formatted user-name and password not accepted
 - Turn on SSL for Codesearch, Photos, Project Hosting, Analytics,
    Contacts, Marketplace Licensing, and Docs.
 - Add batch default URL to the Contacts API and clean the sample code. (issue4000058)
 - Added support for Content API for Shopping
 - Added Calendar V2 API support
 - Add Google Marketplace Licensing API to the Gdata Python Client
 - Added patch from Alexandre Vivien that fixes calendar resource email support that somehow went missing in a previous release.


=== 2.0.13 ===
16 Nov 2010 (revision 902:73f3fbb5ea88)

 - Bug Fixes:
   * Issue 315: Correctly constructs queries based on categories for Blogger APIs.
   * Issue 323: YouTubeUserQuery constructor passes incorrect overridden parameter to base class.
 - Accept proxy username and password in http(s)_proxy environment variables.
 - Adding support for specifying URI to v3 docs client.
 - Adding tests for revisions for arbitrary file types in Documents List API.
 - Google Base, added bucket node to attributes.
 - Adding ContainsSampledData XML Element to Analytics Data Feed and updating samples


=== 2.0.12 ===
17 Sep 2010 (revision 892:e949a7cf9a31)

 - Bug Fixes:
   * Issue 437: PATCH request generates incorrect Content-Type
   * Issue 428: get_blog_name() does not correctly handle blog URLs containing hyphens
   * Issue 443: Packages should contain gdata.apps.audit in setup.py
   * Issue 430: Lots of memory usage when uploading big video files
   * Issue 423: gdata.contacts.client.ContactsClient.get_profiles_feed() broken
  - Turn on SSL be default for the spreadsheet API
  - Added support for new Analytics feeds
  - All V3 code and development has been out of this project and into http://code.google.com/p/google-api-python-client/
  - Added partial support for the YouTube API in v2


=== 2.0.11 ===
Jul 29, 2010 (revision fa49231cc8)

 - Added the following new APIs:
   * Apps Audit APIs from Jay Lee
   * Apps Organization from Alexandre Vivien
   * Added Email Settings API client library v2.0 from Claudio Cherubino
 - Fixes to file permissions for samples.
 - Fixing a broken calendar resource client from r983, removing a superfluous call to MakeResourceFeedUri(), adding regression tests for edit links.
 - Abstracting out AppsProperty so that it's usable by other libs.  Thanks to Claudio Cherubino <ccherubino@google.com> for this change.
 - Added optional change_password parameter to AppsService.CreateUser
 - Fixing minor bugs in analytics samples
 - http://codereview.appspot.com/1677050 Switch default connection type back to non-SSL connections.
 - Switch the repository from subversion to mercurial
 - Added OAuth test cases thanks Samuel Cyprian
 - Many APIs now use SSL, and some require it, so the following APIs now default to using HTTPS:
   * Spreadsheets
   * Sites
   * Calendar Resource

=== 2.0.10 ===
May 12, 2010 (revision 980)

 - Add check for liveness of proxy in live tests. Also add in upload-diffs.py to make using codereview.appspot.com easier. 
 - Patch from Alexandre Vivien adds the ResourceEmail attribute to CalendarResourceEntry
 - Adding new single page methods to apps.groups.service. Thanks Jeremy Selier!
 - Cleanup in service GetWithRetries. Thanks Will Charles!
 - Adding much more test coverage for calendar_resource.client.
 - Fixing Calendar Resource get_resource to use correct feed URI generator.  Thanks to Alexandre Vivien for reporting.
 - Adds support for Blogger Pages. Thanks Wiktor Gworek!

=== 2.0.9 ===
March 5, 2010 (revision 964)

- Fixed URL related bug in gdata.calendar.service. You can now edit and delete
    against https URLs.
- Removed hard coded Python version from gdata.contacts. Resolves issue 347.

=== 2.0.8 ===
February 26, 2010 (revision 960)

- Added support for resumable uploads with a sample that shows it's use
    with Google Docs. Thanks Eric!
- Added the publish element and copy() method to the DocsClient. Thanks Eric!
- Added support for the JSON-C data format recently released for the YouTube
    API.
- Fixed import bug when using cryptomath with Python2.4 and lower.
- Modified gdata.gauth to be usable under Python2.3.
- Fixed errors which affect RetrieveAllEmailLists RetrieveEmailLists
    RetrieveAllRecipients RetrieveAllNicknames RetrieveNicknames
    RetrieveAllUsers in gdata.apps.service. Resolves  issue 340 . Thanks
    Aprotim!
- Fixed issues with contacts client returning a raw get and not a ContactEntry
    and a few auth_tokens are not being passed into the HTTP request. Resolves
    issue 332 . Thanks vinces!
- Fixed issue parsing worksheet feed, entry was the wrong type, corrected to
    WorksheetEntry. Resolves  issue 343. Thanks Igor!
- Fixed typo in gdata.spreadsheets.client (auth_service). Resolves  issue 342.
    Thanks to Igor once again!
- Fixed bug in Google Apps APIs UpdateSSOSettings.
- The gdata.data.LinkFinder now looks in both the link and feed_link members
    for an ACL link. Resolves issue 339.
- Removed client side check on video type in YouTube service. Rely on the
    server to provide an error if the format is not supported. Resolves 
    issue 338.
- Improved documentation for SpreadsheetsService's UpdateRow method to explain
    the use case it addresses and recomment alternatives.
- Changed projecthosting to use the host member with relative URLs.
- Added a get_headers function to be used in Python2.2 and 2.3 since
    httplib.HTTPResponse does not have getheaders in those versions of Python.
    Resolves  issue 335.
- Added a client smoke test to check version and auth related class members
    which all gdata.x.client's should have.
- Updated the docs service_test.py to run as part of run_all_tests.py.

=== 2.0.7 ===
January 26, 2010 (revision 937)

- Added gdata.calendar_resource.client to support the management of calendar
    resources (like conference rooms) for Google Apps domains. Thanks Vic!
- Updated the sites API client to use version 1.1 of the sites API.
- Added support for 2 Legged OAuth to the GDClient and included a sample
    app. Thanks Eric!
- Added a revoke_token method to GDClient to invalidate AuthSub or OAuth
    tokens.
- Added a get_record method to the Spreadsheets client to fetch a single
    record entry.
- Added includeSuspendedUsers parameter to the apps groups API. Thanks Will
    Charles!
- Fixed a client login bug present in the Maps API client. Thanks Roman!
- The client_id property in the YouTube service object is now optional.
- Added optional 'feed' parameter to YouTube service's Query classes.
    Resolves issue 323.
- Updated tlslite's use of sha1 to use hashlib if using python2.5 or higher.
    Resolves  issue 290 . Thanks Jay Lee!
- Added a deadline parameter to gdata.alt.appengine to allow the urlfetch
    timeout to be modified to as high as 10 seconds.
- Added GetGeneratorFromLinkFinder to GDataService which simplifies pagination
    across the entries in a feed. Resolves  issue 325 . Thanks Aprotim!
- Removed the default value for the test domain option.
- Moved auth scopes to gdata.gauth from gdata.service.

=== 2.0.6 ===
December 17, 2009 (revision 914)

- updated the Google Analytics Data Export API to v2. Thanks Nick!
- added support for batch operations on contacts and profiles. Thanks Julian!
- added a DocsQuery class for the Documents List v3 API.
- removed now obsolete ACL classes from gdata.docs.data in favor of using
    classes in gdata.acl.data. Thanks Eric!
- fixed bug in querying group membership by email. Thanks Will Charles!
- removed import which are not present in Python2.2 from gdata.service to
    maintain support for Python2.2.
- added additional debug information to MockHttpClient.

=== 2.0.5 ===
November 24, 2009 (revision 900)

- added new gdata.contacts.client (and data) which uses version 3.0 of the
    contacts API. Thanks Vince!
- added new gdata.docs.client which uses version 3.0 of the Documents List
    API. Thanks Eric!
- added new v2 modules for the Analytics API (gdata.analytics.client).
    Thanks Nick!
- added conditional get using etags on get_entry. Thanks Eric!
- fixed bug in how Calendar redirect headers are handled when using this
    library in an App Engine app.
- added new Calendar XML elements to the gdata.calendar module. Thanks
    Michael Ballbach!
- added v2 data model classes for finance, notebook, webmastertools, ACLs,
    opensearch and youtube.
- fixed issues with contacts.service when editing profiles. Thanks Julian!
- fixed bug in GDClient's get_next method.
- improved usability in Python2.3, though tests do not run the src modules
    should be Python2.3 compatible.

=== 2.0.4 ===
October 15, 2009 (revision 864)

- Added support for the project hosting issue tracker API. Thanks Joe LaPenna!
- Added a get-with-retries method to the v1 service for use with the Google Apps
    API to automatically retry. Thanks Takashi Matsuo!
- Revised Google Sites client to use text input when creating a page. Thanks Eric!
- Changed demo calendar in the Google Calendar API example. Thanks Trevor!

=== 2.0.3 ===
October 9, 2009 (revision 856)

- Added support for Google Sites Data API. Thanks Eric!
- Added support for Google Contacts profiles. Thanks Julian Toledo and Pedro
    Morais!
- Added support for the Spreadsheets v3 API Tables feed and Records feed.
- Added support for the Google Apps Admin Settings API. Thanks Jay Lee!
- New sample which illustrates use of the Blogger v1 API on App Engine using
    OAuth. Thanks Wiktor Gworek!
- Added a new MediaSource for use with v2 data model classes. Thanks Eric!
- The v2 client classes can now force all requests to be made over SSL.
    Thanks Eric!
- Revised the test config system to allow test settings to be specified as
    command line arguments or prompt the user to enter them interactively.
- Fixed UTF encoding issue in unittest on big endian architectures.
- Fixed XML parsing bug in Spreadsheets data class. Thanks ppr.vitaly!
- Fixed bug in webmaster tools service verification method arguments. Thanks
    eyepulp!
- Fixed download URL recognition in Document List Data API.
- Some progress made in re-adding support for Python2.3, not sure yet if
    full Python2.3 support is completely feasible. Python 2.4-2.6 should work.

=== 2.0.2 ===
August 20, 2009 (revision 823)

- Added support for the Google Maps Data API. Thanks Roman!
- Added data model classes for the v3 Spreadsheets API. This API is not
    yet fully supported by the library and the gdata.spreadsheets package
    should be considered experimental until the next release. The v1
    gdata.spreadsheet package is unchanged and should still work.
- Auth token lookups when running in App Engine are now memcached which
    should improve efficiency. Thanks Marc!
- Fixed a bug with the v2 HTTP proxy client. If behind a proxy, the full
    URL is now sent as the request selector. Thanks Dody!
- Removed the gdata.client.GDataClient class which had been deprecated.

=== 2.0.1 ===
July 23, 2009 (revision 805)

- Added support for Secure AuthSub, OAuth with HMAC and with RSA to the
    v2 auth code.
- Added v2 data model classes for all XML elements in the gd namespace.
- Usability improvements in the gdata.docs.service module, thanks Eric!
- Made the dependency on elementtree only required if you are using
    Python 2.4 and lower. Thanks brosner!
- Setting the ssl member in atom.service.AtomService will now override a URL
    which starts with http:. Many thanks to Michael Ballbach for the patch. 
- Added a proxy HTTP client which will use proxy environment variables to
    send all requests through the desired proxy server if present.
- Added user agent string indicating that this is from the gdata python v2
    library.
- Removed unneeded title parameter from the Blogger client's add_comment
    method.
- Added an all_tests_local script which runs all tests except those which
    would make HTTP requests to remote servers.
- Added the birthday element to contacts entry, the reminder element to
    calendar events, and the method attribute to calendar's reminder class.
    All with great thanks to Marc!
- The analytics GetData method no longer requires the dimensions argument.
    Thanks Jim!

=== 2.0.0 ===
June 29, 2009 (revision 777)

- Released support for version 2 of the Google Data APIs protocol. To use the
    new version-aware code, use the gdata.client, atom.data, gdata.data
    modules and classes that derive from them. For example, use 
    gdata.blogger.client.BloggerClient instead of 
    gdata.blogger.service.BloggerService. High level, service specific classes
    are not available yet for other services, so feel free to migrate as they
    become available. The v1 service classes are still included so your
    existing code should be unaffected.
- Included new Blogger samples to illustrate v2 support, a command line demo
    and an app for App Engine.
- Added OAuth sample app which uses App Engine.
- Added the gCal:sequence element to CalendarEventEntry (thanks Anton).
- Added two decorators to diaply warnings when deprecated methods are used.
- Added a login utility for command line samples to share to standardize the
    auth process on in a sample program.
- Fixed a bug in v2 XML parsing which prevented multiversion XML classes from
    correctly parsing and generating v2 code.
- Fixed v1 HTTP Host header settings, not default ports should now be
    included in the Host header.
- Fixed pickle error when an OAuth-RSA token is saved to the App Engine
    datastore.
- Fixed missing data in the Document List API unit tests.
- Improved backwards compatibility of v2 data model classes be adding aliases
    to v1 functions.

=== 1.3.3 ===
June 5, 2009 (revision 724)

- Added support for the Google Finance API. Thanks Swee Heng!
- The Google Data Service classes now support version 1.0a of the OAuth
    protocol (Thanks Eric!).
- Fixed a naming bug in unit tests for atom.service which appeared when using
    Python 2.6.x
- Fixed URL parameter propogation when calling GDataService.Delete. The URL
    parameters are now preserved.
- Fixed incorrect return type for gdata.FeedLinkFromString.
- Added data model classes for the Atom and AtomPub XML elements which support
    version 2 of the Google Data APIs (by means of dynamic AtomPub namespace
    switching). The version 2 XML classes are much more backwards compatible
    with v1 classes than in previous releases.

=== 1.3.2 ===
May 22, 2009 (revision 711)

- Added support for the Google Analytics API. Thanks Sal Uryasev!
- Added support for the Google Book Search API. Thanks James Sams!
- Improved support for 2 legged OAuth and added a sample app. Thanks Eric
    Bidelman!
- Simplified the way an XML response from the server is parsed into the
    desired class for the version 2.0 API client (gdata.client.GDClient).

=== 1.3.1 ===
April 23, 2009 (revision 695)

- Fixed issues with setting the developer key in the YouTubeService
    constructor.
- For the Document List API (thanks Eric!):
  - Added writersCanInvite element
  - Fixed a small errors in Document Entry
  - Added category label when creating different types of docs
  - Fixed DownLoad helpers which shouldn't write a file if server returns
      error. Fixes issue 240.
  - Added DocumentListEntryFromString converter and using DocumentListEntry
      class instead of GDataEntry class to create entries.
- URLs in HTTP requests can now be unicode strings. Resolves issue 233.
- Improvements for the upcoming version 2.0.0 release:
  - The v2 auth code now support AuthSub and has been tested on App Engine.
  - Unit tests for the v2 client code will default to not use the local file
      cache but will make live requests unless cached responses is set to
      True in the test configuration module.
  - Older v1 unit tests can now use the v2 testing framework, migrated 
      contacts API tests as a proof of concept. This will come in handy when
      testing backwards compatibility for the 2.0 release.
  - Improved support for unicode and other character encodings in the v2 XML
      core module.

=== 1.3.0 ===
Mar 20, 2009 (revision 665)

- Added support for the Google Health API. (Thanks Eric Bidelman!)
- Added support for the groups management in the Google Apps Provisioning
    API. (Thanks to Tony Chen and Oskar Casquero!)
- Added the following new features for the Google Documents List API:
    (Thanks again to Eric Bidelman for adding all of these!)
  - Folder create, move docs/folders in and out of other folders. (Thanks
      Nizam Sayeed!)
  - Suppport for modifications to Access Control Lists for documents.
  - Export functionality for documents, spreadsheets, and presentations.
  - Updated the docs_example.py sample app.
  - New new XML elements: resourceID, lastViewed, and lastModifiedBy.
- Added ability to update web clip settings in the Google Apps email settigns
    API. (Thanks Takashi Matsuo.)
- Fixed a bug in calendarExample that would cause execution to fail when an
    event attendee does not have any attendeeStatus data. (Thanks Trevor
    Johns!)
- Fixed AuthSub request URLs which should be https. (Yay Eric!)
- Fixed logic when changing email settings when using the Google Apps API to
    only send properties which have been specified. (Thanks Jay Lee!)
- Includes a new and experimental client class (gdata.client.GDClient) which
    can be used with version two of the Google Data API protocol. This class
    may change in backwards incompatible ways before the 2.0.0 release, so
    use at your own risk. 

=== 1.2.4 ===
Jan 22, 2009 (revision 603)

- Added a new AtomPubClient class (and supporting classes) which begins a
    foundation on which support for version two of the Google Data protocol
    will be built.
- OAuth methods can now specify the desired OAuth server with the default
    being the Google Accounts end point (thanks Dag Brattli!).
- Improved support for unicode strings in XML element class attributes and
    text nodes (thanks again to Dag).
- Fixed constructors for Service classes which inherit from GDataService
    to ensure that all parameters are passed up to the superclass 
    constructor (thanks Guillaume Ryder!).
- Added a 'contact_list' property to ContactsService to simplify API usage
    for shared contacts (thanks Guillaume once again).
- For Google Contacts, added a GetFeedUri method to help users generating
     feed URIs (Guillaume for a hat-trick).
- New unit tests to ensure that the ordering of entry objects within a feed
    is preserved when converting to and from XML.


=== 1.2.3 ===
Dec 3, 2008 (revision 585)

- Added support for OAuth (thanks to Kunal Shah!). Your client can now obtain 
    an authorization token using the OAuth protocol.
- Added support for Secure AuthSub (thanks Eric Bidelman!). Your client can
    digitally sign requests using RSA allowing Google service to verify that
    the request came from your application.
- Added a new module for parsing XML which will be used in future versions to
    support version of the Google Data APIs protocol. This new library handles
    versioning of XML schemas.
- The Google Contacts API sample now pages through results.
- Added phone number rel types using in the Google Contacts API.
- The YouTube service module will use cElementTree if it is available. 
    Improves XML parsing speed.
- Fixed typo in gdata.geo, changed longtitude to longitude but kept an alias
    for backwards compatibility.
- Fixed Blogger's GetBlogId regular expressions to extract the ID from 
    multiple kinds of entries.
- Fixed type check in atom.http to allow unicode URL strings.
- Added webmastertools test to the packaged download which fixed failures 
    when running all data tests.
- Improved compatibility of unit tests with Python2.3.
- Added copies of tlslite and dependencies to support secure AuthSub and
    OAuth.
- Changed the default host for Google Apps API requests to 
    apps-apis.google.com.


=== 1.2.2 ===
Oct 15, 2008 (revision 556)

- Added support for the following APIs:
      Google Apps Email Migration API
      Google Apps Email Settings API
      Google Webmaster Tools Data API
    Some modules for the above are not yet fully tested, so please file an 
    issue if you notice something is not working as expected.
- Restored support for gdata.http_request_handler when using App Engine to
    preserve backwards compatibility.
- Simplified auth token management by adding a current_token member to 
    service classes. Also added settings to control when the token_store
    is updated when using SetXToken() methods. The token_store will only be
    queried if there is no current_token.
- Fixed issue with requests to HTTPS URLs in which an AuthSub token was seen
    as invalid because the request contained the default port number (443).
    The library no longer includes the port in the Host header if it is using
    the default.
- Resolved issues with YouTube token scopes.
- Fixed issue which appeared when the Calendar API issues a redirect to a 
    PUT request. The library now correctly retries with a PUT (instead of
    a POST).
- Added workaround for differences in how the App Engine SDK handles 
    redirects.
- Fixed typo in gdata.EntryLink declaration.
- Fixed invalid host errors seen when using some HTTP proxies.


=== 1.2.1 ===
Sep 15, 2008 (revision 529)

- The gdata.alt.appengine module now replaces a Service object's token_store
    with an AppEngineTokenStore which automatically associates auth tokens 
    with the current user and stores the auth tokens in the datastore.
- Streamlined the gdata.auth module. There are now six recommended functions
    for using Google auth mechanisms. GDataService now uses these six
    functions.
- Added an override_token in Service objects (AtomService, GDataService) 
    which bypasses the token_store. This member is helpful when using a 
    single use AuthSub token which is only valid for one request and so
    would not be reused.
- gdata.alt.appengin.run_on_appengine will now return the modified Service
    object. This allows statements like:
    client = gdata.alt.appengin.run_on_appengine(
        gdata.blogger.service.BloggerService())
- Fixed content length header issue in gdata.alt.appengine which caused
    errors when running on App Engine when HTTP headers are set to 
    non-string values.
- Fixed function naming issue in gdata.alt.appengine, a "private" function
    was not accessible in some import styles.
- Fixed issue in atom.http which surfaces when passing in a string for the
    port number. Ports are now cast to ints. 
- Updated pydocs.


=== 1.2.0 ===
Sep 9, 2008 (revision 522)

- Refactored HTTP request mechanisms and the way that Authorization headers
    are created and applied to requests. These changes make it easier to 
    swap out the HTTP layer to allow the library to be used in different
    environments (like Google App Engine). The changes in Auth token logic
    should make it much easier to add support for secure AuthSub and OAuth.
    For more details on this change, see the following wiki page:
    http://code.google.com/p/gdata-python-client/wiki/HTTPRequestRefactoring
- Fixed issues with token string modification which caused certain AuthSub 
    token values to become invalid.
- Created a new module for parsing and constructing URLs (atom.url).
- Created a module for token storage which will lookup the correct auth token
    to be used for a particular URL.
- Auth tokens are now represented as objects and contain information about the
    scopes (URLs) for which they can be used. The token object is responsible
    for adding the Authorization header to the request.
- Added new functions to gdata.auth for extracting the raw token string from
    a response to an AuthSub token upgrade request.
- Added support for the location query parameter in YouTube queries.
- Added groups functionality to the Contacts API library.
- Batch request support added for Contacts API operations.
- Added default behavior to text_db GetTables: when no worksheet name or ID
    is specified, all tables are retrieved.
- Fixed client login for YouTube.
- Fixed issue in YouTube service when setting the developer key.
- Fixed bug in YouTube service which raised an exception when inserting a
    video using a file-like object.
- Added a method to Feed and Entry classes to find the "previous" link.
- A failure when attempting to upgrade a single use AuthSub token to a session
    token will now raise an exception.
- AppsForYourDomainException now uses Python2.5 style exception construction.
- Moved the logic for using this library on Google App Engine into a new 
    module: gdata.alt.appengine.


=== 1.1.1 ===
June 13, 2008 (revision 421)

- Added support for new feeds available in the Google Contacts API. Adding
    contact groups, querying for contacts in a group, specifying extended
    properties, and setting the contact's photo are now supported.
- The ExtendedProperty class can now contain a blob of XML instead of just
    an attribute value. This is used in the Google Contacts Data API. 
- The YouTube service now has methods for updating playlists and removing a
    video from a playlist.
- Added geo-location to the YouTube service class.
- When using ClientLogin with Blogger, the default account type is now set
    to 'GOOGLE'. This prevents the rare problem of a user having a Google
    Apps account which conflicts with his or her Google Account used for
    Blogger.
- Added support for the in-reply-to element which appears in Blogger 
    comments.


=== 1.1.0 ===
June 6, 2008 (revision 403)

- Added modules for YouTube.
- Added modules for Blogger to simplify using the Blogger API.
- Updated pydocs for all modules.
- New member in service object to allow the ClientLogin server to be changed.
    Required to be able to use ClientLogin with YouTube.
- Iterating over Google Apps Feeds can now be accomplished using a generator.
- New unit tests for the Google Apps Provisioning API.
- Bug fixes to the mock_service module used in unit tests.
- Fixed a bug in Query string generation when using category queries.
- Improved ease of use for Calendar query construction, URL components are
    now escaped automatically by default.
- Bug fix, added timezone element to CalendarEventFeed.
- Improved docstrings to describe token access methods (specifically 
    GetAuthSubToken).
- Moved ExtendedProperty class into gdata module from gdata.calendar since
    it is now also used in the Google Contacts Data API. 


=== 1.0.13 ===
May 8, 2008 (revision 357)

- Added sample code illustrating the use of the Contacts API modules.
- Added a mock_service module which will allow for faster test execution
    by simulating a server and replaying recordings instead of making
    HTTP requests to a remote server.
- Fixed a but in the gdata.auth module which could cause certain characters
    at the start of the token to be removed incorrectly.
- Fixed a bug in the gdata.apps.service module which caused an import to 
    fail when loading ElementTree in some cases.
- Service unit tests should run correctly when using run_service_tests 
    and run_all_tests now that the subtests have been made into packages.


=== 1.0.12.1 ===
April 10, 2008 (revision 341)

- Added new import statements so that xml.etree.ElementTree can be used. 
    Needed for the library to run on Google App Engine.


=== 1.0.12 ===
April 8, 2008 (revision 334)

- Added support for the Google Contacts API.
- Added a gdata.urlfetch module which allows this library to be used in 
    Google App Engine. This module uses urlfetch instead of httplib to 
    perform HTTP requests.
- Refactored atom.service and gdata.service to make it easier to swap out the
    HTTP communication layer.
- Fixed a bug in the Push method of gdata.spreadsheet.text_db.
- Sped up InsertRow method in gdata.spreadsheet.service.
- Improved XML parsing efficiency in gdata.calendar.service.
- Added new attribuges for the Google Apps login element.
- Improved UpdatePhotoBlob in gdata.photo.service.
- Added pydocs for Google Contacts API and updates in other modules.

=== 1.0.11.1 ===
March 13, 2008 (revision 314)

- Added text_db module to gdata.spreadsheet which makes using the Spreadsheets
    API feel more like using a simple database. This module streamlines use
    of the list feed.
- Compatibility fixes for geo and photos modules to run on Python 2.2 and 2.3.
- Added the orderby parameter to gdata.service's Query class.
- Changed the blogger sample to use orderby=updated so that queries on 
    updated min or max will work.
- Fix to string encoding in the atom core when converting text members to XML.


=== 1.0.11 ===
February 11, 2008 (revision 290)

- Modified the gdata.service.GDataService to include a handler member to 
    which all HTTP requests are delegated. This will allow the underlying
    HTTP client to be swapped out and pave the way for use of a mock server
    in unit tests.
- Fixed character encoding problems when parsing non ASCII XML.
- Added pydocs for gdata's geo, exif, and media packages. 


=== 1.0.10.1 ===
December 20, 2007 (revision 265)

- Photos packages for working with the Picasa Web Albums Data API.
- New modules for handling media, geo, and exif XML elements.
- Packages for the Google Code Seach API.
- New PyDoc HTML pages generated from the source code.
- Extracted authentication code into a seperate module which can be used in
    other applications.
- The core XML parser should now fully support UTF-8 strings, there are also
    options to change the default encoding.
- Bugfixes in Atom service's proxy support when authenticating with the proxy.
- Spreadsheets UpdateCell can now take integers for the row and column 
    parameters.
- Added INSTALL.txt to explain the installation process. The content was 
    copied from the getting started article here:
    http://code.google.com/support/bin/answer.py?answer=75582
- You can now create update and delete worksheets within a Google 
    Spreadsheet.
- Added convenience methods to service object to ease the process of 
    iterating through a feed.
- For Document List queries, added the ability to construct schema-qualified
    named folder queries.


=== 1.0.9 === 
October 15, 2007 (revision 213)

- Added support for batch requests for the Google Spreadsheets cells feed,
    Google Calendar's events feed, and Google Base's items feed.
- Authentication requests can now be sent to a different server by modifying 
    a module variable in gdata.service.
- Fixed the birthdaySample mashup.
- User Agent headers now fit the pattern used in other Google data client 
    libraries.
- Made it easier to access custom elements for Google Base items. 


=== 1.0.8 ===
August 31, 2007 (revision 192)

- Major refactoring of the data model classes. Improved XML parsing
    performance.
- Created a script to run all of the tests, one to run the data model tests,
    and one to run all service tests.
- Changes to MediaSource to handle uploading files on Windows.
- All of the sample code should now work in Python 2.2 and higher. I removed
    2.4 dependancies.
- Minor change to the Blogger sample; it now uses entry.GetSelfLink().
- Added fix to prevent socket.sslerror and redirect failures when using a
    proxy.
- Google Calendar event entries can now contain a reference to the original
    event. The original event element is present when describing a recurrance
    exception.
- Added timezone parameter to Google Calendar queries. This allows the client
    to request that event times be expressed in a specific timezone.


=== 1.0.7 ===
August 7, 2007

- Added new test for the Documents List data API's service module.
- Updated setup.py to include the docs package in the installation.


=== 1.0.6 ===
Aug 2, 2007

- Support for Documents List API added along with sample code.

=== 1.0.5 ===
July 31, 2007

- XML parsing can now use cElementTree if it is available, this should speed 
    up XML parsing.
- Redirects now include all params in the original HTTP request.
- Added support for WebContent and QuickAdd features of Google Calendar data 
    API.
- Proxy support added.
- Binary MIME uploads now work for Windows files when performing media uploads.
- New calendar functionality for add/edit/delete calendar and add/edit/delete 
    subscriptions. Also, added new functionality for Calendar Gadgets.


=== 1.0.4 ===
June 23, 2007

- Added data and service modules for Google Apps.
- XML parsing can now be configured in gdata module service calls to avoid 
    multiparsing to convert to the desired type.
- Fixed UTF-8 support in the Atom modules.
- The spreadsheets example now works with UTF-8 column names.
- Fixed a type in the Google Base dry-run sample.
- Calendar's Who element no longer requires a name when converting to XML.


=== 1.0.3 ===
May 30, 2007

- Added a mashup sample using the spreadsheets and calendar services.
- Reduced the number of unnecessary namespace declarations in the XML produced 
    by objects.
- Changed type of custom elements in a spreadsheets list entry.
- Fixed bugs in spreadsheetsExample.py.
- Spreadsheet entries now inherit from GDataEntry and have gdata specific 
    convenience methods. 


=== 1.0.2 ===
May 4, 2007

- Added support for media. Services can now upload images, the tests for this
    service use the Picasa Web Albums data API.
- Added example code illustrating Blogger operations.
- Fixed host name processing for URLs which have -'s in the host name.
- Added a debug setting for service classes.
- Added user agent header.
- Made finding links of a specific type easier when dealing with Atom elements.
    Atom Entries now have GetXLink methods.
- Simplified finding license links in Atom Entries. 


=== 1.0.1 ===
April 20, 2007

- Rearranged package structure, tests are in their own directory and Google
    data API extension classes are nested under the gdata package.
- Simplified accessing extension elements by adding FindExtesions.
- Provided a setup.py file for distutils based installation.
- Added support for the app:draft element.
- Imports ElementTree from XML libraries in Python 2.5
- Fixed _EntryLinkFromElementTree in the calendar data module.
- Fixed various _TakeChildFromElementTree methods in calendar data module.
- Fixed delete and update operations in the spreadsheetExample script.
- Fixed setting sort order and order by in calendar's service module.
- Added HTTP BasicAuth for AtomService.


=== 1.0 ===
March 26, 2007

Initial release
