docstr: Display a single-line text input widget.
  
  Parameters
  ----------
  label : str
      A short label explaining to the user what this input is for.
      The label can optionally contain Markdown and supports the following
      elements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.
  
      This also supports:
  
      * Emoji shortcodes, such as ``:+1:``  and ``:sunglasses:``.
        For a list of all supported codes,
        see https://share.streamlit.io/streamlit/emoji-shortcodes.
  
      * LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"
        must be on their own lines). Supported LaTeX functions are listed
        at https://katex.org/docs/supported.html.
  
      * Colored text, using the syntax ``:color[text to be colored]``,
        where ``color`` needs to be replaced with any of the following
        supported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  
      Unsupported elements are unwrapped so only their children (text contents) render.
      Display unsupported elements as literal characters by
      backslash-escaping them. E.g. ``1\. Not an ordered list``.
  
      For accessibility reasons, you should never set an empty label (label="")
      but hide it with label_visibility if needed. In the future, we may disallow
      empty labels by raising an exception.
  value : object or None
      The text value of this widget when it first renders. This will be
      cast to str internally. If ``None``, will initialize empty and
      return ``None`` until the user provides input. Defaults to empty string.
  max_chars : int or None
      Max number of characters allowed in text input.
  key : str or int
      An optional string or integer to use as the unique key for the widget.
      If this is omitted, a key will be generated for the widget
      based on its content. Multiple widgets of the same type may
      not share the same key.
  type : "default" or "password"
      The type of the text input. This can be either "default" (for
      a regular text input), or "password" (for a text input that
      masks the user's typed value). Defaults to "default".
  help : str
      An optional tooltip that gets displayed next to the input.
  autocomplete : str
      An optional value that will be passed to the <input> element's
      autocomplete property. If unspecified, this value will be set to
      "new-password" for "password" inputs, and the empty string for
      "default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete
  on_change : callable
      An optional callback invoked when this text input's value changes.
  args : tuple
      An optional tuple of args to pass to the callback.
  kwargs : dict
      An optional dict of kwargs to pass to the callback.
  placeholder : str or None
      An optional string displayed when the text input is empty. If None,
      no text is displayed.
  disabled : bool
      An optional boolean, which disables the text input if set to True.
      The default is False.
  label_visibility : "visible", "hidden", or "collapsed"
      The visibility of the label. If "hidden", the label doesn't show but there
      is still empty space for it above the widget (equivalent to label="").
      If "collapsed", both the label and the space are removed. Default is
      "visible".
  
  Returns
  -------
  str or None
      The current value of the text input widget or ``None`` if no value has been
      provided by the user.
  
  Example
  -------
  >>> import streamlit as st
  >>>
  >>> title = st.text_input('Movie title', 'Life of Brian')
  >>> st.write('The current movie title is', title)
  
  .. output::
     https://doc-text-input.streamlit.app/
     height: 260px
docstr_tok: ["Display","a","single-line","text","input","widget",".","Parameters","--","--","--","--","--","label",":","str","A","short","label","explaining","to","the","user","what","this","input","is","for",".","The","label","can","optionally","contain","Markdown","and","supports","the","following","elements",":","Bold",",","Italics",",","Strikethroughs",",","Inline","Code",",","Emojis",",","and","Links",".","This","also","supports",":","*","Emoji","shortcodes",",","such","as","``",":","+1",":","``","and","``",":","sunglasses",":","``",".","For","a","list","of","all","supported","codes",",","see","https",":","\/\/share.streamlit.io\/streamlit\/emoji-shortcodes",".","*","LaTeX","expressions",",","by","wrapping","them","in","``","$","''","or","``","$","$","''","(","the","``","$","$","''","must","be","on","their","own","lines",")",".","Supported","LaTeX","functions","are","listed","at","https",":","\/\/katex.org\/docs\/supported.html",".","*","Colored","text",",","using","the","syntax","``",":","color","[","text","to","be","colored","]","``",",","where","``","color","``","needs","to","be","replaced","with","any","of","the","following","supported","colors",":","blue",",","green",",","orange",",","red",",","violet",",","gray\/grey",",","rainbow",".","Unsupported","elements","are","unwrapped","so","only","their","children","(","text","contents",")","render",".","Display","unsupported","elements","as","literal","characters","by","backslash-escaping","them",".","E.g",".","``","1\\",".","Not","an","ordered","list","``",".","For","accessibility","reasons",",","you","should","never","set","an","empty","label","(","label=","''","''",")","but","hide","it","with","label_visibility","if","needed",".","In","the","future",",","we","may","disallow","empty","labels","by","raising","an","exception",".","value",":","object","or","None","The","text","value","of","this","widget","when","it","first","renders",".","This","will","be","cast","to","str","internally",".","If","``","None","``",",","will","initialize","empty","and","return","``","None","``","until","the","user","provides","input",".","Defaults","to","empty","string",".","max_chars",":","int","or","None","Max","number","of","characters","allowed","in","text","input",".","key",":","str","or","int","An","optional","string","or","integer","to","use","as","the","unique","key","for","the","widget",".","If","this","is","omitted",",","a","key","will","be","generated","for","the","widget","based","on","its","content",".","Multiple","widgets","of","the","same","type","may","not","share","the","same","key",".","type",":","``","default","''","or","``","password","''","The","type","of","the","text","input",".","This","can","be","either","``","default","''","(","for","a","regular","text","input",")",",","or","``","password","''","(","for","a","text","input","that","masks","the","user","'s","typed","value",")",".","Defaults","to","``","default","''",".","help",":","str","An","optional","tooltip","that","gets","displayed","next","to","the","input",".","autocomplete",":","str","An","optional","value","that","will","be","passed","to","the","<","input",">","element's","autocomplete","property",".","If","unspecified",",","this","value","will","be","set","to","``","new-password","''","for","``","password","''","inputs",",","and","the","empty","string","for","``","default","''","inputs",".","For","more","details",",","see","https",":","\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTML\/Attributes\/autocomplete","on_change",":","callable","An","optional","callback","invoked","when","this","text","input","'s","value","changes",".","args",":","tuple","An","optional","tuple","of","args","to","pass","to","the","callback",".","kwargs",":","dict","An","optional","dict","of","kwargs","to","pass","to","the","callback",".","placeholder",":","str","or","None","An","optional","string","displayed","when","the","text","input","is","empty",".","If","None",",","no","text","is","displayed",".","disabled",":","bool","An","optional","boolean",",","which","disables","the","text","input","if","set","to","True",".","The","default","is","False",".","label_visibility",":","``","visible","''",",","``","hidden","''",",","or","``","collapsed","''","The","visibility","of","the","label",".","If","``","hidden","''",",","the","label","does","n't","show","but","there","is","still","empty","space","for","it","above","the","widget","(","equivalent","to","label=","''","''",")",".","If","``","collapsed","''",",","both","the","label","and","the","space","are","removed",".","Default","is","``","visible","''",".","Returns","--","--","--","-","str","or","None","The","current","value","of","the","text","input","widget","or","``","None","``","if","no","value","has","been","provided","by","the","user",".","Example","--","--","--","-",">",">",">","import","streamlit","as","st",">",">",">",">",">",">","title","=","st.text_input","(","'Movie","title","'",",","'Life","of","Brian","'",")",">",">",">","st.write","(","'The","current","movie","title","is","'",",","title",")","..","output",":",":","https",":","\/\/doc-text-input.streamlit.app\/","height",":","260px"]
code: def text_input(
      self,
      label: str,
      value: str | SupportsStr | None = "",
      max_chars: int | None = None,
      key: Key | None = None,
      type: Literal["default", "password"] = "default",
      help: str | None = None,
      autocomplete: 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",
  ) -> str | None:
      r"""Display a single-line text input widget.
  
      Parameters
      ----------
      label : str
          A short label explaining to the user what this input is for.
          The label can optionally contain Markdown and supports the following
          elements: Bold, Italics, Strikethroughs, Inline Code, Emojis, and Links.
  
          This also supports:
  
          * Emoji shortcodes, such as ``:+1:``  and ``:sunglasses:``.
            For a list of all supported codes,
            see https://share.streamlit.io/streamlit/emoji-shortcodes.
  
          * LaTeX expressions, by wrapping them in "$" or "$$" (the "$$"
            must be on their own lines). Supported LaTeX functions are listed
            at https://katex.org/docs/supported.html.
  
          * Colored text, using the syntax ``:color[text to be colored]``,
            where ``color`` needs to be replaced with any of the following
            supported colors: blue, green, orange, red, violet, gray/grey, rainbow.
  
          Unsupported elements are unwrapped so only their children (text contents) render.
          Display unsupported elements as literal characters by
          backslash-escaping them. E.g. ``1\. Not an ordered list``.
  
          For accessibility reasons, you should never set an empty label (label="")
          but hide it with label_visibility if needed. In the future, we may disallow
          empty labels by raising an exception.
      value : object or None
          The text value of this widget when it first renders. This will be
          cast to str internally. If ``None``, will initialize empty and
          return ``None`` until the user provides input. Defaults to empty string.
      max_chars : int or None
          Max number of characters allowed in text input.
      key : str or int
          An optional string or integer to use as the unique key for the widget.
          If this is omitted, a key will be generated for the widget
          based on its content. Multiple widgets of the same type may
          not share the same key.
      type : "default" or "password"
          The type of the text input. This can be either "default" (for
          a regular text input), or "password" (for a text input that
          masks the user's typed value). Defaults to "default".
      help : str
          An optional tooltip that gets displayed next to the input.
      autocomplete : str
          An optional value that will be passed to the <input> element's
          autocomplete property. If unspecified, this value will be set to
          "new-password" for "password" inputs, and the empty string for
          "default" inputs. For more details, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete
      on_change : callable
          An optional callback invoked when this text input's value changes.
      args : tuple
          An optional tuple of args to pass to the callback.
      kwargs : dict
          An optional dict of kwargs to pass to the callback.
      placeholder : str or None
          An optional string displayed when the text input is empty. If None,
          no text is displayed.
      disabled : bool
          An optional boolean, which disables the text input if set to True.
          The default is False.
      label_visibility : "visible", "hidden", or "collapsed"
          The visibility of the label. If "hidden", the label doesn't show but there
          is still empty space for it above the widget (equivalent to label="").
          If "collapsed", both the label and the space are removed. Default is
          "visible".
  
      Returns
      -------
      str or None
          The current value of the text input widget or ``None`` if no value has been
          provided by the user.
  
      Example
      -------
      >>> import streamlit as st
      >>>
      >>> title = st.text_input('Movie title', 'Life of Brian')
      >>> st.write('The current movie title is', title)
  
      .. output::
         https://doc-text-input.streamlit.app/
         height: 260px
  
      """
      ctx = get_script_run_ctx()
      return self._text_input(
          label=label,
          value=value,
          max_chars=max_chars,
          key=key,
          type=type,
          help=help,
          autocomplete=autocomplete,
          on_change=on_change,
          args=args,
          kwargs=kwargs,
          placeholder=placeholder,
          disabled=disabled,
          label_visibility=label_visibility,
          ctx=ctx,
      )
  
imports: from __future__ import annotations
  from dataclasses import dataclass
  from textwrap import dedent
  from typing import cast, overload
  from typing_extensions import Literal
  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.proto.TextArea_pb2 import TextArea
  from streamlit.proto.TextInput_pb2 import TextInput
  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, SupportsStr, maybe_raise_label_warnings, to_key
label_desc: Use image node_id 3 for calling the TextWidgetsMixin obj's underlying member method code with example usage: obj.text_input(label, value, max_chars, key, type, help, autocomplete, on_change, args, kwargs) and returns: self