code: def test():
      hyperparams(MyConfigs.o1)
      configs = MyConfigs()
      configs.p2 = "p2_set"
  
      try:
          configs.p3 = "not defined"
      except AttributeError:
          pass
      else:
          assert False
  
      assert configs.p1 == "p1_default"
      assert configs.p2 == "p2_set"
      assert configs.calc1 == "p1_defaultp2_set calc"
  
      try:
          print(configs.with_primary)
      except AttributeError:
          pass
      else:
          assert False
  
      configs.no_default = "set"
  
      assert configs.with_primary == "p1_defaultset m1 main"
      assert (
          configs.without_primary.m_calc
          == "p1_default m1 main no primary"
      )
  
      assert configs.from_type_no_param.value == "default"
      assert configs.from_type_with_param.value == "set calc"
  
      configs._set_values({"v1": "v1 custom"})
      assert configs.v2 == "v1 custom calc"
  
      configs._set_values({"v_module.p1_m1": "p1_m1 custom"})
      assert configs.v_module.m_calc == "p1_m1 custom main no primary"
  
      configs.o1 = "override"
      configs._set_values({"o1": "overridden"})
      assert configs.o1 == "overridden"
  
      configs.a = "test"
      configs.a2 = "custom"
      assert configs.a1 == "test1"
      assert configs.a2 == "custom"
  
      try:
          configs.a1 = "this should fail"
      except ValueError:
          pass
      else:
          assert False
  
      assert configs.v_module2.m1 == "default"
      try:
          configs._set_values({"v_module2.m1": "overridden"})
      except ValueError:
          pass
      else:
          assert False
      configs._set_values({"v_module2.m2": "o2"})
      assert configs.v_module2.m2 == "o2"
  
imports: from labml.configs import option, hyperparams, aggregate
  from labml.internal.configs.base import Configs
label_desc: Use image node_id 8 for calling a global function with example usage: test() without return types