import pytest from multidict._compat import USE_CYTHON from multidict._multidict_py import MultiDict as PyMultiDict # noqa: E402 if USE_CYTHON: from multidict._multidict import MultiDict # type: ignore @pytest.fixture( params=([MultiDict] if USE_CYTHON else []) + [PyMultiDict], ids=(["MultiDict"] if USE_CYTHON else []) + ["PyMultiDict"], ) def cls(request): return request.param def test_guard_items(cls): md = cls({"a": "b"}) it = iter(md.items()) md["a"] = "c" with pytest.raises(RuntimeError): next(it) def test_guard_keys(cls): md = cls({"a": "b"}) it = iter(md.keys()) md["a"] = "c" with pytest.raises(RuntimeError): next(it) def test_guard_values(cls): md = cls({"a": "b"}) it = iter(md.values()) md["a"] = "c" with pytest.raises(RuntimeError): next(it)