code: def number_input(
      self,
      label: str,
      min_value: Number | None = None,
      max_value: Number | None = None,
      value: None = None,
      step: Number | None = None,
      format: str | None = None,
      key: Key | None = None,
      help: str | None = None,
      on_change: WidgetCallback | None = None,
      args: WidgetArgs | None = None,
      kwargs: WidgetKwargs | None = None,
      *,  # keyword-only arguments:
      placeholder: str | None = None,
      disabled: bool = False,
      label_visibility: LabelVisibility = "visible",
  ) -> Number | None:
      pass
  
imports: from __future__ import annotations
  import numbers
  from dataclasses import dataclass
  from textwrap import dedent
  from typing import Literal, Union, cast, overload
  import streamlit
  from streamlit.elements.form import current_form_id
  from streamlit.elements.utils import check_callback_rules, check_session_state_rules, get_label_visibility_proto_value
  from streamlit.errors import StreamlitAPIException
  from streamlit.js_number import JSNumber, JSNumberBoundsException
  from streamlit.proto.NumberInput_pb2 import NumberInput
  from streamlit.runtime.metrics_util import gather_metrics
  from streamlit.runtime.scriptrunner import ScriptRunContext, get_script_run_ctx
  from streamlit.runtime.state import WidgetArgs, WidgetCallback, WidgetKwargs, register_widget
  from streamlit.runtime.state.common import compute_widget_id
  from streamlit.type_util import Key, LabelVisibility, maybe_raise_label_warnings, to_key
label_desc: Use image node_id 2 for calling the NumberInputMixin obj's underlying member method code with example usage: obj.number_input(label, min_value, max_value, value, step, format, key, help, on_change, args, kwargs) without return types