@@ -725,6 +725,17 @@ def test__repr__(self, cls: type[MultiDict[str]]) -> None:
725725
726726 assert str (d ) == "<%s('key': 'one', 'key': 'two')>" % _cls .__name__
727727
728+ def test__repr___recursive (
729+ self , any_multidict_class : type [MultiDict [object ]]
730+ ) -> None :
731+ d = any_multidict_class ()
732+ _cls = type (d )
733+
734+ d = any_multidict_class ()
735+ d ["key" ] = d
736+
737+ assert str (d ) == "<%s('key': ...)>" % _cls .__name__
738+
728739 def test_getall (self , cls : type [MultiDict [str ]]) -> None :
729740 d = cls ([("key" , "value1" )], key = "value2" )
730741
@@ -757,6 +768,14 @@ def test_items__repr__(self, cls: type[MultiDict[str]]) -> None:
757768 expected = "<_ItemsView('key': 'value1', 'key': 'value2')>"
758769 assert repr (d .items ()) == expected
759770
771+ def test_items__repr__recursive (
772+ self , any_multidict_class : type [MultiDict [object ]]
773+ ) -> None :
774+ d = any_multidict_class ()
775+ d ["key" ] = d .items ()
776+ expected = "<_ItemsView('key': <_ItemsView('key': ...)>)>"
777+ assert repr (d .items ()) == expected
778+
760779 def test_keys__repr__ (self , cls : type [MultiDict [str ]]) -> None :
761780 d = cls ([("key" , "value1" )], key = "value2" )
762781 assert repr (d .keys ()) == "<_KeysView('key', 'key')>"
@@ -765,6 +784,13 @@ def test_values__repr__(self, cls: type[MultiDict[str]]) -> None:
765784 d = cls ([("key" , "value1" )], key = "value2" )
766785 assert repr (d .values ()) == "<_ValuesView('value1', 'value2')>"
767786
787+ def test_values__repr__recursive (
788+ self , any_multidict_class : type [MultiDict [object ]]
789+ ) -> None :
790+ d = any_multidict_class ()
791+ d ["key" ] = d .values ()
792+ assert repr (d .values ()) == "<_ValuesView(<_ValuesView(...)>)>"
793+
768794
769795class TestCIMultiDict (BaseMultiDictTest ):
770796 @pytest .fixture (
0 commit comments