o
    Yh6                     @  s   d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZmZmZ d dlmZmZ d dlmZmZmZmZmZ d d	lmZ d d
lmZ d dlmZmZ d dl m!Z!m"Z"m#Z#m$Z$ erhd dl%m&Z& eG dd dZ'G dd dZ(dS )    )annotations)	dataclass)dedent)TYPE_CHECKINGcast)current_form_id)LayoutConfigWidthvalidate_width)check_widget_policiesmaybe_raise_label_warnings)KeyLabelVisibilitycompute_and_register_element_id get_label_visibility_proto_valueto_key)Checkbox)gather_metrics)ScriptRunContextget_script_run_ctx)
WidgetArgsWidgetCallbackWidgetKwargsregister_widget)DeltaGeneratorc                   @  s*   e Zd ZU ded< dddZdd	d
ZdS )CheckboxSerdeboolvaluevreturnc                 C  s   t |S N)r   )selfr    r"   d/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/streamlit/elements/widgets/checkbox.py	serialize8   s   zCheckboxSerde.serializeui_valuebool | Nonec                 C  s   t |d ur|S | jS r    )r   r   )r!   r%   r"   r"   r#   deserialize;   s   zCheckboxSerde.deserializeN)r   r   r   r   )r%   r&   r   r   )__name__
__module____qualname____annotations__r$   r'   r"   r"   r"   r#   r   4   s   
 
r   c                   @  s   e Zd Zed						d*ddddd+ddZed						d*ddddd+ddZ						d*ddejjddd d,d%d&Z	e
d-d(d)ZdS ).CheckboxMixincheckboxFNvisiblecontent)disabledlabel_visibilitywidthlabelstrr   r   key
Key | Nonehelp
str | None	on_changeWidgetCallback | NoneargsWidgetArgs | NonekwargsWidgetKwargs | Noner0   r1   r   r2   r	   r   c                C  ,   t  }| j|||||||||	tjj||
dS )a1  Display a checkbox widget.

        Parameters
        ----------
        label : str
            A short label explaining to the user what this checkbox is for.
            The label can optionally contain GitHub-flavored Markdown of the
            following types: Bold, Italics, Strikethroughs, Inline Code, Links,
            and Images. Images display like icons, with a max height equal to
            the font height.

            Unsupported Markdown 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"``.

            See the ``body`` parameter of |st.markdown|_ for additional,
            supported Markdown directives.

            For accessibility reasons, you should never set an empty label, but
            you can hide it with ``label_visibility`` if needed. In the future,
            we may disallow empty labels by raising an exception.

            .. |st.markdown| replace:: ``st.markdown``
            .. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown

        value : bool
            Preselect the checkbox when it first renders. This will be
            cast to bool internally.

        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. No two widgets may have the same key.

        help : str or None
            A tooltip that gets displayed next to the widget label. Streamlit
            only displays the tooltip when ``label_visibility="visible"``. If
            this is ``None`` (default), no tooltip is displayed.

            The tooltip can optionally contain GitHub-flavored Markdown,
            including the Markdown directives described in the ``body``
            parameter of ``st.markdown``.

        on_change : callable
            An optional callback invoked when this checkbox's value changes.

        args : list or tuple
            An optional list or 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 that disables the checkbox if set to ``True``.
            The default is ``False``.

        label_visibility : "visible", "hidden", or "collapsed"
            The visibility of the label. The default is ``"visible"``. If this
            is ``"hidden"``, Streamlit displays an empty spacer instead of the
            label, which can help keep the widget aligned with other widgets.
            If this is ``"collapsed"``, Streamlit displays no label or spacer.

        width : "content", "stretch", or int
            The width of the checkbox widget. This can be one of the following:

            - ``"content"`` (default): The width of the widget matches the
              width of its content, but doesn't exceed the width of the parent
              container.
            - ``"stretch"``: The width of the widget matches the width of the
              parent container.
            - An integer specifying the width in pixels: The widget has a
              fixed width. If the specified width is greater than the width of
              the parent container, the width of the widget matches the width
              of the parent container.

        Returns
        -------
        bool
            Whether or not the checkbox is checked.

        Example
        -------
        >>> import streamlit as st
        >>>
        >>> agree = st.checkbox("I agree")
        >>>
        >>> if agree:
        ...     st.write("Great!")

        .. output::
           https://doc-checkbox.streamlit.app/
           height: 220px

        r3   r   r5   r7   r9   r;   r=   r0   r1   typectxr2   )r   	_checkboxCheckboxProto	StyleTypeDEFAULTr!   r3   r   r5   r7   r9   r;   r=   r0   r1   r2   rB   r"   r"   r#   r-   @      nzCheckboxMixin.checkboxtogglec                C  r?   )a.  Display a toggle widget.

        Parameters
        ----------
        label : str
            A short label explaining to the user what this toggle is for.
            The label can optionally contain GitHub-flavored Markdown of the
            following types: Bold, Italics, Strikethroughs, Inline Code, Links,
            and Images. Images display like icons, with a max height equal to
            the font height.

            Unsupported Markdown 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"``.

            See the ``body`` parameter of |st.markdown|_ for additional,
            supported Markdown directives.

            For accessibility reasons, you should never set an empty label, but
            you can hide it with ``label_visibility`` if needed. In the future,
            we may disallow empty labels by raising an exception.

            .. |st.markdown| replace:: ``st.markdown``
            .. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown

        value : bool
            Preselect the toggle when it first renders. This will be
            cast to bool internally.

        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. No two widgets may have the same key.

        help : str or None
            A tooltip that gets displayed next to the widget label. Streamlit
            only displays the tooltip when ``label_visibility="visible"``. If
            this is ``None`` (default), no tooltip is displayed.

            The tooltip can optionally contain GitHub-flavored Markdown,
            including the Markdown directives described in the ``body``
            parameter of ``st.markdown``.

        on_change : callable
            An optional callback invoked when this toggle's value changes.

        args : list or tuple
            An optional list or 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 that disables the toggle if set to ``True``.
            The default is ``False``.

        label_visibility : "visible", "hidden", or "collapsed"
            The visibility of the label. The default is ``"visible"``. If this
            is ``"hidden"``, Streamlit displays an empty spacer instead of the
            label, which can help keep the widget aligned with other widgets.
            If this is ``"collapsed"``, Streamlit displays no label or spacer.

        width : "content", "stretch", or int
            The width of the toggle widget. This can be one of the following:

            - ``"content"`` (default): The width of the widget matches the
              width of its content, but doesn't exceed the width of the parent
              container.
            - ``"stretch"``: The width of the widget matches the width of the
              parent container.
            - An integer specifying the width in pixels: The widget has a
              fixed width. If the specified width is greater than the width of
              the parent container, the width of the widget matches the width
              of the parent container.

        Returns
        -------
        bool
            Whether or not the toggle is checked.

        Example
        -------
        >>> import streamlit as st
        >>>
        >>> on = st.toggle("Activate feature")
        >>>
        >>> if on:
        ...     st.write("Feature activated!")

        .. output::
           https://doc-toggle.streamlit.app/
           height: 220px

        r@   )r   rC   rD   rE   TOGGLErG   r"   r"   r#   rI      rH   zCheckboxMixin.toggle)r0   r1   rA   rB   r2   rA   !CheckboxProto.StyleType.ValueTyperB   ScriptRunContext | Nonec             
   C  s  t |}t| j|||du rd n|d t||	 t|
tjjkr!dnd|| j|t|||d}t }||_	||_
t||_|
|_t| j|_||_t|	|j_|d urWt||_t|dd t|d}t|}t|j	||||j|j|d	d
}|jr|j|_d|_| jjd||d |jS )NF)default_valuerI   r-   )user_keydgr3   r   r7   r2   T)allow_content)r2   
bool_value)on_change_handlerr;   r=   deserializer
serializerrB   
value_type)layout_config)r   r   rO   r   r   rD   rE   rJ   r   idr3   defaultrA   r   form_idr0   r   r1   r   r   r7   r
   r   r   r   r'   r$   value_changed	set_value_enqueue)r!   r3   r   r5   r7   r9   r;   r=   r0   r1   rA   rB   r2   
element_idcheckbox_protorV   serdecheckbox_stater"   r"   r#   rC   <  s^   




zCheckboxMixin._checkboxr   c                 C  s
   t d| S )zGet our DeltaGenerator.r   )r   )r!   r"   r"   r#   rO     s   
zCheckboxMixin.dg)FNNNNN)r3   r4   r   r   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r0   r   r1   r   r2   r	   r   r   )r3   r4   r   r   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r0   r   r1   r   rA   rK   rB   rL   r2   r	   r   r   )r   r   )r(   r)   r*   r   r-   rI   rD   rE   rF   rC   propertyrO   r"   r"   r"   r#   r,   ?   sR    
}
 
Ir,   N))
__future__r   dataclassesr   textwrapr   typingr   r   !streamlit.elements.lib.form_utilsr   #streamlit.elements.lib.layout_utilsr   r	   r
   streamlit.elements.lib.policiesr   r   streamlit.elements.lib.utilsr   r   r   r   r   streamlit.proto.Checkbox_pb2r   rD   streamlit.runtime.metrics_utilr   streamlit.runtime.scriptrunnerr   r   streamlit.runtime.stater   r   r   r   streamlit.delta_generatorr   r   r,   r"   r"   r"   r#   <module>   s"   
