Skip to content

Commit

Permalink
Merge pull request #118 from ChanTsune/feature/version-controle
Browse files Browse the repository at this point in the history
Feature/version controle
  • Loading branch information
ChanTsune authored Jul 18, 2020
2 parents 4ae8a81 + c7fe8ed commit 09483d4
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 9 deletions.
8 changes: 2 additions & 6 deletions django_boost/__init__.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
VERSION = (1, 6, 0)
from django_boost.utils.version import get_version


def get_version(version=VERSION):
if version[2] == 0:
return "%s.%s" % version[:2]
return "%s.%s.%s" % version
VERSION = (1, 6, 0, 'final', 0)


__version__ = get_version()
Expand Down
48 changes: 48 additions & 0 deletions django_boost/utils/version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@


def get_version(version=None):
"""Return a PEP 440-compliant version number from VERSION."""
version = get_complete_version(version)

# Now build the two parts of the version number:
# main = X.Y[.Z]
# sub = .devN - for pre-alpha releases
# | {a|b|rc}N - for alpha, beta, and rc releases

main = get_main_version(version)

sub = ''
if version[3] != 'final':
mapping = {'alpha': 'a', 'beta': 'b', 'rc': 'rc'}
sub = mapping[version[3]] + str(version[4])

return main + sub


def get_main_version(version=None):
"""Return main version (X.Y[.Z]) from VERSION."""
version = get_complete_version(version)
parts = 2 if version[2] == 0 else 3
return '.'.join(str(x) for x in version[:parts])


def get_complete_version(version=None):
"""
Return a tuple of the django version. If version argument is non-empty,
check for correctness of the tuple provided.
"""
if version is None:
from django_boost import VERSION as version
else:
assert len(version) == 5
assert version[3] in ('alpha', 'beta', 'rc', 'final')

return version


def get_docs_version(version=None):
version = get_complete_version(version)
if version[3] != 'final':
return 'dev'
else:
return '%d.%d' % version[:2]
6 changes: 4 additions & 2 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@
import os
import sys
from datetime import datetime
from importlib import import_module

import django

sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
version_module = import_module('.version', 'django_boost.utils')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
django.setup()

Expand All @@ -30,9 +32,9 @@
author = 'ChanTsune'

# The short X.Y version
version = '1.6'
version = version_module.get_docs_version()
# The full version, including alpha/beta/rc tags
release = '1.6'
release = version_module.get_version()


# -- General configuration ---------------------------------------------------
Expand Down
6 changes: 5 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,13 @@ def read(fname):
return f.read()


# Dynamically calculate the version based on django.VERSION.
version = __import__('django_boost').get_version()


setup(
name='django_boost',
version='1.6',
version=version,
description='Django Extension library',
long_description=read('README.md'),
long_description_content_type="text/markdown",
Expand Down
57 changes: 57 additions & 0 deletions tests/tests/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,3 +192,60 @@ def test_contain_any(self):
self.assertTrue(contain_any(sequence, [0]))
self.assertFalse(contain_any(sequence, [10]))
self.assertTrue(contain_any(sequence, [10, 7]))


class TestVersion(TestCase):

def test_get_version(self):
from django_boost.utils.version import get_version

test_cases = [
((1, 1, 1, 'final', 0), '1.1.1'),
((1, 1, 1, 'alpha', 0), '1.1.1a0'),
((1, 1, 1, 'beta', 0), '1.1.1b0'),
((1, 1, 1, 'rc', 0), '1.1.1rc0'),
((1, 1, 0, 'final', 0), '1.1'),
((1, 1, 0, 'beta', 0), '1.1b0'),
]
for t, s in test_cases:
self.assertEqual(get_version(t), s)

def test_get_main_version(self):
from django_boost.utils.version import get_main_version

test_cases = [
((1, 1, 1, 'final', 0), '1.1.1'),
((1, 1, 1, 'alpha', 0), '1.1.1'),
((1, 1, 1, 'beta', 0), '1.1.1'),
((1, 1, 1, 'rc', 0), '1.1.1'),
((1, 1, 0, 'final', 0), '1.1'),
((1, 1, 0, 'beta', 0), '1.1'),
]
for t, s in test_cases:
self.assertEqual(get_main_version(t), s)

def test_get_complete_version(self):
from django_boost.utils.version import get_complete_version
test_cases = [
(1, 1, 1, 'final', 0),
(1, 1, 1, 'alpha', 0),
(1, 1, 1, 'beta', 0),
(1, 1, 1, 'rc', 0),
(1, 1, 0, 'final', 0),
(1, 1, 0, 'beta', 0),
]
for t in test_cases:
self.assertEqual(get_complete_version(t), t)

def test_get_docs_version(self):
from django_boost.utils.version import get_docs_version
test_cases = [
((1, 1, 1, 'final', 0), '1.1'),
((1, 1, 1, 'alpha', 0), 'dev'),
((1, 1, 1, 'beta', 0), 'dev'),
((1, 1, 1, 'rc', 0), 'dev'),
((1, 1, 0, 'final', 0), '1.1'),
((1, 1, 0, 'beta', 0), 'dev'),
]
for t, s in test_cases:
self.assertEqual(get_docs_version(t), s)

0 comments on commit 09483d4

Please sign in to comment.