summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2021-04-09 12:56:27 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-10-05 11:11:02 +0200
commit8bebb1c04a40a8bb45368415cd01ccbf32fd3236 (patch)
tree850959d588e9b00139b67af411edb66825a469bb
parentfaeae84dad15c3fe9dc989aa540f0556b7904a95 (diff)
[3.2.x] 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. Backport of b8c9e9fae14676d2e81242cb8df1e2eeef9c3a2d from main
-rw-r--r--django/utils/version.py19
1 files changed, 13 insertions, 6 deletions
diff --git a/django/utils/version.py b/django/utils/version.py
index 4b26586b36..b0f395be3f 100644
--- a/django/utils/version.py
+++ b/django/utils/version.py
@@ -3,7 +3,8 @@ import functools
import os
import subprocess
import sys
-from distutils.version import LooseVersion
+
+from django.utils.regex_helper import _lazy_re_compile
# Private, stable API for detecting the Python version. PYXY means "Python X.Y
# or later". So that third-party apps can use these values, each constant
@@ -90,15 +91,21 @@ def get_git_changeset():
return timestamp.strftime('%Y%m%d%H%M%S')
+version_component_re = _lazy_re_compile(r'(\d+|[a-z]+|\.)')
+
+
def get_version_tuple(version):
"""
Return a tuple of version numbers (e.g. (1, 2, 3)) from the version
string (e.g. '1.2.3').
"""
- loose_version = LooseVersion(version)
version_numbers = []
- for item in loose_version.version:
- if not isinstance(item, int):
- break
- version_numbers.append(item)
+ for item in version_component_re.split(version):
+ if item and item != '.':
+ try:
+ component = int(item)
+ except ValueError:
+ break
+ else:
+ version_numbers.append(component)
return tuple(version_numbers)