diff --git a/mwclient/RELEASE-NOTES.txt b/mwclient/RELEASE-NOTES.txt index 4c7a8ad65e21956c0fc2e9521eaac4031c3ec8d2..34eabb5fb75bf84fee87e7c8ef2362f85d379f56 100644 --- a/mwclient/RELEASE-NOTES.txt +++ b/mwclient/RELEASE-NOTES.txt @@ -7,6 +7,7 @@ This is mwclient 0.6.5. The following are the release notes for this version. on some versions of Python. * Fix for upload by URL * Handle readapidenied error in site init +* Fix version parsing for almost any sane version string == Changes in version 0.6.4 == * Added support for upload API diff --git a/mwclient/client.py b/mwclient/client.py index b5bc53de090972653c7ff49a0a662381a7a577e3..d9bf6f1f548a91c5990b3ad930166e01631921c8 100644 --- a/mwclient/client.py +++ b/mwclient/client.py @@ -114,18 +114,13 @@ class Site(object): if s[i] < '0' or s[i] > '9': break i += 1 - return int(s[:i]), s[i:] - # FIXME! Fix those awful two hacks - if len(version) == 2: - # An alpha version - self.version = (int(version[0]), ) + split_num(version[1]) - elif len(version) == 3 and 'rc' in version[2]: - # Release candidate - self.version = (int(version[0]), int(version[1]), version[2]) - elif len(version) == 3: - # Regular y.x.z version - self.version = (int(version[0]), int(version[1]), int(version[2])) - else: + if s[i:]: + return (int(s[:i]), s[i:], ) + else: + return (int(s[:i]), ) + self.version = sum((split_num(s) for s in version), ()) + + if len(self.version) < 2: raise errors.MediaWikiVersionError('Unknown MediaWiki %s' % '.'.join(version)) else: raise errors.MediaWikiVersionError('Unknown generator %s' % self.site['generator'])