8000 Refs #32074 -- Removed usage of Python's deprecated distutils.version… · django/django@b8c9e9f · GitHub
[go: up one dir, main page]

Skip to content

Commit b8c9e9f

Browse files
authored
Refs #32074 -- Removed usage of Python's deprecated distutils.version package.
The distutils package was formally deprecated in Python 3.10 and will be removed in Python 3.12.
1 parent fc268c8 commit b8c9e9f

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

django/utils/version.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
import os
44
import subprocess
55
import sys
6-
from distutils.version import LooseVersion
6+
7+
from django.utils.regex_helper import _lazy_re_compile
78

89
# Private, stable API for detecting the Python version. PYXY means "Python X.Y
910
# or later". So that third-party apps can use these values, each constant
@@ -95,15 +96,21 @@ def get_git_changeset():
9596
return timestamp.strftime('%Y%m%d%H%M%S')
9697

9798

99+
version_component_re = _lazy_re_compile(r'(\d+|[a-z]+|\.)')
100+
101+
98102
def get_version_tuple(version):
99103
"""
100104
Return a tuple of version numbers (e.g. (1, 2, 3)) from the version
101105
string (e.g. '1.2.3').
102106
"""
103-
loose_version = LooseVersion(version)
104107
version_numbers = []
105-
for item in loose_version.version:
106-
if not isinstance(item, int):
107-
break
108-
version_numbers.append(item)
108+
for item in version_component_re.split(version):
109+
if item and item != '.':
110+
try:
111+
component = int(item)
112+
except ValueError:
113+
break
114+
else:
115+
version_numbers.append(component)
109116
return tuple(version_numbers)

0 commit comments

Comments
 (0)
0