summaryrefslogtreecommitdiff
path: root/django/utils
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 /django/utils
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
Diffstat (limited to 'django/utils')
-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)