
    /_i                         d Z ddlmZ ddlZddlmZmZ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 dd	lmZ erdd
lmZ ddlmZ  G d d      Z	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 ddZy)z/Streamlit support for Matplotlib PyPlot charts.    )annotationsN)TYPE_CHECKINGAnycast)make_deprecated_name_warningshow_deprecation_warning)marshall_images)LayoutConfigWidthvalidate_width)	ImageList)gather_metrics)Figure)DeltaGeneratorc                  `    e Zd Z ed      	 	 dddd	 	 	 	 	 	 	 	 	 	 	 dd       Zed	d       Zy)
PyplotMixinpyplotNstretch)widthuse_container_widthc          	     4   |!t        t        ddddd      d       |rdnd	}|st        d
       t        |d       t        |      }t	               }t        | j                  j                         ||||fi | | j                  j                  d||      S )a  Display a matplotlib.pyplot figure.

        .. Important::
            You must install ``matplotlib>=3.0.0`` to use this command. You can
            install all charting dependencies (except Bokeh) as an extra with
            Streamlit:

            .. code-block:: shell

               pip install streamlit[charts]

        Parameters
        ----------
        fig : Matplotlib Figure
            The Matplotlib ``Figure`` object to render. See
            https://matplotlib.org/stable/gallery/index.html for examples.

            .. note::
                When this argument isn't specified, this function will render the global
                Matplotlib figure object. However, this feature is deprecated and
                will be removed in a later version.

        clear_figure : bool
            If True, the figure will be cleared after being rendered.
            If False, the figure will not be cleared after being rendered.
            If left unspecified, we pick a default based on the value of ``fig``.

            - If ``fig`` is set, defaults to ``False``.

            - If ``fig`` is not set, defaults to ``True``. This simulates Jupyter's
              approach to matplotlib rendering.

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

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

        use_container_width : bool
            Whether to override the figure's native width with the width of
            the parent container. If ``use_container_width`` is ``True``
            (default), Streamlit sets the width of the figure to match the
            width of the parent container. If ``use_container_width`` is
            ``False``, Streamlit sets the width of the chart to fit its
            contents according to the plotting library, up to the width of the
            parent container.

            .. deprecated::
                ``use_container_width`` is deprecated and will be removed in a
                future release. For ``use_container_width=True``, use
                ``width="stretch"``. For ``use_container_width=False``, use
                ``width="content"``.

        **kwargs : any
            Arguments to pass to Matplotlib's savefig function.

        Example
        -------
        >>> import matplotlib.pyplot as plt
        >>> import streamlit as st
        >>> from numpy.random import default_rng as rng
        >>>
        >>> arr = rng(0).normal(1, 1, size=100)
        >>> fig, ax = plt.subplots()
        >>> ax.hist(arr, bins=20)
        >>>
        >>> st.pyplot(fig)

        .. output::
           https://doc-pyplot.streamlit.app/
           height: 630px

        Matplotlib supports several types of "backends". If you're getting an
        error using Matplotlib with Streamlit, try setting your backend to "TkAgg"::

            echo "backend: TkAgg" >> ~/.matplotlib/matplotlibrc

        For more information, see https://matplotlib.org/faq/usage_faq.html.

        r   r   z
2025-12-31znFor `use_container_width=True`, use `width='stretch'`. For `use_container_width=False`, use `width='content'`.F)include_st_prefix)show_in_browserr   contenta%  
Calling `st.pyplot()` without providing a figure argument has been deprecated
and will be removed in a later version as it requires the use of Matplotlib's
global figure object, which is not thread-safe.

To future-proof this code, you should pass in a figure as shown below:

```python
fig, ax = plt.subplots()
ax.scatter([1, 2, 3], [1, 2, 3])
# other plotting actions...
st.pyplot(fig)
```

If you have a specific use case that requires this functionality, please let us
know via [issue on Github](https://github.com/streamlit/streamlit/issues).
T)allow_content)r   imgs)layout_config)	r   r   r   r
   ImageListProtomarshalldg_get_delta_path_str_enqueue)selffigclear_figurer   r   kwargsr   image_list_protos           X/var/www/html/land_sniper/venv/lib/python3.12/site-packages/streamlit/elements/pyplot.pyr   zPyplotMixin.pyplot&   s    D *$,) N&+ !&
 "5I)E$ & $ 	uD1$51)+GG'')	
 	
 ww(8VV    c                    t        d|       S )zGet our DeltaGenerator.r   )r   )r#   s    r(   r    zPyplotMixin.dg   s     $d++r)   )NN)r$   Figure | Noner%   bool | Noner   r   r   r,   r&   r   returnr   )r-   r   )__name__
__module____qualname__r   r   propertyr     r)   r(   r   r   %   s    H "$(OW
 !+/OWOW "OW
 OW )OW OW 
OW OWb , ,r)   r   c           
        	 dd l m} |j                          |s|d}t	        d|      }dddd}|j                         D 	ci c]  \  }}	||j                  ||	       }}}	|j                  |       t        j                         }
 |j                  |
fi | t        | |
d ||d	d
d       |r|j                          y y # t        $ r t        d      w xY wc c}	}w )Nr   z$pyplot() command requires matplotlibTr   tight   png)bbox_inchesdpiformatFRGBPNG)coordinatesimagecaptionr   
proto_imgsclampchannelsoutput_format)matplotlib.pyplotr   ioffImportErrorr   itemsgetupdateioBytesIOsavefigr	   clf)r<   r'   r   r$   r%   r&   pltoptionsabr=   s              r(   r   r      s    B'
 L8S!
 &cUCG 07}}?tq!q&**Q""?G?
MM'JJLECKK  ##	 	 K  B@AAB$ @s   C CC)NT)r<   strr'   r   r   r
   r$   r+   r%   r,   r&   r   r-   None)__doc__
__future__r   rI   typingr   r   r   streamlit.deprecation_utilr   r   "streamlit.elements.lib.image_utilsr	   #streamlit.elements.lib.layout_utilsr
   r   r   streamlit.proto.Image_pb2r   r   streamlit.runtime.metrics_utilr   matplotlib.figurer   streamlit.delta_generatorr   r   r   r2   r)   r(   <module>r]      s    6 " 	 + + ? S S A 9(8V, V,z  $22$2  2 
	2
 2 2 
2r)   