
    g                        U d dl mZ d dlZd dlmZmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ erd dlmZ eeef   Zd	ed
<   dddZd ZddZ G d d      Zy)    )annotationsN)TYPE_CHECKINGUnioncast)	TypeAlias)StreamlitAPIException)Progress)
clean_text)DeltaGeneratorr   
FloatOrIntc                    || cxk  xr |k  nc xs4 t        j                  | |dd      xs t        j                  | |dd      S )a*  
    Checks given value is 'between' the bounds of [low, high],
    considering close values around bounds are acceptable input

    Notes
    -----
    This check is required for handling values that are slightly above or below the
    acceptable range, for example -0.0000000000021, 1.0000000000000013.
    These values are little off the conventional 0.0 <= x <= 1.0 condition
    due to floating point operations, but should still be considered acceptable input.

    Parameters
    ----------
    value : float
    low : float
    high : float

    g&.>)rel_tolabs_tol)mathisclose)valuelowhighs      P/var/www/openai/venv/lib/python3.12/site-packages/streamlit/elements/progress.py_check_float_betweenr   #   sF    ( 
		 	A<<sD$?	A<<tT4@    c                   t        | t              rd| cxk  rdk  r| S  t        d| z        t        | t              r*t	        | dd      rt        | dz        S t        d| z        t        dt        |       j                  z        )	Nr   d   z-Progress Value has invalid value [0, 100]: %d              ?)r   r   z/Progress Value has invalid value [0.0, 1.0]: %fz#Progress Value has invalid type: %s)
isinstanceintr   floatr   type__name__)r   s    r   
_get_valuer!   =   s    %L  (?%G  
E5	!3S9us{##'AEI  $1DK4H4HH
 	
r   c                    | y t        | t              rt        |       S t        dt        t	        |              d      )NzProgress Text is of type zd, which is not an accepted type.Text only accepts: str. Please convert the text to an accepted type.)r   strr
   r   r   )texts    r   	_get_textr%   S   sH    |$$

#CT
O#4 5O 	O r   c                  (    e Zd ZdddZedd       Zy)ProgressMixinNc                    t               }t        |      |_        t        |      }|||_        | j
                  j                  d|      S )a  Display a progress bar.

        Parameters
        ----------
        value : int or float
            0 <= value <= 100 for int

            0.0 <= value <= 1.0 for float

        text : str or None
            A message to display above the progress bar. The text 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.

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

        Example
        -------
        Here is an example of a progress bar increasing over time and disappearing when it reaches completion:

        >>> import streamlit as st
        >>> import time
        >>>
        >>> progress_text = "Operation in progress. Please wait."
        >>> my_bar = st.progress(0, text=progress_text)
        >>>
        >>> for percent_complete in range(100):
        ...     time.sleep(0.01)
        ...     my_bar.progress(percent_complete + 1, text=progress_text)
        >>> time.sleep(1)
        >>> my_bar.empty()
        >>>
        >>> st.button("Rerun")

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

        progress)ProgressProtor!   r   r%   r$   dg_enqueue)selfr   r$   progress_protos       r   r)   zProgressMixin.progress_   sG    f ')%0"&Nww
N;;r   c                    t        d|       S )zGet our DeltaGenerator.r   )r   )r-   s    r   r+   zProgressMixin.dg   s     $d++r   )N)r   r   r$   
str | Nonereturnr   )r1   r   )r    
__module____qualname__r)   propertyr+    r   r   r'   r'   ^   s    8<t , ,r   r'   )r   r   )r   r   r   r   r   r   r1   bool)r$   r0   r1   r0   )
__future__r   r   typingr   r   r   typing_extensionsr   streamlit.errorsr   streamlit.proto.Progress_pb2r	   r*   streamlit.string_utilr
   streamlit.delta_generatorr   r   r   r   __annotations__r   r!   r%   r'   r5   r   r   <module>r?      sS    #  - - ' 2 B ,8
 c5j)
I )4
,>, >,r   