PYTHON-5596 Fix return type for distinct methods (#2576)

(cherry picked from commit a2e39ada00)
This commit is contained in:
Steven Silvester 2025-10-07 11:04:16 -05:00 committed by mongodb-dbx-release-bot[bot]
parent 039c35ba63
commit 1d5f2af35d
5 changed files with 31 additions and 5 deletions

View File

@ -3150,7 +3150,7 @@ class AsyncCollection(common.BaseObject, Generic[_DocumentType]):
comment: Optional[Any] = None,
hint: Optional[_IndexKeyHint] = None,
**kwargs: Any,
) -> list[str]:
) -> list[Any]:
"""Get a list of distinct values for `key` among all documents
in this collection.

View File

@ -1064,7 +1064,7 @@ class AsyncCursor(Generic[_DocumentType]):
"""Explicitly close / kill this cursor."""
await self._die_lock()
async def distinct(self, key: str) -> list[str]:
async def distinct(self, key: str) -> list[Any]:
"""Get a list of distinct values for `key` among all documents
in the result set of this query.

View File

@ -3143,7 +3143,7 @@ class Collection(common.BaseObject, Generic[_DocumentType]):
comment: Optional[Any] = None,
hint: Optional[_IndexKeyHint] = None,
**kwargs: Any,
) -> list[str]:
) -> list[Any]:
"""Get a list of distinct values for `key` among all documents
in this collection.

View File

@ -1062,7 +1062,7 @@ class Cursor(Generic[_DocumentType]):
"""Explicitly close / kill this cursor."""
self._die_lock()
def distinct(self, key: str) -> list[str]:
def distinct(self, key: str) -> list[Any]:
"""Get a list of distinct values for `key` among all documents
in the result set of this query.

View File

@ -69,7 +69,7 @@ sys.path[0:0] = [""]
from test import IntegrationTest, PyMongoTestCase, client_context
from bson import CodecOptions, decode, decode_all, decode_file_iter, decode_iter, encode
from bson import CodecOptions, ObjectId, decode, decode_all, decode_file_iter, decode_iter, encode
from bson.raw_bson import RawBSONDocument
from bson.son import SON
from pymongo import ASCENDING, MongoClient
@ -141,6 +141,32 @@ class TestPymongo(IntegrationTest):
docs = to_list(cursor)
self.assertTrue(docs)
def test_distinct(self) -> None:
self.coll.delete_many({})
self.coll.insert_many(
[
{"_id": None},
{"_id": 0},
{"_id": ""},
{"_id": ObjectId()},
{"_id": True},
]
)
def collection_distinct(
collection: Collection,
) -> list[None | int | str | ObjectId | bool]:
return collection.distinct("_id")
def cursor_distinct(
collection: Collection,
) -> list[None | int | str | ObjectId | bool]:
cursor = collection.find()
return cursor.distinct("_id")
collection_distinct(self.coll)
cursor_distinct(self.coll)
@only_type_check
def test_bulk_write(self) -> None:
self.coll.insert_one({})