1Changes since 1.1:
2* Compatibility added for the new login method in MediaWiki 1.15.3 and higher.
3  See <https://bugzilla.wikimedia.org/show_bug.cgi?id=23076> for more details.
4* Using the logout() function sets the correct version number in the user-agent
5
6Changes since 1.0:
7* Unicode bug in pagelist.listFromTitles fixed.
8* Page objects now have an "unprefixedtitle" attribute with the title minus the namespace
9  prefix
10* The page object sconstructor now accepts a "namespace" argument to set the namespace
11  based on a namespace index rather than the title
12* The Page class now subclasses object
13* maxlag can be ignored entirely by setting it to <0
14* New function: User.isBlocked()
15* The User.blocked attribute now has three possible values - None, False, True -
16  corresponding to unknown, not blocked, blocked. Previously False could mean
17  either unknown or not blocked.
18* Wiki.login() now has a domain argument, used for wikis that have LDAP login
19* File upload support has been added for action=import and action=upload, the poster
20  package <http://pypi.python.org/pypi/poster> is required for this
21* Bug in APIRequest.changeParam() fixed
22* New Page.getCategories() function to get a list of categories on a page, also
23  added a "categories" attribute to Page
24* Cookiejar files are no longer world-readable by setting the umask to 0077 before
25  creating the file
26* If the API is disabled, an APIDisabled exception will be raised instead of repeating the
27  request forever
28* Added File.getHistory() function and File.history attribute to get file upload history
29* Added File.upload() function to upload files and UploadError exception for errors
30  during uploading
31* Added an APIListResult class for cases where the API result is only a list such as
32  action=opensearch
33* Added a Namespace class to wiki.py. Namespace 'constants' are now added as attributes
34  to Wiki objects. The attributes use the canonical name, in the same style as MediaWiki -
35  NS_NAME. Namespace subclasses int, so they function as integers in every way, except
36  the OR operator ( | ) is overridden to produce a list of namespaces for use in an API query
37* Page.__getSection now uses a better, non-hacky way to determine section numbers from section
38  names, and now works correctly on pages with transcluded sections
39* Page.edit() now accepts the new "watchlist" option
40* If logged in, the default User-Agent header now includes the username
41
42Changes since 0.1.1:
43* pagelist.listFromTitles() fixed
44* automatic query-continue alogrithm improved
45* performace of pagelist functions improved
46* API query results now use the APIResult class, subclassing dict. HTTP response headers are
47  included in the results as .response member variable
48* setNamespace() function added to Page class to allow changing the namespace of a Page object
49* Title normalization improved
50* API requests now print the actual exception info when retrying. If not retrying, the
51  exception is not caught. The ServerError exception has been removed.
52* Added option to skip MD5 check when editing, as PHP's urldecoding fails in some corner cases
53* Handling of sections in the Page class (particularly section 0) is improved
54* Added some compatibility for read-restricted wikis. Not having read access previously caused
55  creating a Wiki object to fail as it tried to retrive the site info before login
56* Handling of non-existent pages improved
57* All modules imported when doing "import wikitools"
58* Category.getAllMembers() can now be filtered by namespace by passing a list of
59  namespaces as the "namespaces" parameter
60* File class (subclass of Page) added in wikifile.py (to avoid conflict with builtin file
61  objects) - includes functions to get file usage and download the file
62* __str__ and __repr__ functions added for most objects to give useful string representations
63* in-code documentation improved
64* More functions now return some value, useful for debugging
65* Broken Wiki.setUserAgent() function fixed
66
67List of changes since 0.1 release:
68* Make page existence and setPageInfo() checks more consistent.
69* Use **kwargs in Page.edit() rather than dozen keyword arguments all False by default,
70  this is a breaking change for anything didn't explicitly use the keyword arguments
71  for some reason. If the first param isn't a keyword, its treated as "text" for partial BC,
72  arguments are now all the same as the API action=edit params, "newtext" and "basetime"
73  still work for BC
74* Fix broken User.page
75* APIRequest now makes a copy() of params rather than using it directly
76* reduce calls to setPageInfo() by using the title if pageid isn't available
77* Make redirect following less random on calls to setPageInfo in Page -
78  note that this removes the followRedir param from setPageInfo, replacing it with
79  a followRedir member variable
80* set maxlag directly in the query params for temporary raises for login/siteinfo queries
81  rather than using setmaxlag(), which could reset it back to 5 if the user set it to 120
82  before logging in
83* fix maxlag bug that changed it to 120 but didn't reset it back to 5
84* rewrite most of __longQuery and improve resultCombine
85* add missing module import in api.py
86* use pickle for cookie files, add an option to login() to verify the cookies are correct
87  with isLoggedIn(), set to True by default
88* fix User.isIP check - several non IPs were treated as IP addresses
89* support reblock option for user blocks
90* improve namespace guessing/title normalization, include namespace aliases,
91  add the namespace prefix to category objects if its not already there
92