code: def test_dict_interface():
      param_store = pyro.get_param_store()
  
      # start empty
      param_store.clear()
      assert not param_store
      assert len(param_store) == 0
      assert "x" not in param_store
      assert "y" not in param_store
      assert list(param_store.items()) == []
      assert list(param_store.keys()) == []
      assert list(param_store.values()) == []
  
      # add x
      param_store["x"] = torch.zeros(1, 2, 3)
      assert param_store
      assert len(param_store) == 1
      assert "x" in param_store
      assert "y" not in param_store
      assert list(param_store.keys()) == ["x"]
      assert [key for key, value in param_store.items()] == ["x"]
      assert len(list(param_store.values())) == 1
      assert param_store["x"].shape == (1, 2, 3)
      assert_equal(
          param_store.setdefault("x", torch.ones(1, 2, 3)),
          torch.zeros(1, 2, 3),
      )
      assert param_store["x"].unconstrained() is param_store["x"]
  
      # add y
      param_store.setdefault(
          "y", torch.ones(4, 5), constraint=constraints.positive
      )
      assert param_store
      assert len(param_store) == 2
      assert "x" in param_store
      assert "y" in param_store
      assert sorted(param_store.keys()) == ["x", "y"]
      assert sorted(key for key, value in param_store.items()) == [
          "x",
          "y",
      ]
      assert len(list(param_store.values())) == 2
      assert param_store["x"].shape == (1, 2, 3)
      assert param_store["y"].shape == (4, 5)
      assert_equal(
          param_store.setdefault("y", torch.zeros(4, 5)),
          torch.ones(4, 5),
      )
      assert_equal(param_store["y"].unconstrained(), torch.zeros(4, 5))
  
      # remove x
      del param_store["x"]
      assert param_store
      assert len(param_store) == 1
      assert "x" not in param_store
      assert "y" in param_store
      assert list(param_store.keys()) == ["y"]
      assert list(key for key, value in param_store.items()) == ["y"]
      assert len(list(param_store.values())) == 1
      assert param_store["y"].shape == (4, 5)
      assert_equal(
          param_store.setdefault("y", torch.zeros(4, 5)),
          torch.ones(4, 5),
      )
      assert_equal(param_store["y"].unconstrained(), torch.zeros(4, 5))
  
      # remove y
      del param_store["y"]
      assert not param_store
      assert len(param_store) == 0
      assert "x" not in param_store
      assert "y" not in param_store
      assert list(param_store.keys()) == []
      assert list(key for key, value in param_store.items()) == []
      assert len(list(param_store.values())) == 0
  
file_path: pyro/tests/params/test_param.py
imports: from copy import copy
  from unittest import TestCase
  import numpy
  import torch
  import torch.optim
  from torch import nn
  from torch.distributions import constraints
  import pyro
  from tests.common import assert_equal
label_desc: Use image node_id 1 for calling a global function with example usage: test_dict_interface() without return types