summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Pope <nick@nickpope.me.uk>2023-11-21 15:11:09 +0000
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-11-27 10:37:29 +0100
commit9baaf89eed42f9e747c774bc79543f47ea9697f8 (patch)
tree0a66089e01243075f358ce08b8599294c9e81f4c
parent174369a990c00d75cf40e0a06ab82bec9a89a7ef (diff)
Refs #34986 -- Added django.utils.version.PYPY.
-rw-r--r--django/utils/version.py3
-rw-r--r--tests/dispatch/tests.py4
-rwxr-xr-xtests/runtests.py4
3 files changed, 7 insertions, 4 deletions
diff --git a/django/utils/version.py b/django/utils/version.py
index 1e9c720299..ecd41dac89 100644
--- a/django/utils/version.py
+++ b/django/utils/version.py
@@ -6,6 +6,9 @@ import sys
from django.utils.regex_helper import _lazy_re_compile
+# Private, stable API for detecting the Python implementation.
+PYPY = sys.implementation.name == "pypy"
+
# 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
# should remain as long as the oldest supported Django version supports that
diff --git a/tests/dispatch/tests.py b/tests/dispatch/tests.py
index 2cd7bc8094..8e72e626dd 100644
--- a/tests/dispatch/tests.py
+++ b/tests/dispatch/tests.py
@@ -1,13 +1,13 @@
import gc
-import sys
import weakref
from types import TracebackType
from django.dispatch import Signal, receiver
from django.test import SimpleTestCase
from django.test.utils import override_settings
+from django.utils.version import PYPY
-if hasattr(sys, "pypy_version_info"):
+if PYPY:
def garbage_collect():
# Collecting weakreferences can take two collections on PyPy.
diff --git a/tests/runtests.py b/tests/runtests.py
index 48beb1a3d7..1e3d15591f 100755
--- a/tests/runtests.py
+++ b/tests/runtests.py
@@ -30,7 +30,7 @@ else:
from django.test.utils import NullTimeKeeper, TimeKeeper, get_runner
from django.utils.deprecation import RemovedInDjango60Warning
from django.utils.log import DEFAULT_LOGGING
- from django.utils.version import PY312
+ from django.utils.version import PY312, PYPY
try:
import MySQLdb
@@ -52,7 +52,7 @@ warnings.simplefilter("error", RuntimeWarning)
# references, which are a minority, so the garbage collection threshold can be
# larger than the default threshold of 700 allocations + deallocations without
# much increase in memory usage.
-if not hasattr(sys, "pypy_version_info"):
+if not PYPY:
gc.set_threshold(100_000)
RUNTESTS_DIR = os.path.abspath(os.path.dirname(__file__))