class_docstr: Enforce that new arguments added to the signature of a widget function are taken
  into account when computing widget IDs unless explicitly excluded.
class_docstr_tok: ["Enforce","that","new","arguments","added","to","the","signature","of","a","widget","function","are","taken","into","account","when","computing","widget","IDs","unless","explicitly","excluded","."]
code: def test_widget_id_computation_no_form_widgets(
      self, widget_func, module_name
  ):
      with patch(
          f"streamlit.elements.widgets.{module_name}.compute_widget_id",
          wraps=compute_widget_id,
      ) as patched_compute_widget_id:
          if widget_func == st.download_button:
              widget_func("my_widget", data="")
          else:
              widget_func("my_widget")
  
      sig = inspect.signature(widget_func)
      expected_sig = self.signature_to_expected_kwargs(sig)
  
      # button and chat widgets don't include a form_id param in their calls to
      # compute_widget_id because having either in forms (aside from the form's
      # submit button) is illegal.
      del expected_sig["form_id"]
      if widget_func == st.button:
          expected_sig["is_form_submitter"] = ANY
      # we exclude `data` for `st.download_button` here and not
      # in `signature_to_expected_kwargs`, because `data` param is also used for
      # `st.data_editor`.
      if widget_func == st.download_button:
          del expected_sig["data"]
  
      patched_compute_widget_id.assert_called_with(ANY, **expected_sig)
  
imports: import inspect
  import unittest
  from unittest.mock import ANY, MagicMock, call, patch
  from parameterized import parameterized
  import streamlit
  from streamlit import errors
  from streamlit.proto.Common_pb2 import StringTriggerValue
  from streamlit.proto.WidgetStates_pb2 import WidgetStates
  from streamlit.runtime.scriptrunner.script_run_context import get_script_run_ctx
  from streamlit.runtime.state import coalesce_widget_states
  from streamlit.runtime.state.common import GENERATED_WIDGET_ID_PREFIX, compute_widget_id
  from streamlit.runtime.state.session_state import SessionState, WidgetMetadata
  from streamlit.runtime.state.widgets import user_key_from_widget_id
  from tests.delta_generator_test_case import DeltaGeneratorTestCase
label_desc: Use image node_id 3 for calling the ComputeWidgetIdTests obj's underlying member method code with example usage: obj.test_widget_id_computation_no_form_widgets(widget_func, module_name) without return types