Skip to content

Commit

Permalink
[3.2.x] Refs #32074 -- Removed usage of Python's deprecated distutils…
Browse files Browse the repository at this point in the history
….version package.

The distutils package was formally deprecated in Python 3.10 and will
be removed in Python 3.12.
Backport of b8c9e9f from main
  • Loading branch information
felixxm committed Oct 5, 2021
1 parent faeae84 commit 8bebb1c
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions django/utils/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
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
Expand Down Expand Up @@ -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)

0 comments on commit 8bebb1c

Please sign in to comment.