code: def test_exception_proto_stable():
      d = Exception_.DESCRIPTOR
  
      assert {(f.name, f.label, f.type) for f in d.fields} == {
          ("type", FD.LABEL_OPTIONAL, FD.TYPE_STRING),
          ("message", FD.LABEL_OPTIONAL, FD.TYPE_STRING),
          ("message_is_markdown", FD.LABEL_OPTIONAL, FD.TYPE_BOOL),
          ("stack_trace", FD.LABEL_REPEATED, FD.TYPE_STRING),
          ("is_warning", FD.LABEL_OPTIONAL, FD.TYPE_BOOL),
      }
  
file_path: streamlit/lib/tests/streamlit/proto_compatibility_test.py
imports: from google.protobuf.descriptor import FieldDescriptor
  from parameterized import parameterized
  from streamlit.proto.Alert_pb2 import Alert
  from streamlit.proto.AppPage_pb2 import AppPage
  from streamlit.proto.Common_pb2 import FileURLs, FileURLsRequest, FileURLsResponse
  from streamlit.proto.Exception_pb2 import Exception
  from streamlit.proto.NewSession_pb2 import Config, CustomThemeConfig, EnvironmentInfo, FontFace, FontSizes, Initialize, NewSession, Radii, UserInfo
  from streamlit.proto.ParentMessage_pb2 import ParentMessage
  from streamlit.proto.SessionStatus_pb2 import SessionStatus
label_desc: Use image node_id 4 for calling a global function with example usage: test_exception_proto_stable() without return types