docstr: Display a time input widget.
  
  Parameters
  ----------
  label : str
      A short label explaining to the user what this time 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 : datetime.time/datetime.datetime, "now" or None
      The 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 selects a time. If "now" (default),
      will initialize with the current time.
  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.
  help : str
      An optional tooltip that gets displayed next to the input.
  on_change : callable
      An optional callback invoked when this time_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.
  disabled : bool
      An optional boolean, which disables the time 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".
  step : int or timedelta
      The stepping interval in seconds. Defaults to 900, i.e. 15 minutes.
      You can also pass a datetime.timedelta object.
  
  Returns
  -------
  datetime.time or None
      The current value of the time input widget or ``None`` if no time has been
      selected.
  
  Example
  -------
  >>> import datetime
  >>> import streamlit as st
  >>>
  >>> t = st.time_input('Set an alarm for', datetime.time(8, 45))
  >>> st.write('Alarm is set for', t)
  
  .. output::
     https://doc-time-input.streamlit.app/
     height: 260px
  
  To initialize an empty time input, use ``None`` as the value:
  
  >>> import datetime
  >>> import streamlit as st
  >>>
  >>> t = st.time_input('Set an alarm for', value=None)
  >>> st.write('Alarm is set for', t)
  
  .. output::
     https://doc-time-input-empty.streamlit.app/
     height: 260px
docstr_tok: ["Display","a","time","input","widget",".","Parameters","--","--","--","--","--","label",":","str","A","short","label","explaining","to","the","user","what","this","time","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",":","datetime.time\/datetime.datetime",",","``","now","''","or","None","The","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","selects","a","time",".","If","``","now","''","(","default",")",",","will","initialize","with","the","current","time",".","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",".","help",":","str","An","optional","tooltip","that","gets","displayed","next","to","the","input",".","on_change",":","callable","An","optional","callback","invoked","when","this","time_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",".","disabled",":","bool","An","optional","boolean",",","which","disables","the","time","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","''",".","step",":","int","or","timedelta","The","stepping","interval","in","seconds",".","Defaults","to","900",",","i.e",".","15","minutes",".","You","can","also","pass","a","datetime.timedelta","object",".","Returns","--","--","--","-","datetime.time","or","None","The","current","value","of","the","time","input","widget","or","``","None","``","if","no","time","has","been","selected",".","Example","--","--","--","-",">",">",">","import","datetime",">",">",">","import","streamlit","as","st",">",">",">",">",">",">","t","=","st.time_input","(","'Set","an","alarm","for","'",",","datetime.time","(","8",",","45",")",")",">",">",">","st.write","(","'Alarm","is","set","for","'",",","t",")","..","output",":",":","https",":","\/\/doc-time-input.streamlit.app\/","height",":","260px","To","initialize","an","empty","time","input",",","use","``","None","``","as","the","value",":",">",">",">","import","datetime",">",">",">","import","streamlit","as","st",">",">",">",">",">",">","t","=","st.time_input","(","'Set","an","alarm","for","'",",","value=None",")",">",">",">","st.write","(","'Alarm","is","set","for","'",",","t",")","..","output",":",":","https",":","\/\/doc-time-input-empty.streamlit.app\/","height",":","260px"]
code: def time_input(
      self,
      label: str,
      value: time | datetime | Literal["now"] | None = "now",
      key: Key | None = None,
      help: str | None = None,
      on_change: WidgetCallback | None = None,
      args: WidgetArgs | None = None,
      kwargs: WidgetKwargs | None = None,
      *,  # keyword-only arguments:
      disabled: bool = False,
      label_visibility: LabelVisibility = "visible",
      step: Union[int, timedelta] = timedelta(
          minutes=DEFAULT_STEP_MINUTES
      ),
  ) -> time | None:
      r"""Display a time input widget.
  
      Parameters
      ----------
      label : str
          A short label explaining to the user what this time 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 : datetime.time/datetime.datetime, "now" or None
          The 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 selects a time. If "now" (default),
          will initialize with the current time.
      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.
      help : str
          An optional tooltip that gets displayed next to the input.
      on_change : callable
          An optional callback invoked when this time_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.
      disabled : bool
          An optional boolean, which disables the time 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".
      step : int or timedelta
          The stepping interval in seconds. Defaults to 900, i.e. 15 minutes.
          You can also pass a datetime.timedelta object.
  
      Returns
      -------
      datetime.time or None
          The current value of the time input widget or ``None`` if no time has been
          selected.
  
      Example
      -------
      >>> import datetime
      >>> import streamlit as st
      >>>
      >>> t = st.time_input('Set an alarm for', datetime.time(8, 45))
      >>> st.write('Alarm is set for', t)
  
      .. output::
         https://doc-time-input.streamlit.app/
         height: 260px
  
      To initialize an empty time input, use ``None`` as the value:
  
      >>> import datetime
      >>> import streamlit as st
      >>>
      >>> t = st.time_input('Set an alarm for', value=None)
      >>> st.write('Alarm is set for', t)
  
      .. output::
         https://doc-time-input-empty.streamlit.app/
         height: 260px
  
      """
      ctx = get_script_run_ctx()
      return self._time_input(
          label=label,
          value=value,
          key=key,
          help=help,
          on_change=on_change,
          args=args,
          kwargs=kwargs,
          disabled=disabled,
          label_visibility=label_visibility,
          step=step,
          ctx=ctx,
      )
  
imports: from __future__ import annotations
  import re
  from dataclasses import dataclass
  from datetime import date, datetime, time, timedelta
  from textwrap import dedent
  from typing import TYPE_CHECKING, Any, List, Literal, Sequence, Tuple, Union, cast, overload
  from dateutil import relativedelta
  from typing_extensions import TypeAlias
  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.DateInput_pb2 import DateInput
  from streamlit.proto.TimeInput_pb2 import TimeInput
  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 3 for calling the TimeWidgetsMixin obj's underlying member method code with example usage: obj.time_input(label, value, key, help, on_change, args, kwargs) and returns: self