1
0
mirror of https://github.com/django/django.git synced 2025-07-04 01:39:20 +00:00

[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
This commit is contained in:
Mariusz Felisiak 2021-04-09 12:56:27 +02:00
parent faeae84dad
commit 8bebb1c04a

View File

@ -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)