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