code: def test_validate_issue_types_dict(self, issue_finder, monkeypatch):
      issue_types = {
          "issue_type_1": {
              f"arg_{i}": f"value_{i}" for i in range(1, 3)
          },
          "issue_type_2": {
              f"arg_{i}": f"value_{i}" for i in range(1, 4)
          },
      }
      defaults_dict = issue_types.copy()
  
      issue_types["issue_type_2"][
          "arg_2"
      ] = "another_value_2"  # Should be in default, but not affect the test
      issue_types["issue_type_2"][
          "arg_4"
      ] = "value_4"  # Additional arg not in defaults should be allowed (ignored)
  
      with monkeypatch.context() as m:
          m.setitem(issue_types, "issue_type_1", {})
          with pytest.raises(ValueError) as e:
              issue_finder._validate_issue_types_dict(
                  issue_types, defaults_dict
              )
          assert all(
              [
                  string in str(e.value)
                  for string in ["issue_type_1", "arg_1", "arg_2"]
              ]
          )
  
file_path: cleanlab/tests/datalab/test_issue_finder.py
imports: import pytest
  import numpy
  from cleanlab.datalab.internal.issue_finder import IssueFinder
  from cleanlab import Datalab
label_desc: Use image node_id 6 for calling the TestIssueFinder obj's underlying member method code with example usage: obj.test_validate_issue_types_dict(issue_finder, monkeypatch) without return types