diff --git a/src/pkgcheck/checks/python.py b/src/pkgcheck/checks/python.py
index 2c46885ad..bacbdb5af 100644
--- a/src/pkgcheck/checks/python.py
+++ b/src/pkgcheck/checks/python.py
@@ -48,7 +48,7 @@ def get_python_eclass(pkg):
 
 
 def is_python_interpreter(pkg):
-    if pkg.key == "dev-lang/python":
+    if pkg.key in ("dev-lang/pypy", "dev-lang/python"):
         # ignore python:2.7 deps since they are being phased out from eclass
         # support
         return pkg.slot is None or not pkg.slot.startswith("2")
diff --git a/testdata/data/repos/python/PythonCheck/DistutilsNonPEP517Build/fix.patch b/testdata/data/repos/python/PythonCheck/DistutilsNonPEP517Build/fix.patch
index 6ad28c31b..d4e50d37b 100644
--- a/testdata/data/repos/python/PythonCheck/DistutilsNonPEP517Build/fix.patch
+++ b/testdata/data/repos/python/PythonCheck/DistutilsNonPEP517Build/fix.patch
@@ -5,6 +5,6 @@ diff -Naur python/PythonCheck/DistutilsNonPEP517Build/DistutilsNonPEP517Build-0.
  EAPI=7
  
 +DISTUTILS_USE_PEP517=setuptools
- PYTHON_COMPAT=( python3_10 )
+ PYTHON_COMPAT=( pypy3 python3_10 )
  
  inherit distutils-r1
diff --git a/testdata/repos/python/PythonCheck/DistutilsNonPEP517Build/DistutilsNonPEP517Build-0.ebuild b/testdata/repos/python/PythonCheck/DistutilsNonPEP517Build/DistutilsNonPEP517Build-0.ebuild
index 03ff29371..d2e833ec2 100644
--- a/testdata/repos/python/PythonCheck/DistutilsNonPEP517Build/DistutilsNonPEP517Build-0.ebuild
+++ b/testdata/repos/python/PythonCheck/DistutilsNonPEP517Build/DistutilsNonPEP517Build-0.ebuild
@@ -1,6 +1,6 @@
 EAPI=7
 
-PYTHON_COMPAT=( python3_10 )
+PYTHON_COMPAT=( pypy3 python3_10 )
 
 inherit distutils-r1
 
diff --git a/testdata/repos/python/PythonCheck/PythonAnyMismatchedDepHasVersionCheck/PythonAnyMismatchedDepHasVersionCheck-0.ebuild b/testdata/repos/python/PythonCheck/PythonAnyMismatchedDepHasVersionCheck/PythonAnyMismatchedDepHasVersionCheck-0.ebuild
index a70a4d3e5..9a6a57ee4 100644
--- a/testdata/repos/python/PythonCheck/PythonAnyMismatchedDepHasVersionCheck/PythonAnyMismatchedDepHasVersionCheck-0.ebuild
+++ b/testdata/repos/python/PythonCheck/PythonAnyMismatchedDepHasVersionCheck/PythonAnyMismatchedDepHasVersionCheck-0.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-PYTHON_COMPAT=( python3_10 )
+PYTHON_COMPAT=( pypy3 python3_10 )
 
 inherit python-any-r1
 
diff --git a/testdata/repos/python/PythonCheck/PythonAnyMismatchedDepHasVersionCheck/PythonAnyMismatchedDepHasVersionCheck-1.ebuild b/testdata/repos/python/PythonCheck/PythonAnyMismatchedDepHasVersionCheck/PythonAnyMismatchedDepHasVersionCheck-1.ebuild
index 2652cf8c1..bd81efe2a 100644
--- a/testdata/repos/python/PythonCheck/PythonAnyMismatchedDepHasVersionCheck/PythonAnyMismatchedDepHasVersionCheck-1.ebuild
+++ b/testdata/repos/python/PythonCheck/PythonAnyMismatchedDepHasVersionCheck/PythonAnyMismatchedDepHasVersionCheck-1.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=6
 
-PYTHON_COMPAT=( python3_10 )
+PYTHON_COMPAT=( pypy3 python3_10 )
 
 inherit python-any-r1
 
diff --git a/testdata/repos/python/PythonCheck/PythonAnyMismatchedUseHasVersionCheck/PythonAnyMismatchedUseHasVersionCheck-0.ebuild b/testdata/repos/python/PythonCheck/PythonAnyMismatchedUseHasVersionCheck/PythonAnyMismatchedUseHasVersionCheck-0.ebuild
index e1b1c707e..3279e62b9 100644
--- a/testdata/repos/python/PythonCheck/PythonAnyMismatchedUseHasVersionCheck/PythonAnyMismatchedUseHasVersionCheck-0.ebuild
+++ b/testdata/repos/python/PythonCheck/PythonAnyMismatchedUseHasVersionCheck/PythonAnyMismatchedUseHasVersionCheck-0.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-PYTHON_COMPAT=( python3_10 )
+PYTHON_COMPAT=( pypy3 python3_10 )
 
 inherit python-any-r1
 
diff --git a/testdata/repos/python/PythonCheck/PythonAnyMismatchedUseHasVersionCheck/PythonAnyMismatchedUseHasVersionCheck-1.ebuild b/testdata/repos/python/PythonCheck/PythonAnyMismatchedUseHasVersionCheck/PythonAnyMismatchedUseHasVersionCheck-1.ebuild
index 616bcd955..48c00f4dc 100644
--- a/testdata/repos/python/PythonCheck/PythonAnyMismatchedUseHasVersionCheck/PythonAnyMismatchedUseHasVersionCheck-1.ebuild
+++ b/testdata/repos/python/PythonCheck/PythonAnyMismatchedUseHasVersionCheck/PythonAnyMismatchedUseHasVersionCheck-1.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-PYTHON_COMPAT=( python3_10 )
+PYTHON_COMPAT=( pypy3 python3_10 )
 
 inherit python-any-r1
 
diff --git a/testdata/repos/python/PythonCheck/PythonAnyMismatchedUseHasVersionCheck/PythonAnyMismatchedUseHasVersionCheck-2.ebuild b/testdata/repos/python/PythonCheck/PythonAnyMismatchedUseHasVersionCheck/PythonAnyMismatchedUseHasVersionCheck-2.ebuild
index 0f011b363..27e72e883 100644
--- a/testdata/repos/python/PythonCheck/PythonAnyMismatchedUseHasVersionCheck/PythonAnyMismatchedUseHasVersionCheck-2.ebuild
+++ b/testdata/repos/python/PythonCheck/PythonAnyMismatchedUseHasVersionCheck/PythonAnyMismatchedUseHasVersionCheck-2.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-PYTHON_COMPAT=( python3_10 )
+PYTHON_COMPAT=( pypy3 python3_10 )
 
 inherit python-any-r1
 
diff --git a/testdata/repos/python/PythonCheck/PythonHasVersionMissingPythonUseDep/PythonHasVersionMissingPythonUseDep-0.ebuild b/testdata/repos/python/PythonCheck/PythonHasVersionMissingPythonUseDep/PythonHasVersionMissingPythonUseDep-0.ebuild
index 24ebb8780..5e5ff7f36 100644
--- a/testdata/repos/python/PythonCheck/PythonHasVersionMissingPythonUseDep/PythonHasVersionMissingPythonUseDep-0.ebuild
+++ b/testdata/repos/python/PythonCheck/PythonHasVersionMissingPythonUseDep/PythonHasVersionMissingPythonUseDep-0.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-PYTHON_COMPAT=( python3_10 )
+PYTHON_COMPAT=( pypy3 python3_10 )
 
 inherit python-any-r1
 
diff --git a/testdata/repos/python/PythonCheck/PythonHasVersionUsage/PythonHasVersionUsage-0.ebuild b/testdata/repos/python/PythonCheck/PythonHasVersionUsage/PythonHasVersionUsage-0.ebuild
index face1460c..02ef25e02 100644
--- a/testdata/repos/python/PythonCheck/PythonHasVersionUsage/PythonHasVersionUsage-0.ebuild
+++ b/testdata/repos/python/PythonCheck/PythonHasVersionUsage/PythonHasVersionUsage-0.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-PYTHON_COMPAT=( python3_10 )
+PYTHON_COMPAT=( pypy3 python3_10 )
 
 inherit python-any-r1
 
diff --git a/testdata/repos/python/PythonCheck/PythonHasVersionUsage/PythonHasVersionUsage-1.ebuild b/testdata/repos/python/PythonCheck/PythonHasVersionUsage/PythonHasVersionUsage-1.ebuild
index 240f53648..87ff62248 100644
--- a/testdata/repos/python/PythonCheck/PythonHasVersionUsage/PythonHasVersionUsage-1.ebuild
+++ b/testdata/repos/python/PythonCheck/PythonHasVersionUsage/PythonHasVersionUsage-1.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-PYTHON_COMPAT=( python3_10 )
+PYTHON_COMPAT=( pypy3 python3_10 )
 
 inherit python-any-r1
 
diff --git a/testdata/repos/python/PythonCheck/PythonMissingDeps/PythonMissingDeps-0.ebuild b/testdata/repos/python/PythonCheck/PythonMissingDeps/PythonMissingDeps-0.ebuild
index 236182e93..1b5b1fd4c 100644
--- a/testdata/repos/python/PythonCheck/PythonMissingDeps/PythonMissingDeps-0.ebuild
+++ b/testdata/repos/python/PythonCheck/PythonMissingDeps/PythonMissingDeps-0.ebuild
@@ -1,5 +1,5 @@
 EAPI=7
-PYTHON_COMPAT=( python3_9 )
+PYTHON_COMPAT=( pypy3 python3_9 )
 
 inherit python-r1
 
diff --git a/testdata/repos/python/PythonCheck/PythonMissingDeps/PythonMissingDeps-1.ebuild b/testdata/repos/python/PythonCheck/PythonMissingDeps/PythonMissingDeps-1.ebuild
index 5c2d85fbf..191d49742 100644
--- a/testdata/repos/python/PythonCheck/PythonMissingDeps/PythonMissingDeps-1.ebuild
+++ b/testdata/repos/python/PythonCheck/PythonMissingDeps/PythonMissingDeps-1.ebuild
@@ -2,7 +2,7 @@ EAPI=8
 
 DISTUTILS_OPTIONAL=1
 DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_10 )
+PYTHON_COMPAT=( pypy3 python3_10 )
 
 inherit distutils-r1
 
diff --git a/testdata/repos/python/PythonCheck/PythonMissingDeps/PythonMissingDeps-2.ebuild b/testdata/repos/python/PythonCheck/PythonMissingDeps/PythonMissingDeps-2.ebuild
index 73d59a277..60c7b3df0 100644
--- a/testdata/repos/python/PythonCheck/PythonMissingDeps/PythonMissingDeps-2.ebuild
+++ b/testdata/repos/python/PythonCheck/PythonMissingDeps/PythonMissingDeps-2.ebuild
@@ -2,7 +2,7 @@ EAPI=8
 
 DISTUTILS_OPTIONAL=1
 DISTUTILS_USE_PEP517=no
-PYTHON_COMPAT=( python3_10 )
+PYTHON_COMPAT=( pypy3 python3_10 )
 
 inherit distutils-r1
 
diff --git a/testdata/repos/python/PythonCheck/PythonMissingSCMDependency/PythonMissingSCMDependency-0.ebuild b/testdata/repos/python/PythonCheck/PythonMissingSCMDependency/PythonMissingSCMDependency-0.ebuild
index 79a8a8dfc..f793e70e9 100644
--- a/testdata/repos/python/PythonCheck/PythonMissingSCMDependency/PythonMissingSCMDependency-0.ebuild
+++ b/testdata/repos/python/PythonCheck/PythonMissingSCMDependency/PythonMissingSCMDependency-0.ebuild
@@ -1,7 +1,7 @@
 EAPI=8
 
 DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_10 )
+PYTHON_COMPAT=( pypy3 python3_10 )
 
 inherit distutils-r1
 
diff --git a/testdata/repos/python/dev-lang/pypy/pypy-2.7.7.3.17.ebuild b/testdata/repos/python/dev-lang/pypy/pypy-2.7.7.3.17.ebuild
new file mode 100644
index 000000000..36ab208dc
--- /dev/null
+++ b/testdata/repos/python/dev-lang/pypy/pypy-2.7.7.3.17.ebuild
@@ -0,0 +1,6 @@
+EAPI=8
+
+DESCRIPTION="Stub ebuild for pypy interpreter"
+HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+LICENSE="BSD"
+SLOT="2.7/1234"
diff --git a/testdata/repos/python/dev-lang/pypy/pypy-3.10.7.3.17.ebuild b/testdata/repos/python/dev-lang/pypy/pypy-3.10.7.3.17.ebuild
new file mode 100644
index 000000000..6d32fa2f3
--- /dev/null
+++ b/testdata/repos/python/dev-lang/pypy/pypy-3.10.7.3.17.ebuild
@@ -0,0 +1,6 @@
+EAPI=8
+
+DESCRIPTION="Stub ebuild for pypy3 interpreter"
+HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+LICENSE="BSD"
+SLOT="3.10/pypy310-1234"
diff --git a/testdata/repos/python/eclass/python-any-r1.eclass b/testdata/repos/python/eclass/python-any-r1.eclass
index 1066a5ade..56aa329c2 100644
--- a/testdata/repos/python/eclass/python-any-r1.eclass
+++ b/testdata/repos/python/eclass/python-any-r1.eclass
@@ -12,16 +12,21 @@
 
 _python_set_impls() {
 	local i slot
-	local -a use
+	PYTHON_DEPS="|| ("
 	for i in "${PYTHON_COMPAT[@]}"; do
-		slot=${i#python}
-		slot=${slot/_/.}
-		use+=( "python_targets_${i}" )
-		PYTHON_DEPS+=" python_targets_${i}? ( dev-lang/python:${slot} )"
+		case ${i} in
+			python*)
+				slot=${i#python}
+				slot=${slot/_/.}
+				PYTHON_DEPS+=" dev-lang/python:${slot}"
+				;;
+			pypy3)
+				PYTHON_DEPS+=" >=dev-lang/pypy-3.10:="
+				;;
+		esac
 	done
-	IUSE+=" ${use[@]}"
-	PYTHON_REQUIRED_USE="|| ( ${use[@]} )"
-	PYTHON_USEDEP=$(IFS=","; echo "${use[*]}")
+	PYTHON_DEPS+=" )"
+	PYTHON_REQUIRED_USE='I-DO-NOT-EXIST-IN-PYTHON-ANY-R1'
 }
 _python_set_impls
 
diff --git a/testdata/repos/python/eclass/python-r1.eclass b/testdata/repos/python/eclass/python-r1.eclass
index 9646b3a35..0bac0d92c 100644
--- a/testdata/repos/python/eclass/python-r1.eclass
+++ b/testdata/repos/python/eclass/python-r1.eclass
@@ -14,10 +14,17 @@ _python_set_impls() {
 	local i slot
 	local -a use
 	for i in "${PYTHON_COMPAT[@]}"; do
-		slot=${i#python}
-		slot=${slot/_/.}
 		use+=( "python_targets_${i}" )
-		PYTHON_DEPS+=" python_targets_${i}? ( dev-lang/python:${slot} )"
+		case ${i} in
+			python*)
+				slot=${i#python}
+				slot=${slot/_/.}
+				PYTHON_DEPS+=" python_targets_${i}? ( dev-lang/python:${slot} )"
+				;;
+			pypy3)
+				PYTHON_DEPS+=" python_targets_${i}? ( >=dev-lang/pypy-3.10:= )"
+				;;
+		esac
 	done
 	IUSE+=" ${use[@]}"
 	PYTHON_REQUIRED_USE="|| ( ${use[@]} )"
diff --git a/testdata/repos/python/eclass/python-single-r1.eclass b/testdata/repos/python/eclass/python-single-r1.eclass
index e16b8a931..5a8debca1 100644
--- a/testdata/repos/python/eclass/python-single-r1.eclass
+++ b/testdata/repos/python/eclass/python-single-r1.eclass
@@ -14,10 +14,17 @@ _python_set_impls() {
 	local i slot
 	local -a use use_deps
 	for i in "${PYTHON_COMPAT[@]}"; do
-		slot=${i#python}
-		slot=${slot/_/.}
 		use+=( "python_single_target_${i}" )
-		PYTHON_DEPS+=" python_single_target_${i}? ( dev-lang/python:${slot} )"
+		case ${i} in
+			python*)
+				slot=${i#python}
+				slot=${slot/_/.}
+				PYTHON_DEPS+=" python_single_target_${i}? ( dev-lang/python:${slot} )"
+				;;
+			pypy3)
+				PYTHON_DEPS+=" python_single_target_${i}? ( >=dev-lang/pypy-3.10:= )"
+				;;
+		esac
 	done
 	IUSE+=" ${use[@]}"
 	PYTHON_REQUIRED_USE="^^ ( ${use[@]} )"
