summaryrefslogtreecommitdiff
path: root/dev-python/pymongo
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2025-12-03 05:12:21 +0100
committerMichał Górny <mgorny@gentoo.org>2025-12-03 05:19:20 +0100
commit864eb6470c88ff90f32a3536b08ef415b2f966cc (patch)
tree840d317d96e49121e4316ce38284788eb27a0fc2 /dev-python/pymongo
parent3bb2ac4f09a9d7daf415f8d79e3c2f0acb2ed101 (diff)
downloadgentoo-864eb6470c88ff90f32a3536b08ef415b2f966cc.tar.gz
gentoo-864eb6470c88ff90f32a3536b08ef415b2f966cc.tar.bz2
gentoo-864eb6470c88ff90f32a3536b08ef415b2f966cc.zip
dev-python/pymongo: Remove old
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-python/pymongo')
-rw-r--r--dev-python/pymongo/Manifest4
-rw-r--r--dev-python/pymongo/files/pymongo-4.15.2-backports.patch212
-rw-r--r--dev-python/pymongo/pymongo-4.15.0.ebuild201
-rw-r--r--dev-python/pymongo/pymongo-4.15.1.ebuild201
-rw-r--r--dev-python/pymongo/pymongo-4.15.2-r1.ebuild207
-rw-r--r--dev-python/pymongo/pymongo-4.15.2.ebuild201
-rw-r--r--dev-python/pymongo/pymongo-4.15.3.ebuild201
7 files changed, 0 insertions, 1227 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
-