~andreas-noteng/+junk/python-gdata-maveric

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
=== 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