commit:     864eb6470c88ff90f32a3536b08ef415b2f966cc
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Dec  3 04:12:21 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Dec  3 04:19:20 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=864eb647

dev-python/pymongo: Remove old

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/pymongo/Manifest                        |   4 -
 .../pymongo/files/pymongo-4.15.2-backports.patch   | 212 ---------------------
 dev-python/pymongo/pymongo-4.15.0.ebuild           | 201 -------------------
 dev-python/pymongo/pymongo-4.15.1.ebuild           | 201 -------------------
 dev-python/pymongo/pymongo-4.15.2-r1.ebuild        | 207 --------------------
 dev-python/pymongo/pymongo-4.15.2.ebuild           | 201 -------------------
 dev-python/pymongo/pymongo-4.15.3.ebuild           | 201 -------------------
 profiles/package.mask                              |   6 -
 8 files changed, 1233 deletions(-)

diff --git a/dev-python/pymongo/Manifest b/dev-python/pymongo/Manifest
index f17539612368..e876ef141e3b 100644
--- a/dev-python/pymongo/Manifest
+++ b/dev-python/pymongo/Manifest
@@ -1,8 +1,4 @@
 DIST mongo-python-driver-4.13.1.gh.tar.gz 2225917 BLAKE2B 
2c02e608f54c68abebb69cd61f16c79c8388301e6ebe77a73959ba3dbe086c878b3afd1523f6943ddfca228e1115cbaade49c29c2e5bb620feab9214dcbfba11
 SHA512 
8baf5548d5772fa62fef2a4ac2fa7dc83bcf7fda178410e9bf675679ea77976f72548a0794ced6856ea538d02403a3c522a66cbf2e37f506b4546489a689ce92
 DIST mongo-python-driver-4.13.2.gh.tar.gz 2227437 BLAKE2B 
3aa6d0feedc6a33eb4e9299d85eeab2a9638bf713cfadf9f4018f6bd668758d3afd5b9b4b71dec037fb3f99e89cc34e299e1d9b4521c8ace9da9ce50ae95142b
 SHA512 
845cf92e702a9970f2ef1b5085fffcca96021e0f2fc5133e24b2860482dafabe7770d9421922659d0c6008aac1d5a70834ee4f1728a648fd83e6d33bc33568b0
 DIST mongo-python-driver-4.14.1.gh.tar.gz 2271379 BLAKE2B 
5a1ce13c5275657ee3d64fc0450a20e9c6c3bbfd91bfde6e6e3e8f143b95ea63d18b5cf2b8ba3b707f642eea900894a56889d6bf1d7d9f11f6cfa556a9b7b10b
 SHA512 
087c0450ee1d261cdcb8558d75b4749395058773a33849d94824e2fca0157d0eb4c3f5545a4ddfc0b1bc645a52988f515a90be978f4f88c6a3db4dffa2f9ff9e
-DIST mongo-python-driver-4.15.0.gh.tar.gz 2535131 BLAKE2B 
6d8915d0fc2f2aff41a085d11d64d761cbf6d8edf7636200fefd1e8e8060b14f6f3cdc2e437b0328f586bd575ad1ea8b212e415279162e47c590de95508752c8
 SHA512 
a1c3674f4abf09ee1e97fb0a5acfa00c7be111a75457ca50d777c949bb09e4e6f0b11bc718c8d416e72710107812efbeb4302f46b679a73514348a8cfcc69f1a
-DIST mongo-python-driver-4.15.1.gh.tar.gz 2536890 BLAKE2B 
6edab82aae4a01e13e7ac81149176c083bac83c274a382d3cd2f2e7e26775ab60d83866b3b183329467275294d1244cc0c784b29aa5b94e0c5ed4850a0dcdd98
 SHA512 
807ad85313f8ff56e60cb95d6fe35c9f897a57ba413740321a015736d6a61d48f7ec704705843e444628d5844525e64b217a898b502e7d36545421c47542de78
-DIST mongo-python-driver-4.15.2.gh.tar.gz 2536862 BLAKE2B 
91ba6ce4b15711e8d503b0ec3d6a9267bb812ba539bfc340774d8cfb6446bbc7e3cc0db47ba697bcc264da753625143a55b76607be871606fa739295e148da04
 SHA512 
e69815b11eb16f39e66494469e2b0c598ab4d0726a746ff0c488547c4c4c41c6feaccc973f936682b868a0eccbc0e76855e92ca2f95e5823c11432619bd2e9aa
-DIST mongo-python-driver-4.15.3.gh.tar.gz 2536990 BLAKE2B 
4df18671a3e366fad3fc8ee2dcdbb23c8496fbf4e8bee8d1f81cffb05884f4bb0a38491cc2dc141a4bd4e7a51e182c3fb215cafbf57a3543e59a7c3b1f33a572
 SHA512 
5d0c58797268535e097eee30e89dabfbdf0c5dc82ef9ab527d62eeea66c64fed514c19c81607147fb773d498516d4198c64f5ba403b083aef6d94af5bc800b3a
 DIST mongo-python-driver-4.15.4.gh.tar.gz 2537291 BLAKE2B 
3c269b75156714f8f36cc46ad1c58b11b027ac7fa9ac352240362224e8eeec54cddeeead4446e1e869b4de55a8c5f250b3000f8a64328020f9c4109aaff5f333
 SHA512 
ee91f55b8d8203aac5be6cf573143778a0250384fb2dd751ccceb8fdaf32923ce55165ee4ab5b9d0aecefd4230a59dbbc0c7c4a890672445115aaf15a5a2c926

diff --git a/dev-python/pymongo/files/pymongo-4.15.2-backports.patch 
b/dev-python/pymongo/files/pymongo-4.15.2-backports.patch
deleted file mode 100644
index 0bc1a4c49256..000000000000
--- a/dev-python/pymongo/files/pymongo-4.15.2-backports.patch
+++ /dev/null
@@ -1,212 +0,0 @@
-diff --git a/bson/__init__.py b/bson/__init__.py
-index b655e30c2c..6b2ba293a6 100644
---- a/bson/__init__.py
-+++ b/bson/__init__.py
-@@ -1009,7 +1009,7 @@ def _dict_to_bson(
-                 try:
-                     elements.append(_element_to_bson(key, value, check_keys, 
opts))
-                 except InvalidDocument as err:
--                    raise InvalidDocument(f"Invalid document {doc} | {err}") 
from err
-+                    raise InvalidDocument(f"Invalid document: {err}", doc) 
from err
-     except AttributeError:
-         raise TypeError(f"encoder expected a mapping type but got: {doc!r}") 
from None
- 
-diff --git a/bson/_cbsonmodule.c b/bson/_cbsonmodule.c
-index be91e41734..bee7198567 100644
---- a/bson/_cbsonmodule.c
-+++ b/bson/_cbsonmodule.c
-@@ -1645,11 +1645,11 @@ static int write_raw_doc(buffer_t buffer, PyObject* 
raw, PyObject* _raw_str) {
- }
- 
- 
--/* Update Invalid Document error message to include doc.
-+/* Update Invalid Document error to include doc as a property.
-  */
- void handle_invalid_doc_error(PyObject* dict) {
-     PyObject *etype = NULL, *evalue = NULL, *etrace = NULL;
--    PyObject *msg = NULL, *dict_str = NULL, *new_msg = NULL;
-+    PyObject *msg = NULL, *new_msg = NULL, *new_evalue = NULL;
-     PyErr_Fetch(&etype, &evalue, &etrace);
-     PyObject *InvalidDocument = _error("InvalidDocument");
-     if (InvalidDocument == NULL) {
-@@ -1659,26 +1659,22 @@ void handle_invalid_doc_error(PyObject* dict) {
-     if (evalue && PyErr_GivenExceptionMatches(etype, InvalidDocument)) {
-         PyObject *msg = PyObject_Str(evalue);
-         if (msg) {
--            // Prepend doc to the existing message
--            PyObject *dict_str = PyObject_Str(dict);
--            if (dict_str == NULL) {
--                goto cleanup;
--            }
--            const char * dict_str_utf8 = PyUnicode_AsUTF8(dict_str);
--            if (dict_str_utf8 == NULL) {
--                goto cleanup;
--            }
-             const char * msg_utf8 = PyUnicode_AsUTF8(msg);
-             if (msg_utf8 == NULL) {
-                 goto cleanup;
-             }
--            PyObject *new_msg = PyUnicode_FromFormat("Invalid document %s | 
%s", dict_str_utf8, msg_utf8);
-+            PyObject *new_msg = PyUnicode_FromFormat("Invalid document: %s", 
msg_utf8);
-+            if (new_msg == NULL) {
-+                goto cleanup;
-+            }
-+            // Add doc to the error instance as a property.
-+            PyObject *new_evalue = 
PyObject_CallFunctionObjArgs(InvalidDocument, new_msg, dict, NULL);
-             Py_DECREF(evalue);
-             Py_DECREF(etype);
-             etype = InvalidDocument;
-             InvalidDocument = NULL;
--            if (new_msg) {
--                evalue = new_msg;
-+            if (new_evalue) {
-+                evalue = new_evalue;
-             } else {
-                 evalue = msg;
-             }
-@@ -1689,7 +1685,7 @@ void handle_invalid_doc_error(PyObject* dict) {
-     PyErr_Restore(etype, evalue, etrace);
-     Py_XDECREF(msg);
-     Py_XDECREF(InvalidDocument);
--    Py_XDECREF(dict_str);
-+    Py_XDECREF(new_evalue);
-     Py_XDECREF(new_msg);
- }
- 
-diff --git a/bson/errors.py b/bson/errors.py
-index a3699e704c..ffc117f7ac 100644
---- a/bson/errors.py
-+++ b/bson/errors.py
-@@ -15,6 +15,8 @@
- """Exceptions raised by the BSON package."""
- from __future__ import annotations
- 
-+from typing import Any, Optional
-+
- 
- class BSONError(Exception):
-     """Base class for all BSON exceptions."""
-@@ -31,6 +33,17 @@ class InvalidStringData(BSONError):
- class InvalidDocument(BSONError):
-     """Raised when trying to create a BSON object from an invalid document."""
- 
-+    def __init__(self, message: str, document: Optional[Any] = None) -> None:
-+        super().__init__(message)
-+        self._document = document
-+
-+    @property
-+    def document(self) -> Any:
-+        """The invalid document that caused the error.
-+
-+        ..versionadded:: 4.16"""
-+        return self._document
-+
- 
- class InvalidId(BSONError):
-     """Raised when trying to create an ObjectId from invalid data."""
-diff --git a/doc/changelog.rst b/doc/changelog.rst
-index 082c22fafc..7270043d41 100644
---- a/doc/changelog.rst
-+++ b/doc/changelog.rst
-@@ -1,6 +1,15 @@
- Changelog
- =========
- 
-+Changes in Version 4.16.0 (XXXX/XX/XX)
-+--------------------------------------
-+
-+PyMongo 4.16 brings a number of changes including:
-+
-+- Removed invalid documents from :class:`bson.errors.InvalidDocument` error 
messages as
-+  doing so may leak sensitive user data.
-+  Instead, invalid documents are stored in 
:attr:`bson.errors.InvalidDocument.document`.
-+
- Changes in Version 4.15.1 (2025/09/16)
- --------------------------------------
- 
-diff --git a/test/test_bson.py b/test/test_bson.py
-index e4cf85c46c..f792db1e89 100644
---- a/test/test_bson.py
-+++ b/test/test_bson.py
-@@ -1163,7 +1163,7 @@ def __repr__(self):
-         ):
-             encode({"t": Wrapper(1)})
- 
--    def test_doc_in_invalid_document_error_message(self):
-+    def test_doc_in_invalid_document_error_as_property(self):
-         class Wrapper:
-             def __init__(self, val):
-                 self.val = val
-@@ -1173,10 +1173,11 @@ def __repr__(self):
- 
-         self.assertEqual("1", repr(Wrapper(1)))
-         doc = {"t": Wrapper(1)}
--        with self.assertRaisesRegex(InvalidDocument, f"Invalid document 
{doc}"):
-+        with self.assertRaisesRegex(InvalidDocument, "Invalid document:") as 
cm:
-             encode(doc)
-+        self.assertEqual(cm.exception.document, doc)
- 
--    def test_doc_in_invalid_document_error_message_mapping(self):
-+    def test_doc_in_invalid_document_error_as_property_mapping(self):
-         class MyMapping(abc.Mapping):
-             def keys(self):
-                 return ["t"]
-@@ -1192,6 +1193,11 @@ def __len__(self):
-             def __iter__(self):
-                 return iter(["t"])
- 
-+            def __eq__(self, other):
-+                if isinstance(other, MyMapping):
-+                    return True
-+                return False
-+
-         class Wrapper:
-             def __init__(self, val):
-                 self.val = val
-@@ -1201,8 +1207,9 @@ def __repr__(self):
- 
-         self.assertEqual("1", repr(Wrapper(1)))
-         doc = MyMapping()
--        with self.assertRaisesRegex(InvalidDocument, f"Invalid document 
{doc}"):
-+        with self.assertRaisesRegex(InvalidDocument, "Invalid document:") as 
cm:
-             encode(doc)
-+        self.assertEqual(cm.exception.document, doc)
- 
- 
- class TestCodecOptions(unittest.TestCase):
-diff --git a/bson/_cbsonmodule.c b/bson/_cbsonmodule.c
-index bee7198567..7d184641c5 100644
---- a/bson/_cbsonmodule.c
-+++ b/bson/_cbsonmodule.c
-@@ -1657,26 +1657,28 @@ void handle_invalid_doc_error(PyObject* dict) {
-     }
- 
-     if (evalue && PyErr_GivenExceptionMatches(etype, InvalidDocument)) {
--        PyObject *msg = PyObject_Str(evalue);
-+        msg = PyObject_Str(evalue);
-         if (msg) {
-             const char * msg_utf8 = PyUnicode_AsUTF8(msg);
-             if (msg_utf8 == NULL) {
-                 goto cleanup;
-             }
--            PyObject *new_msg = PyUnicode_FromFormat("Invalid document: %s", 
msg_utf8);
-+            new_msg = PyUnicode_FromFormat("Invalid document: %s", msg_utf8);
-             if (new_msg == NULL) {
-                 goto cleanup;
-             }
-             // Add doc to the error instance as a property.
--            PyObject *new_evalue = 
PyObject_CallFunctionObjArgs(InvalidDocument, new_msg, dict, NULL);
-+            new_evalue = PyObject_CallFunctionObjArgs(InvalidDocument, 
new_msg, dict, NULL);
-             Py_DECREF(evalue);
-             Py_DECREF(etype);
-             etype = InvalidDocument;
-             InvalidDocument = NULL;
-             if (new_evalue) {
-                 evalue = new_evalue;
-+                new_evalue = NULL;
-             } else {
-                 evalue = msg;
-+                msg = NULL;
-             }
-         }
-         PyErr_NormalizeException(&etype, &evalue, &etrace);

diff --git a/dev-python/pymongo/pymongo-4.15.0.ebuild 
b/dev-python/pymongo/pymongo-4.15.0.ebuild
deleted file mode 100644
index caa8e7357eea..000000000000
--- a/dev-python/pymongo/pymongo-4.15.0.ebuild
+++ /dev/null
@@ -1,201 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( pypy3_11 python3_{11..14} )
-
-inherit check-reqs distutils-r1
-
-MY_P=mongo-python-driver-${PV}
-DESCRIPTION="Python driver for MongoDB"
-HOMEPAGE="
-       https://github.com/mongodb/mongo-python-driver/
-       https://pypi.org/project/pymongo/
-"
-SRC_URI="
-       https://github.com/mongodb/mongo-python-driver/archive/${PV}.tar.gz
-               -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv 
~s390 ~sparc ~x86"
-IUSE="doc kerberos +native-extensions +test-full"
-
-RDEPEND="
-       <dev-python/dnspython-3.0.0[${PYTHON_USEDEP}]
-       kerberos? ( dev-python/kerberos[${PYTHON_USEDEP}] )
-"
-BDEPEND="
-       dev-python/setuptools[${PYTHON_USEDEP}]
-       test? (
-               test-full? (
-                       >=dev-db/mongodb-2.6.0
-               )
-       )
-"
-
-distutils_enable_sphinx doc
-
-EPYTEST_PLUGINS=( pytest-asyncio )
-EPYTEST_RERUNS=5
-distutils_enable_tests pytest
-
-reqcheck() {
-       if use test && use test-full; then
-               # During the tests, database size reaches 1.5G.
-               local CHECKREQS_DISK_BUILD=1536M
-
-               check-reqs_${1}
-       fi
-}
-
-pkg_pretend() {
-       reqcheck pkg_pretend
-}
-
-pkg_setup() {
-       reqcheck pkg_setup
-}
-
-src_prepare() {
-       distutils-r1_src_prepare
-       # we do not want hatch-requirements-txt and its ton of NIH deps
-       sed -i -e '/requirements/d' pyproject.toml || die
-}
-
-python_compile() {
-       # causes build errors to be fatal
-       local -x TOX_ENV_NAME=whatever
-       local DISTUTILS_ARGS=()
-       # unconditionally implicitly disabled on pypy3
-       if ! use native-extensions; then
-               export NO_EXT=1
-       else
-               export PYMONGO_C_EXT_MUST_BUILD=1
-               unset NO_EXT
-       fi
-
-       distutils-r1_python_compile
-
-       # upstream forces setup.py build_ext -i in their setuptools hack
-       find -name '*.so' -delete || die
-}
-
-python_test() {
-       rm -rf bson pymongo || die
-
-       local EPYTEST_DESELECT=(
-               # network-sandbox
-               
test/asynchronous/test_async_loop_unblocked.py::TestClientLoopUnblocked::test_client_does_not_block_loop
-               
test/asynchronous/test_client.py::AsyncClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
-               
test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_logging
-               
test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_warning
-               
test/asynchronous/test_client.py::TestClient::test_service_name_from_kwargs
-               
test/asynchronous/test_client.py::TestClient::test_srv_max_hosts_kwarg
-               
test/test_client.py::ClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
-               
test/test_client.py::ClientUnitTest::test_detected_environment_logging
-               
test/test_client.py::ClientUnitTest::test_detected_environment_warning
-               test/test_client.py::TestClient::test_service_name_from_kwargs
-               test/test_client.py::TestClient::test_srv_max_hosts_kwarg
-               
test/test_dns.py::TestCaseInsensitive::test_connect_case_insensitive
-               
test/asynchronous/test_dns.py::IsolatedAsyncioTestCaseInsensitive::test_connect_case_insensitive
-               test/test_srv_polling.py
-               test/asynchronous/test_srv_polling.py
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_custom_srvServiceName
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_invalid_type_for_srvMaxHosts
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_negative_integer_for_srvMaxHosts
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_positive_srvMaxHosts_and_loadBalanced=fa
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_loadBalanced=true
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_replicaSet
-
-               # broken regularly by changes in mypy
-               test/test_typing.py::TestMypyFails::test_mypy_failures
-
-               # fragile to timing? fails because we're getting too many logs
-               
test/test_connection_logging.py::TestConnectionLoggingConnectionPoolOptions::test_maxConnecting_should_be_included_in_connection_pool_created_message_when_specified
-
-               # hangs?
-               
test/asynchronous/test_grid_file.py::AsyncTestGridFile::test_small_chunks
-
-               # broken async tests?
-               test/asynchronous/test_encryption.py
-
-               # -Werror
-               
test/test_read_preferences.py::TestMongosAndReadPreference::test_read_preference_hedge_deprecated
-               
test/asynchronous/test_read_preferences.py::TestMongosAndReadPreference::test_read_preference_hedge_deprecated
-
-               # fragile to timing? Internet?
-               test/test_client.py::TestClient::test_repr_srv_host
-               test/asynchronous/test_client.py::TestClient::test_repr_srv_host
-               
test/asynchronous/test_ssl.py::TestSSL::test_pyopenssl_ignored_in_async
-       )
-
-       if ! use test-full; then
-               # .invalid is guaranteed to return NXDOMAIN per RFC 6761
-               local -x DB_IP=mongodb.invalid
-               epytest -p asyncio
-               return
-       fi
-
-       # Yes, we need TCP/IP for that...
-       local -x DB_IP=127.0.0.1
-       local -x DB_PORT=27000
-
-       local dbpath=${TMPDIR}/mongo.db
-       local logpath=${TMPDIR}/mongod.log
-
-       local failed=
-       mkdir -p "${dbpath}" || die
-       while true; do
-               ebegin "Trying to start mongod on port ${DB_PORT}"
-
-               # mongodb is extremely inefficient
-               # 
https://www.mongodb.com/docs/manual/reference/ulimit/#review-and-set-resource-limits
-               ulimit -n 64000 || die
-
-               local mongod_options=(
-                       --dbpath "${dbpath}"
-                       --bind_ip "${DB_IP}"
-                       --port "${DB_PORT}"
-                       --unixSocketPrefix "${TMPDIR}"
-                       --logpath "${logpath}"
-                       --fork
-
-                       # try to reduce resource use
-                       --wiredTigerCacheSizeGB 0.25
-               )
-
-               LC_ALL=C mongod "${mongod_options[@]}" && sleep 2
-
-               # Now we need to check if the server actually started...
-               if [[ ${?} -eq 0 && -S "${TMPDIR}"/mongodb-${DB_PORT}.sock ]]; 
then
-                       # yay!
-                       eend 0
-                       break
-               elif grep -q 'Address already in use' "${logpath}"; then
-                       # ay, someone took our port!
-                       eend 1
-                       : $(( DB_PORT += 1 ))
-                       continue
-               else
-                       eend 1
-                       eerror "Unable to start mongod for tests. See the 
server log:"
-                       eerror "        ${logpath}"
-                       die "Unable to start mongod for tests."
-               fi
-       done
-
-       nonfatal epytest -m "default or default_async or encryption" || failed=1
-
-       mongod --dbpath "${dbpath}" --shutdown || die
-
-       [[ ${failed} ]] && die "Tests fail with ${EPYTHON}"
-
-       rm -rf "${dbpath}" || die
-}

diff --git a/dev-python/pymongo/pymongo-4.15.1.ebuild 
b/dev-python/pymongo/pymongo-4.15.1.ebuild
deleted file mode 100644
index caa8e7357eea..000000000000
--- a/dev-python/pymongo/pymongo-4.15.1.ebuild
+++ /dev/null
@@ -1,201 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( pypy3_11 python3_{11..14} )
-
-inherit check-reqs distutils-r1
-
-MY_P=mongo-python-driver-${PV}
-DESCRIPTION="Python driver for MongoDB"
-HOMEPAGE="
-       https://github.com/mongodb/mongo-python-driver/
-       https://pypi.org/project/pymongo/
-"
-SRC_URI="
-       https://github.com/mongodb/mongo-python-driver/archive/${PV}.tar.gz
-               -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv 
~s390 ~sparc ~x86"
-IUSE="doc kerberos +native-extensions +test-full"
-
-RDEPEND="
-       <dev-python/dnspython-3.0.0[${PYTHON_USEDEP}]
-       kerberos? ( dev-python/kerberos[${PYTHON_USEDEP}] )
-"
-BDEPEND="
-       dev-python/setuptools[${PYTHON_USEDEP}]
-       test? (
-               test-full? (
-                       >=dev-db/mongodb-2.6.0
-               )
-       )
-"
-
-distutils_enable_sphinx doc
-
-EPYTEST_PLUGINS=( pytest-asyncio )
-EPYTEST_RERUNS=5
-distutils_enable_tests pytest
-
-reqcheck() {
-       if use test && use test-full; then
-               # During the tests, database size reaches 1.5G.
-               local CHECKREQS_DISK_BUILD=1536M
-
-               check-reqs_${1}
-       fi
-}
-
-pkg_pretend() {
-       reqcheck pkg_pretend
-}
-
-pkg_setup() {
-       reqcheck pkg_setup
-}
-
-src_prepare() {
-       distutils-r1_src_prepare
-       # we do not want hatch-requirements-txt and its ton of NIH deps
-       sed -i -e '/requirements/d' pyproject.toml || die
-}
-
-python_compile() {
-       # causes build errors to be fatal
-       local -x TOX_ENV_NAME=whatever
-       local DISTUTILS_ARGS=()
-       # unconditionally implicitly disabled on pypy3
-       if ! use native-extensions; then
-               export NO_EXT=1
-       else
-               export PYMONGO_C_EXT_MUST_BUILD=1
-               unset NO_EXT
-       fi
-
-       distutils-r1_python_compile
-
-       # upstream forces setup.py build_ext -i in their setuptools hack
-       find -name '*.so' -delete || die
-}
-
-python_test() {
-       rm -rf bson pymongo || die
-
-       local EPYTEST_DESELECT=(
-               # network-sandbox
-               
test/asynchronous/test_async_loop_unblocked.py::TestClientLoopUnblocked::test_client_does_not_block_loop
-               
test/asynchronous/test_client.py::AsyncClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
-               
test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_logging
-               
test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_warning
-               
test/asynchronous/test_client.py::TestClient::test_service_name_from_kwargs
-               
test/asynchronous/test_client.py::TestClient::test_srv_max_hosts_kwarg
-               
test/test_client.py::ClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
-               
test/test_client.py::ClientUnitTest::test_detected_environment_logging
-               
test/test_client.py::ClientUnitTest::test_detected_environment_warning
-               test/test_client.py::TestClient::test_service_name_from_kwargs
-               test/test_client.py::TestClient::test_srv_max_hosts_kwarg
-               
test/test_dns.py::TestCaseInsensitive::test_connect_case_insensitive
-               
test/asynchronous/test_dns.py::IsolatedAsyncioTestCaseInsensitive::test_connect_case_insensitive
-               test/test_srv_polling.py
-               test/asynchronous/test_srv_polling.py
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_custom_srvServiceName
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_invalid_type_for_srvMaxHosts
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_negative_integer_for_srvMaxHosts
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_positive_srvMaxHosts_and_loadBalanced=fa
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_loadBalanced=true
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_replicaSet
-
-               # broken regularly by changes in mypy
-               test/test_typing.py::TestMypyFails::test_mypy_failures
-
-               # fragile to timing? fails because we're getting too many logs
-               
test/test_connection_logging.py::TestConnectionLoggingConnectionPoolOptions::test_maxConnecting_should_be_included_in_connection_pool_created_message_when_specified
-
-               # hangs?
-               
test/asynchronous/test_grid_file.py::AsyncTestGridFile::test_small_chunks
-
-               # broken async tests?
-               test/asynchronous/test_encryption.py
-
-               # -Werror
-               
test/test_read_preferences.py::TestMongosAndReadPreference::test_read_preference_hedge_deprecated
-               
test/asynchronous/test_read_preferences.py::TestMongosAndReadPreference::test_read_preference_hedge_deprecated
-
-               # fragile to timing? Internet?
-               test/test_client.py::TestClient::test_repr_srv_host
-               test/asynchronous/test_client.py::TestClient::test_repr_srv_host
-               
test/asynchronous/test_ssl.py::TestSSL::test_pyopenssl_ignored_in_async
-       )
-
-       if ! use test-full; then
-               # .invalid is guaranteed to return NXDOMAIN per RFC 6761
-               local -x DB_IP=mongodb.invalid
-               epytest -p asyncio
-               return
-       fi
-
-       # Yes, we need TCP/IP for that...
-       local -x DB_IP=127.0.0.1
-       local -x DB_PORT=27000
-
-       local dbpath=${TMPDIR}/mongo.db
-       local logpath=${TMPDIR}/mongod.log
-
-       local failed=
-       mkdir -p "${dbpath}" || die
-       while true; do
-               ebegin "Trying to start mongod on port ${DB_PORT}"
-
-               # mongodb is extremely inefficient
-               # 
https://www.mongodb.com/docs/manual/reference/ulimit/#review-and-set-resource-limits
-               ulimit -n 64000 || die
-
-               local mongod_options=(
-                       --dbpath "${dbpath}"
-                       --bind_ip "${DB_IP}"
-                       --port "${DB_PORT}"
-                       --unixSocketPrefix "${TMPDIR}"
-                       --logpath "${logpath}"
-                       --fork
-
-                       # try to reduce resource use
-                       --wiredTigerCacheSizeGB 0.25
-               )
-
-               LC_ALL=C mongod "${mongod_options[@]}" && sleep 2
-
-               # Now we need to check if the server actually started...
-               if [[ ${?} -eq 0 && -S "${TMPDIR}"/mongodb-${DB_PORT}.sock ]]; 
then
-                       # yay!
-                       eend 0
-                       break
-               elif grep -q 'Address already in use' "${logpath}"; then
-                       # ay, someone took our port!
-                       eend 1
-                       : $(( DB_PORT += 1 ))
-                       continue
-               else
-                       eend 1
-                       eerror "Unable to start mongod for tests. See the 
server log:"
-                       eerror "        ${logpath}"
-                       die "Unable to start mongod for tests."
-               fi
-       done
-
-       nonfatal epytest -m "default or default_async or encryption" || failed=1
-
-       mongod --dbpath "${dbpath}" --shutdown || die
-
-       [[ ${failed} ]] && die "Tests fail with ${EPYTHON}"
-
-       rm -rf "${dbpath}" || die
-}

diff --git a/dev-python/pymongo/pymongo-4.15.2-r1.ebuild 
b/dev-python/pymongo/pymongo-4.15.2-r1.ebuild
deleted file mode 100644
index d80547c6d4e3..000000000000
--- a/dev-python/pymongo/pymongo-4.15.2-r1.ebuild
+++ /dev/null
@@ -1,207 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( pypy3_11 python3_{11..14} )
-
-inherit check-reqs distutils-r1
-
-MY_P=mongo-python-driver-${PV}
-DESCRIPTION="Python driver for MongoDB"
-HOMEPAGE="
-       https://github.com/mongodb/mongo-python-driver/
-       https://pypi.org/project/pymongo/
-"
-SRC_URI="
-       https://github.com/mongodb/mongo-python-driver/archive/${PV}.tar.gz
-               -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv 
~s390 ~sparc ~x86"
-IUSE="doc kerberos +native-extensions +test-full"
-
-RDEPEND="
-       <dev-python/dnspython-3.0.0[${PYTHON_USEDEP}]
-       kerberos? ( dev-python/kerberos[${PYTHON_USEDEP}] )
-"
-BDEPEND="
-       dev-python/setuptools[${PYTHON_USEDEP}]
-       test? (
-               test-full? (
-                       >=dev-db/mongodb-2.6.0
-               )
-       )
-"
-
-distutils_enable_sphinx doc
-
-EPYTEST_PLUGINS=( pytest-asyncio )
-EPYTEST_RERUNS=5
-distutils_enable_tests pytest
-
-reqcheck() {
-       if use test && use test-full; then
-               # During the tests, database size reaches 1.5G.
-               local CHECKREQS_DISK_BUILD=1536M
-
-               check-reqs_${1}
-       fi
-}
-
-pkg_pretend() {
-       reqcheck pkg_pretend
-}
-
-pkg_setup() {
-       reqcheck pkg_setup
-}
-
-src_prepare() {
-       local PATCHES=(
-               # https://github.com/mongodb/mongo-python-driver/pull/2539
-               # https://github.com/mongodb/mongo-python-driver/pull/2573
-               "${FILESDIR}/${P}-backports.patch"
-       )
-
-       distutils-r1_src_prepare
-       # we do not want hatch-requirements-txt and its ton of NIH deps
-       sed -i -e '/requirements/d' pyproject.toml || die
-}
-
-python_compile() {
-       # causes build errors to be fatal
-       local -x TOX_ENV_NAME=whatever
-       local DISTUTILS_ARGS=()
-       # unconditionally implicitly disabled on pypy3
-       if ! use native-extensions; then
-               export NO_EXT=1
-       else
-               export PYMONGO_C_EXT_MUST_BUILD=1
-               unset NO_EXT
-       fi
-
-       distutils-r1_python_compile
-
-       # upstream forces setup.py build_ext -i in their setuptools hack
-       find -name '*.so' -delete || die
-}
-
-python_test() {
-       rm -rf bson pymongo || die
-
-       local EPYTEST_DESELECT=(
-               # network-sandbox
-               
test/asynchronous/test_async_loop_unblocked.py::TestClientLoopUnblocked::test_client_does_not_block_loop
-               
test/asynchronous/test_client.py::AsyncClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
-               
test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_logging
-               
test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_warning
-               
test/asynchronous/test_client.py::TestClient::test_service_name_from_kwargs
-               
test/asynchronous/test_client.py::TestClient::test_srv_max_hosts_kwarg
-               
test/test_client.py::ClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
-               
test/test_client.py::ClientUnitTest::test_detected_environment_logging
-               
test/test_client.py::ClientUnitTest::test_detected_environment_warning
-               test/test_client.py::TestClient::test_service_name_from_kwargs
-               test/test_client.py::TestClient::test_srv_max_hosts_kwarg
-               
test/test_dns.py::TestCaseInsensitive::test_connect_case_insensitive
-               
test/asynchronous/test_dns.py::IsolatedAsyncioTestCaseInsensitive::test_connect_case_insensitive
-               test/test_srv_polling.py
-               test/asynchronous/test_srv_polling.py
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_custom_srvServiceName
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_invalid_type_for_srvMaxHosts
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_negative_integer_for_srvMaxHosts
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_positive_srvMaxHosts_and_loadBalanced=fa
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_loadBalanced=true
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_replicaSet
-
-               # broken regularly by changes in mypy
-               test/test_typing.py::TestMypyFails::test_mypy_failures
-
-               # fragile to timing? fails because we're getting too many logs
-               
test/test_connection_logging.py::TestConnectionLoggingConnectionPoolOptions::test_maxConnecting_should_be_included_in_connection_pool_created_message_when_specified
-
-               # hangs?
-               
test/asynchronous/test_grid_file.py::AsyncTestGridFile::test_small_chunks
-
-               # broken async tests?
-               test/asynchronous/test_encryption.py
-
-               # -Werror
-               
test/test_read_preferences.py::TestMongosAndReadPreference::test_read_preference_hedge_deprecated
-               
test/asynchronous/test_read_preferences.py::TestMongosAndReadPreference::test_read_preference_hedge_deprecated
-
-               # fragile to timing? Internet?
-               test/test_client.py::TestClient::test_repr_srv_host
-               test/asynchronous/test_client.py::TestClient::test_repr_srv_host
-               
test/asynchronous/test_ssl.py::TestSSL::test_pyopenssl_ignored_in_async
-       )
-
-       if ! use test-full; then
-               # .invalid is guaranteed to return NXDOMAIN per RFC 6761
-               local -x DB_IP=mongodb.invalid
-               epytest -p asyncio
-               return
-       fi
-
-       # Yes, we need TCP/IP for that...
-       local -x DB_IP=127.0.0.1
-       local -x DB_PORT=27000
-
-       local dbpath=${TMPDIR}/mongo.db
-       local logpath=${TMPDIR}/mongod.log
-
-       local failed=
-       mkdir -p "${dbpath}" || die
-       while true; do
-               ebegin "Trying to start mongod on port ${DB_PORT}"
-
-               # mongodb is extremely inefficient
-               # 
https://www.mongodb.com/docs/manual/reference/ulimit/#review-and-set-resource-limits
-               ulimit -n 64000 || die
-
-               local mongod_options=(
-                       --dbpath "${dbpath}"
-                       --bind_ip "${DB_IP}"
-                       --port "${DB_PORT}"
-                       --unixSocketPrefix "${TMPDIR}"
-                       --logpath "${logpath}"
-                       --fork
-
-                       # try to reduce resource use
-                       --wiredTigerCacheSizeGB 0.25
-               )
-
-               LC_ALL=C mongod "${mongod_options[@]}" && sleep 2
-
-               # Now we need to check if the server actually started...
-               if [[ ${?} -eq 0 && -S "${TMPDIR}"/mongodb-${DB_PORT}.sock ]]; 
then
-                       # yay!
-                       eend 0
-                       break
-               elif grep -q 'Address already in use' "${logpath}"; then
-                       # ay, someone took our port!
-                       eend 1
-                       : $(( DB_PORT += 1 ))
-                       continue
-               else
-                       eend 1
-                       eerror "Unable to start mongod for tests. See the 
server log:"
-                       eerror "        ${logpath}"
-                       die "Unable to start mongod for tests."
-               fi
-       done
-
-       nonfatal epytest -m "default or default_async or encryption" || failed=1
-
-       mongod --dbpath "${dbpath}" --shutdown || die
-
-       [[ ${failed} ]] && die "Tests fail with ${EPYTHON}"
-
-       rm -rf "${dbpath}" || die
-}

diff --git a/dev-python/pymongo/pymongo-4.15.2.ebuild 
b/dev-python/pymongo/pymongo-4.15.2.ebuild
deleted file mode 100644
index caa8e7357eea..000000000000
--- a/dev-python/pymongo/pymongo-4.15.2.ebuild
+++ /dev/null
@@ -1,201 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( pypy3_11 python3_{11..14} )
-
-inherit check-reqs distutils-r1
-
-MY_P=mongo-python-driver-${PV}
-DESCRIPTION="Python driver for MongoDB"
-HOMEPAGE="
-       https://github.com/mongodb/mongo-python-driver/
-       https://pypi.org/project/pymongo/
-"
-SRC_URI="
-       https://github.com/mongodb/mongo-python-driver/archive/${PV}.tar.gz
-               -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv 
~s390 ~sparc ~x86"
-IUSE="doc kerberos +native-extensions +test-full"
-
-RDEPEND="
-       <dev-python/dnspython-3.0.0[${PYTHON_USEDEP}]
-       kerberos? ( dev-python/kerberos[${PYTHON_USEDEP}] )
-"
-BDEPEND="
-       dev-python/setuptools[${PYTHON_USEDEP}]
-       test? (
-               test-full? (
-                       >=dev-db/mongodb-2.6.0
-               )
-       )
-"
-
-distutils_enable_sphinx doc
-
-EPYTEST_PLUGINS=( pytest-asyncio )
-EPYTEST_RERUNS=5
-distutils_enable_tests pytest
-
-reqcheck() {
-       if use test && use test-full; then
-               # During the tests, database size reaches 1.5G.
-               local CHECKREQS_DISK_BUILD=1536M
-
-               check-reqs_${1}
-       fi
-}
-
-pkg_pretend() {
-       reqcheck pkg_pretend
-}
-
-pkg_setup() {
-       reqcheck pkg_setup
-}
-
-src_prepare() {
-       distutils-r1_src_prepare
-       # we do not want hatch-requirements-txt and its ton of NIH deps
-       sed -i -e '/requirements/d' pyproject.toml || die
-}
-
-python_compile() {
-       # causes build errors to be fatal
-       local -x TOX_ENV_NAME=whatever
-       local DISTUTILS_ARGS=()
-       # unconditionally implicitly disabled on pypy3
-       if ! use native-extensions; then
-               export NO_EXT=1
-       else
-               export PYMONGO_C_EXT_MUST_BUILD=1
-               unset NO_EXT
-       fi
-
-       distutils-r1_python_compile
-
-       # upstream forces setup.py build_ext -i in their setuptools hack
-       find -name '*.so' -delete || die
-}
-
-python_test() {
-       rm -rf bson pymongo || die
-
-       local EPYTEST_DESELECT=(
-               # network-sandbox
-               
test/asynchronous/test_async_loop_unblocked.py::TestClientLoopUnblocked::test_client_does_not_block_loop
-               
test/asynchronous/test_client.py::AsyncClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
-               
test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_logging
-               
test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_warning
-               
test/asynchronous/test_client.py::TestClient::test_service_name_from_kwargs
-               
test/asynchronous/test_client.py::TestClient::test_srv_max_hosts_kwarg
-               
test/test_client.py::ClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
-               
test/test_client.py::ClientUnitTest::test_detected_environment_logging
-               
test/test_client.py::ClientUnitTest::test_detected_environment_warning
-               test/test_client.py::TestClient::test_service_name_from_kwargs
-               test/test_client.py::TestClient::test_srv_max_hosts_kwarg
-               
test/test_dns.py::TestCaseInsensitive::test_connect_case_insensitive
-               
test/asynchronous/test_dns.py::IsolatedAsyncioTestCaseInsensitive::test_connect_case_insensitive
-               test/test_srv_polling.py
-               test/asynchronous/test_srv_polling.py
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_custom_srvServiceName
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_invalid_type_for_srvMaxHosts
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_negative_integer_for_srvMaxHosts
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_positive_srvMaxHosts_and_loadBalanced=fa
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_loadBalanced=true
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_replicaSet
-
-               # broken regularly by changes in mypy
-               test/test_typing.py::TestMypyFails::test_mypy_failures
-
-               # fragile to timing? fails because we're getting too many logs
-               
test/test_connection_logging.py::TestConnectionLoggingConnectionPoolOptions::test_maxConnecting_should_be_included_in_connection_pool_created_message_when_specified
-
-               # hangs?
-               
test/asynchronous/test_grid_file.py::AsyncTestGridFile::test_small_chunks
-
-               # broken async tests?
-               test/asynchronous/test_encryption.py
-
-               # -Werror
-               
test/test_read_preferences.py::TestMongosAndReadPreference::test_read_preference_hedge_deprecated
-               
test/asynchronous/test_read_preferences.py::TestMongosAndReadPreference::test_read_preference_hedge_deprecated
-
-               # fragile to timing? Internet?
-               test/test_client.py::TestClient::test_repr_srv_host
-               test/asynchronous/test_client.py::TestClient::test_repr_srv_host
-               
test/asynchronous/test_ssl.py::TestSSL::test_pyopenssl_ignored_in_async
-       )
-
-       if ! use test-full; then
-               # .invalid is guaranteed to return NXDOMAIN per RFC 6761
-               local -x DB_IP=mongodb.invalid
-               epytest -p asyncio
-               return
-       fi
-
-       # Yes, we need TCP/IP for that...
-       local -x DB_IP=127.0.0.1
-       local -x DB_PORT=27000
-
-       local dbpath=${TMPDIR}/mongo.db
-       local logpath=${TMPDIR}/mongod.log
-
-       local failed=
-       mkdir -p "${dbpath}" || die
-       while true; do
-               ebegin "Trying to start mongod on port ${DB_PORT}"
-
-               # mongodb is extremely inefficient
-               # 
https://www.mongodb.com/docs/manual/reference/ulimit/#review-and-set-resource-limits
-               ulimit -n 64000 || die
-
-               local mongod_options=(
-                       --dbpath "${dbpath}"
-                       --bind_ip "${DB_IP}"
-                       --port "${DB_PORT}"
-                       --unixSocketPrefix "${TMPDIR}"
-                       --logpath "${logpath}"
-                       --fork
-
-                       # try to reduce resource use
-                       --wiredTigerCacheSizeGB 0.25
-               )
-
-               LC_ALL=C mongod "${mongod_options[@]}" && sleep 2
-
-               # Now we need to check if the server actually started...
-               if [[ ${?} -eq 0 && -S "${TMPDIR}"/mongodb-${DB_PORT}.sock ]]; 
then
-                       # yay!
-                       eend 0
-                       break
-               elif grep -q 'Address already in use' "${logpath}"; then
-                       # ay, someone took our port!
-                       eend 1
-                       : $(( DB_PORT += 1 ))
-                       continue
-               else
-                       eend 1
-                       eerror "Unable to start mongod for tests. See the 
server log:"
-                       eerror "        ${logpath}"
-                       die "Unable to start mongod for tests."
-               fi
-       done
-
-       nonfatal epytest -m "default or default_async or encryption" || failed=1
-
-       mongod --dbpath "${dbpath}" --shutdown || die
-
-       [[ ${failed} ]] && die "Tests fail with ${EPYTHON}"
-
-       rm -rf "${dbpath}" || die
-}

diff --git a/dev-python/pymongo/pymongo-4.15.3.ebuild 
b/dev-python/pymongo/pymongo-4.15.3.ebuild
deleted file mode 100644
index caa8e7357eea..000000000000
--- a/dev-python/pymongo/pymongo-4.15.3.ebuild
+++ /dev/null
@@ -1,201 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( pypy3_11 python3_{11..14} )
-
-inherit check-reqs distutils-r1
-
-MY_P=mongo-python-driver-${PV}
-DESCRIPTION="Python driver for MongoDB"
-HOMEPAGE="
-       https://github.com/mongodb/mongo-python-driver/
-       https://pypi.org/project/pymongo/
-"
-SRC_URI="
-       https://github.com/mongodb/mongo-python-driver/archive/${PV}.tar.gz
-               -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv 
~s390 ~sparc ~x86"
-IUSE="doc kerberos +native-extensions +test-full"
-
-RDEPEND="
-       <dev-python/dnspython-3.0.0[${PYTHON_USEDEP}]
-       kerberos? ( dev-python/kerberos[${PYTHON_USEDEP}] )
-"
-BDEPEND="
-       dev-python/setuptools[${PYTHON_USEDEP}]
-       test? (
-               test-full? (
-                       >=dev-db/mongodb-2.6.0
-               )
-       )
-"
-
-distutils_enable_sphinx doc
-
-EPYTEST_PLUGINS=( pytest-asyncio )
-EPYTEST_RERUNS=5
-distutils_enable_tests pytest
-
-reqcheck() {
-       if use test && use test-full; then
-               # During the tests, database size reaches 1.5G.
-               local CHECKREQS_DISK_BUILD=1536M
-
-               check-reqs_${1}
-       fi
-}
-
-pkg_pretend() {
-       reqcheck pkg_pretend
-}
-
-pkg_setup() {
-       reqcheck pkg_setup
-}
-
-src_prepare() {
-       distutils-r1_src_prepare
-       # we do not want hatch-requirements-txt and its ton of NIH deps
-       sed -i -e '/requirements/d' pyproject.toml || die
-}
-
-python_compile() {
-       # causes build errors to be fatal
-       local -x TOX_ENV_NAME=whatever
-       local DISTUTILS_ARGS=()
-       # unconditionally implicitly disabled on pypy3
-       if ! use native-extensions; then
-               export NO_EXT=1
-       else
-               export PYMONGO_C_EXT_MUST_BUILD=1
-               unset NO_EXT
-       fi
-
-       distutils-r1_python_compile
-
-       # upstream forces setup.py build_ext -i in their setuptools hack
-       find -name '*.so' -delete || die
-}
-
-python_test() {
-       rm -rf bson pymongo || die
-
-       local EPYTEST_DESELECT=(
-               # network-sandbox
-               
test/asynchronous/test_async_loop_unblocked.py::TestClientLoopUnblocked::test_client_does_not_block_loop
-               
test/asynchronous/test_client.py::AsyncClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
-               
test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_logging
-               
test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_warning
-               
test/asynchronous/test_client.py::TestClient::test_service_name_from_kwargs
-               
test/asynchronous/test_client.py::TestClient::test_srv_max_hosts_kwarg
-               
test/test_client.py::ClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
-               
test/test_client.py::ClientUnitTest::test_detected_environment_logging
-               
test/test_client.py::ClientUnitTest::test_detected_environment_warning
-               test/test_client.py::TestClient::test_service_name_from_kwargs
-               test/test_client.py::TestClient::test_srv_max_hosts_kwarg
-               
test/test_dns.py::TestCaseInsensitive::test_connect_case_insensitive
-               
test/asynchronous/test_dns.py::IsolatedAsyncioTestCaseInsensitive::test_connect_case_insensitive
-               test/test_srv_polling.py
-               test/asynchronous/test_srv_polling.py
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_custom_srvServiceName
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_invalid_type_for_srvMaxHosts
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_negative_integer_for_srvMaxHosts
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_positive_srvMaxHosts_and_loadBalanced=fa
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_loadBalanced=true
-               
test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_replicaSet
-
-               # broken regularly by changes in mypy
-               test/test_typing.py::TestMypyFails::test_mypy_failures
-
-               # fragile to timing? fails because we're getting too many logs
-               
test/test_connection_logging.py::TestConnectionLoggingConnectionPoolOptions::test_maxConnecting_should_be_included_in_connection_pool_created_message_when_specified
-
-               # hangs?
-               
test/asynchronous/test_grid_file.py::AsyncTestGridFile::test_small_chunks
-
-               # broken async tests?
-               test/asynchronous/test_encryption.py
-
-               # -Werror
-               
test/test_read_preferences.py::TestMongosAndReadPreference::test_read_preference_hedge_deprecated
-               
test/asynchronous/test_read_preferences.py::TestMongosAndReadPreference::test_read_preference_hedge_deprecated
-
-               # fragile to timing? Internet?
-               test/test_client.py::TestClient::test_repr_srv_host
-               test/asynchronous/test_client.py::TestClient::test_repr_srv_host
-               
test/asynchronous/test_ssl.py::TestSSL::test_pyopenssl_ignored_in_async
-       )
-
-       if ! use test-full; then
-               # .invalid is guaranteed to return NXDOMAIN per RFC 6761
-               local -x DB_IP=mongodb.invalid
-               epytest -p asyncio
-               return
-       fi
-
-       # Yes, we need TCP/IP for that...
-       local -x DB_IP=127.0.0.1
-       local -x DB_PORT=27000
-
-       local dbpath=${TMPDIR}/mongo.db
-       local logpath=${TMPDIR}/mongod.log
-
-       local failed=
-       mkdir -p "${dbpath}" || die
-       while true; do
-               ebegin "Trying to start mongod on port ${DB_PORT}"
-
-               # mongodb is extremely inefficient
-               # 
https://www.mongodb.com/docs/manual/reference/ulimit/#review-and-set-resource-limits
-               ulimit -n 64000 || die
-
-               local mongod_options=(
-                       --dbpath "${dbpath}"
-                       --bind_ip "${DB_IP}"
-                       --port "${DB_PORT}"
-                       --unixSocketPrefix "${TMPDIR}"
-                       --logpath "${logpath}"
-                       --fork
-
-                       # try to reduce resource use
-                       --wiredTigerCacheSizeGB 0.25
-               )
-
-               LC_ALL=C mongod "${mongod_options[@]}" && sleep 2
-
-               # Now we need to check if the server actually started...
-               if [[ ${?} -eq 0 && -S "${TMPDIR}"/mongodb-${DB_PORT}.sock ]]; 
then
-                       # yay!
-                       eend 0
-                       break
-               elif grep -q 'Address already in use' "${logpath}"; then
-                       # ay, someone took our port!
-                       eend 1
-                       : $(( DB_PORT += 1 ))
-                       continue
-               else
-                       eend 1
-                       eerror "Unable to start mongod for tests. See the 
server log:"
-                       eerror "        ${logpath}"
-                       die "Unable to start mongod for tests."
-               fi
-       done
-
-       nonfatal epytest -m "default or default_async or encryption" || failed=1
-
-       mongod --dbpath "${dbpath}" --shutdown || die
-
-       [[ ${failed} ]] && die "Tests fail with ${EPYTHON}"
-
-       rm -rf "${dbpath}" || die
-}

diff --git a/profiles/package.mask b/profiles/package.mask
index 5468b110b4c8..8eb5adeae5d9 100644
--- a/profiles/package.mask
+++ b/profiles/package.mask
@@ -231,12 +231,6 @@ dev-ruby/rails:7.0
 dev-ruby/railties:7.0
 dev-ruby/haml:5
 
-# Michał Górny <[email protected]> (2025-10-06)
-# Refcount errors that trigger crashes in dev-python/moto
-# and dev-python/ipyparallel tests.
-=dev-python/pymongo-4.15.3
-=dev-python/pymongo-4.15.2
-
 # Lukas Schmelting <[email protected]> (2025-10-03)
 # Breaks e.g. in combination with gnome-shell-48.4, gettext/gjs (bug #963815)
 >=dev-libs/glib-2.86.0


Reply via email to