From 9f5339f874b62e7eac14f6d128d1517fafb36436 Mon Sep 17 00:00:00 2001
From: Bryan Tong Minh <bryan.tongminh@gmail.com>
Date: Fri, 6 May 2011 21:52:09 +0000
Subject: [PATCH] Fix the wicked version parsing

---
 mwclient/RELEASE-NOTES.txt |  1 +
 mwclient/client.py         | 19 +++++++------------
 2 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/mwclient/RELEASE-NOTES.txt b/mwclient/RELEASE-NOTES.txt
index 4c7a8ad..34eabb5 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 b5bc53d..d9bf6f1 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'])
-- 
GitLab