src/p4l/__init__.py
changeset 124 4b4dd6817db3
parent 122 8a31aead43a5
child 126 a345f1a67bf1
--- a/src/p4l/__init__.py	Mon Sep 30 15:47:14 2013 +0200
+++ b/src/p4l/__init__.py	Mon Sep 30 16:25:02 2013 +0200
@@ -1,15 +1,24 @@
 VERSION = (0, 1, 0, "final", 0)
 
 
-def get_version():
-    version = '%s.%s' % (VERSION[0], VERSION[1])
-    if VERSION[2]:
-        version = '%s.%s' % (version, VERSION[2])
-    if VERSION[3:] == ('alpha', 0):
-        version = '%s alpha' % version
-    else:
-        if VERSION[3] != 'final':
-            version = '%s %s %s' % (version, VERSION[3], VERSION[4])
-    return version
+def get_version(version=VERSION):
+    "Returns a PEP 386-compliant version number from VERSION."
+    assert len(version) == 5
+    assert version[3] in ('alpha', 'beta', 'rc', 'final')
+
+    # Now build the two parts of the version number:
+    # main = X.Y[.Z]
+    # sub = .devN - for pre-alpha releases
+    #     | {a|b|c}N - for alpha, beta and rc releases
+
+    parts = 2 if version[2] == 0 else 3
+    main = '.'.join(str(x) for x in version[:parts])
+
+    sub = ''
+    if version[3] != 'final':
+        mapping = {'alpha': 'a', 'beta': 'b', 'rc': 'c'}
+        sub = mapping[version[3]] + str(version[4])
+
+    return str(main + sub)
 
 __version__ = get_version()