Skip to content

Commit 036ade2

Browse files
committed
PYTHON-4834 Add __repr__ to IndexModel
- Special case for `key` kwarg, all other document keys used as-is
1 parent 30d1f9d commit 036ade2

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

pymongo/operations.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -774,11 +774,16 @@ def document(self) -> dict[str, Any]:
774774
return self.__document
775775

776776
def __repr__(self) -> str:
777-
return "%s(%s%s%s)" % (
778-
self.__class__.__name__,
779-
"" if not self.document.get("name") else "name='%s'" % self.document["name"],
780-
"" if not self.document.get("key") else ", keys=%s" % self.document["key"],
781-
"" if not self.document.get("unique") else ", unique='%s'" % self.document["unique"],
777+
return "%s(%s%s)" % (
778+
self.__class__.__name__,
779+
"" if not self.document.get("key") else "keys=%s" % self.document["key"],
780+
"".join(
781+
[
782+
", %s=%r" % (key, value)
783+
for key, value in self.document.items()
784+
if not key == "key"
785+
]
786+
),
782787
)
783788

784789

test/test_collection.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2259,10 +2259,23 @@ def assertRepr(self, obj):
22592259
self.assertEqual(repr(new_obj), repr(obj))
22602260

22612261
def test_index_model_repr(self):
2262-
self.assertRepr(IndexModel("hello", unique=False))
2263-
self.assertRepr(IndexModel("world", unique=True))
2264-
self.assertRepr(IndexModel([("hello", DESCENDING)], unique=True))
2265-
self.assertRepr(IndexModel([("world", DESCENDING)], name="world", unique=True))
2262+
self.assertRepr(IndexModel("hello"))
2263+
self.assertRepr(IndexModel([("hello", DESCENDING), ("world", ASCENDING)]))
2264+
self.assertRepr(IndexModel([("hello", DESCENDING), ("world", ASCENDING)], name="hello_world"))
2265+
self.assertRepr(IndexModel("a", unique=True))
2266+
# self.assertRepr(name
2267+
# self.assertRepr(unique
2268+
# self.assertRepr(background
2269+
# self.assertRepr(sparse
2270+
# self.assertRepr(bucketSize
2271+
# self.assertRepr(min
2272+
# self.assertRepr(max
2273+
# self.assertRepr(expireAfterSeconds
2274+
# self.assertRepr(partialFilterExpression
2275+
# self.assertRepr(collation
2276+
# self.assertRepr(wildcardProjection
2277+
# self.assertRepr(hidden
2278+
22662279

22672280
if __name__ == "__main__":
22682281
unittest.main()

0 commit comments

Comments
 (0)