Skip to content

Commit df8e5cd

Browse files
Renaming BetterVersion to VersionIdentifier.
1 parent 99f55a0 commit df8e5cd

File tree

4 files changed

+68
-39
lines changed

4 files changed

+68
-39
lines changed

readthedocs/betterversion/better.py

+15-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
from distlib.version import AdaptiveVersion
22
from collections import defaultdict
33

4-
class BetterVersion(AdaptiveVersion):
4+
5+
class VersionIdentifier(AdaptiveVersion):
6+
"""
7+
An extended variant of ``distlib.version.AdaptiveVersion``. The constructor
8+
takes a version string like ``0.7.3`` and the class then provides a nice
9+
interface to access the different major/minor version numbers etc.
10+
"""
11+
512
@property
613
def major_version(self):
714
return self._parts[0][0]
@@ -14,8 +21,8 @@ def minor_version(self):
1421
except IndexError, e:
1522
return 0
1623

17-
class VersionManager(object):
1824

25+
class VersionManager(object):
1926
def __init__(self):
2027
self._state = defaultdict(lambda: defaultdict(list))
2128

@@ -50,13 +57,18 @@ def prune_point(self, num_latest):
5057
# Raise these for now.
5158
raise
5259

60+
5361
def version_windows(versions, major=1, minor=1, point=1, flat=False):
62+
# TODO: This needs some documentation on how VersionManager etc works and
63+
# some examples what the expected outcome is.
64+
5465
major_version_window = major
5566
minor_version_window = minor
5667
point_version_window = point
5768

5869
manager = VersionManager()
59-
[ manager.add(v) for v in versions]
70+
for v in versions:
71+
manager.add(v)
6072
manager.prune_major(major_version_window)
6173
manager.prune_minor(minor_version_window)
6274
manager.prune_point(point_version_window)

readthedocs/projects/models.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
from guardian.shortcuts import assign
1515

16-
from betterversion.better import version_windows, BetterVersion
16+
from betterversion.better import version_windows, VersionIdentifier
1717
from builds.constants import LATEST
1818
from builds.constants import LATEST_VERBOSE_NAME
1919
from oauth import utils as oauth_utils
@@ -716,15 +716,15 @@ def supported_versions(self, flat=True):
716716
"""
717717
if not self.num_major or not self.num_minor or not self.num_point:
718718
return None
719-
versions = []
720-
for ver in self.versions.all():
719+
version_identifiers = []
720+
for version in self.versions.all():
721721
try:
722-
versions.append(BetterVersion(ver.verbose_name))
722+
version_identifiers.append(VersionIdentifier(version.verbose_name))
723723
except UnsupportedVersionError:
724724
# Probably a branch
725725
pass
726726
active_versions = version_windows(
727-
versions,
727+
version_identifiers,
728728
major=self.num_major,
729729
minor=self.num_minor,
730730
point=self.num_point,

readthedocs/restapi/utils.py

-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
from projects.utils import slugify_uniquely
99
from search.indexes import PageIndex, ProjectIndex, SectionIndex
1010

11-
from betterversion.better import version_windows, BetterVersion
12-
1311
log = logging.getLogger(__name__)
1412

1513

readthedocs/rtd_tests/tests/test_betterversion.py

+48-29
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
import unittest
22

3-
from betterversion.better import version_windows, BetterVersion
3+
from betterversion.better import version_windows, VersionIdentifier
44

5-
class TestSequenceFunctions(unittest.TestCase):
65

6+
class TestSequenceFunctions(unittest.TestCase):
77
def setUp(self):
88
self.versions = [
9-
BetterVersion("0.1.0"),
10-
BetterVersion("0.2.0"),
11-
BetterVersion("0.2.1"),
12-
BetterVersion("0.3.0"),
13-
BetterVersion("0.3.1"),
14-
BetterVersion("1.1.0"),
15-
BetterVersion("1.2.0"),
16-
BetterVersion("1.3.0"),
17-
BetterVersion("2.1.0"),
18-
BetterVersion("2.2.0"),
19-
BetterVersion("2.3.0"),
20-
BetterVersion("2.3.1"),
21-
BetterVersion("2.3.2"),
22-
BetterVersion("2.3.3"),
9+
VersionIdentifier("0.1.0"),
10+
VersionIdentifier("0.2.0"),
11+
VersionIdentifier("0.2.1"),
12+
VersionIdentifier("0.3.0"),
13+
VersionIdentifier("0.3.1"),
14+
VersionIdentifier("1.1.0"),
15+
VersionIdentifier("1.2.0"),
16+
VersionIdentifier("1.3.0"),
17+
VersionIdentifier("2.1.0"),
18+
VersionIdentifier("2.2.0"),
19+
VersionIdentifier("2.3.0"),
20+
VersionIdentifier("2.3.1"),
21+
VersionIdentifier("2.3.2"),
22+
VersionIdentifier("2.3.3"),
2323
]
2424

2525
def test_major(self):
@@ -65,40 +65,59 @@ def test_point(self):
6565
self.assertEqual(len(point_versions[2][3]), 4)
6666

6767
def test_sort(self):
68-
final_versions = version_windows(self.versions, major=2, minor=2, point=1)
69-
self.assertTrue(final_versions[1][2][0] == BetterVersion('1.2.0'))
70-
self.assertTrue(final_versions[1][3][0] == BetterVersion('1.3.0'))
71-
self.assertTrue(final_versions[2][3][0] == BetterVersion('2.3.3'))
72-
self.assertTrue(final_versions[2][3][0] != BetterVersion('2.3.0'))
73-
74-
final_versions = version_windows(self.versions, major=1, minor=2, point=2)
68+
final_versions = version_windows(self.versions,
69+
major=2, minor=2, point=1)
70+
self.assertTrue(final_versions[1][2][0] == VersionIdentifier('1.2.0'))
71+
self.assertTrue(final_versions[1][3][0] == VersionIdentifier('1.3.0'))
72+
self.assertTrue(final_versions[2][3][0] == VersionIdentifier('2.3.3'))
73+
self.assertTrue(final_versions[2][3][0] != VersionIdentifier('2.3.0'))
74+
75+
final_versions = version_windows(self.versions,
76+
major=1, minor=2, point=2)
7577
# 1 major version
7678
self.assertEqual(final_versions[1], {})
7779
# 2 minor versions
7880
self.assertEqual(len(final_versions[2]), 2)
7981
# 2 point versions
8082
self.assertEqual(len(final_versions[2][3]), 2)
81-
final_versions = version_windows(self.versions, major=1, minor=2, point=3)
83+
final_versions = version_windows(self.versions,
84+
major=1, minor=2, point=3)
8285
# 2 point versions
8386
self.assertEqual(len(final_versions[2][3]), 3)
8487

8588
def test_flat(self):
86-
final_versions = version_windows(self.versions, major=2, minor=2, point=1, flat=True)
89+
final_versions = version_windows(self.versions,
90+
major=2, minor=2, point=1, flat=True)
8791
self.assertEqual(len(final_versions), 4)
8892
self.assertEqual(
8993
final_versions,
90-
[BetterVersion('1.2.0'), BetterVersion('1.3.0'), BetterVersion('2.2.0'), BetterVersion('2.3.3')]
94+
[
95+
VersionIdentifier('1.2.0'),
96+
VersionIdentifier('1.3.0'),
97+
VersionIdentifier('2.2.0'),
98+
VersionIdentifier('2.3.3')
99+
]
91100
)
92101

93-
final_versions = version_windows(self.versions, major=3, minor=2, point=1, flat=True)
102+
final_versions = version_windows(self.versions,
103+
major=3, minor=2, point=1, flat=True)
94104
self.assertEqual(len(final_versions), 6)
95105
self.assertEqual(
96106
final_versions,
97-
[BetterVersion('0.2.1'), BetterVersion('0.3.1'), BetterVersion('1.2.0'), BetterVersion('1.3.0'), BetterVersion('2.2.0'), BetterVersion('2.3.3')]
107+
[
108+
VersionIdentifier('0.2.1'),
109+
VersionIdentifier('0.3.1'),
110+
VersionIdentifier('1.2.0'),
111+
VersionIdentifier('1.3.0'),
112+
VersionIdentifier('2.2.0'),
113+
VersionIdentifier('2.3.3')
114+
]
98115
)
99116

100-
final_versions = version_windows(self.versions, major=3, minor=2, point=2, flat=True)
117+
final_versions = version_windows(self.versions,
118+
major=3, minor=2, point=2, flat=True)
101119
self.assertEqual(len(final_versions), 9)
102120

121+
103122
if __name__ == '__main__':
104123
unittest.main()

0 commit comments

Comments
 (0)