
    P/Phn(                     r   d Z ddlmZ ddlZddlmZmZ ddlmZ	 ddl
mZ ddlmZ ddlmZ ddlmZ ej        d	         Zd
 Z G d de          Z e e                      Z e                                e            ee          Z ee          Z ej        ddd          dd            Zd ZdS )a|  
Builtin colormaps, colormap handling utilities, and the `ScalarMappable` mixin.

.. seealso::

  :doc:`/gallery/color/colormap_reference` for a list of builtin colormaps.

  :ref:`colormap-manipulation` for examples of how to make
  colormaps.

  :ref:`colormaps` an in-depth discussion of choosing
  colormaps.

  :ref:`colormapnorms` for more details about data normalization.
    )MappingN)_apicolors)_ScalarMappable)datad)cmaps)cmap_familiesz	image.lutc                  *   i t           } t          j                    D ]l\  }}d|v rt          j        ||t
                    nDd|v rt          j        |d         |          n%t          j                            ||t
                    | |<   mddddd}|                                D ]+\  }}| |                                         }||_	        || |<   ,t          |                                           D ] }|                                }|| |j	        <   !| S )zw
    Generate a dict mapping standard colormap names to standard colormaps, as
    well as the reversed colormaps.
    redlistedgray	gist_gray	gist_yargGreys)grey	gist_grey	gist_yergGrays)cmaps_listedr   itemsr   LinearSegmentedColormap_LUTSIZEListedColormap	from_listcopynamelistvaluesreversed)cmap_dr   specaliasesaliasoriginal_namecmaprmaps           M/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/cm.py_gen_cmap_registryr(       s6   
 Fkmm L L
d }} *4x@@@ 4 !$x.$777*44T4JJ 	t    G !(  }m$))++	u V]]__%% ! !}} tyM    c                   P    e Zd ZdZd Zd Zd Zd Zd Zd Z	dd	d
dZ
d Zd ZdS )ColormapRegistrya  
    Container for colormaps that are known to Matplotlib by name.

    The universal registry instance is `matplotlib.colormaps`. There should be
    no need for users to instantiate `.ColormapRegistry` themselves.

    Read access uses a dict-like interface mapping names to `.Colormap`\s::

        import matplotlib as mpl
        cmap = mpl.colormaps['viridis']

    Returned `.Colormap`\s are copies, so that their modification does not
    change the global definition of the colormap.

    Additional colormaps can be added via `.ColormapRegistry.register`::

        mpl.colormaps.register(my_colormap)

    To get a list of all registered colormaps, you can do::

        from matplotlib import colormaps
        list(colormaps)
    c                 <    || _         t          |          | _        d S N)_cmapstuple_builtin_cmaps)selfr   s     r'   __init__zColormapRegistry.__init__Z   s    #Ellr)   c                     	 | j         |                                         S # t          $ r t          |d          d w xY w)Nz is not a known colormap name)r.   r   KeyError)r1   items     r'   __getitem__zColormapRegistry.__getitem__^   sY    	O;t$))+++ 	O 	O 	OdCCCDD$N	Os   ! ?c                 *    t          | j                  S r-   )iterr.   r1   s    r'   __iter__zColormapRegistry.__iter__d   s    DK   r)   c                 *    t          | j                  S r-   )lenr.   r9   s    r'   __len__zColormapRegistry.__len__g   s    4;r)   c                 F    dd                     d | D                       z   S )Nz'ColormapRegistry; available colormaps:
z, c              3   "   K   | ]
}d | d V  dS )'N ).0r   s     r'   	<genexpr>z+ColormapRegistry.__str__.<locals>.<genexpr>l   s*      77$+d+++777777r)   )joinr9   s    r'   __str__zColormapRegistry.__str__j   s-    :		77$777778 	9r)   c                      t          |           S )z
        Return a list of the registered colormap names.

        This exists only for backward-compatibility in `.pyplot` which had a
        ``plt.colormaps()`` method. The recommended way to get this list is
        now ``list(colormaps)``.
        )r   r9   s    r'   __call__zColormapRegistry.__call__n   s     Dzzr)   NF)r   forcec                ~   t          j        t          j        |           |p|j        }|| v rI|st          d| d          || j        v rt          d|d          t          j        d|d           |                                | j	        |<   | j	        |         j        |k    r|| j	        |         _        dS dS )	a  
        Register a new colormap.

        The colormap name can then be used as a string argument to any ``cmap``
        parameter in Matplotlib. It is also available in ``pyplot.get_cmap``.

        The colormap registry stores a copy of the given colormap, so that
        future changes to the original colormap instance do not affect the
        registered colormap. Think of this as the registry taking a snapshot
        of the colormap at registration.

        Parameters
        ----------
        cmap : matplotlib.colors.Colormap
            The colormap to register.

        name : str, optional
            The name for the colormap. If not given, ``cmap.name`` is used.

        force : bool, default: False
            If False, a ValueError is raised if trying to overwrite an already
            registered name. True supports overwriting registered colormaps
            other than the builtin colormaps.
        r%   zA colormap named "z" is already registered.z Re-registering the builtin cmap z is not allowed.zOverwriting the cmap z" that was already in the registry.N)
r   check_isinstancer   Colormapr   
ValueErrorr0   warn_externalr   r.   )r1   r%   r   rH   s       r'   registerzColormapRegistry.registerx   s   2 	foD9999 ty4<< > !GGGGI I I,,,  "=$("= "= "= > > >   Ct  C  C  C D D D !IIKKD ;t!T))%)DK""" *)r)   c                 t    || j         v rt          d|d          | j                            |d           dS )a  
        Remove a colormap from the registry.

        You cannot remove built-in colormaps.

        If the named colormap is not registered, returns with no error, raises
        if you try to de-register a default colormap.

        .. warning::

            Colormap names are currently a shared namespace that may be used
            by multiple packages. Use `unregister` only if you know you
            have registered that name before. In particular, do not
            unregister just in case to clean the name before registering a
            new colormap.

        Parameters
        ----------
        name : str
            The name of the colormap to be removed.

        Raises
        ------
        ValueError
            If you try to remove a default built-in colormap.
        zcannot unregister z which is a builtin colormap.N)r0   rM   r.   pop)r1   r   s     r'   
unregisterzColormapRegistry.unregister   sV    6 4&&& )$ ) ) ) * * *d#####r)   c           	      B   || t           j        d                  S t          |t          j                  r|S t          |t
                    r0t          j        t          t                    |           | |         S t          dd|dt          |           z             )a  
        Return a color map specified through *cmap*.

        Parameters
        ----------
        cmap : str or `~matplotlib.colors.Colormap` or None

            - if a `.Colormap`, return it
            - if a string, look it up in ``mpl.colormaps``
            - if None, return the Colormap defined in :rc:`image.cmap`

        Returns
        -------
        Colormap
        N
image.cmaprJ   z<get_cmap expects None or an instance of a str or Colormap . zyou passed z	 of type )mplrcParams
isinstancer   rL   strr   check_in_listsorted
_colormaps	TypeErrortype)r1   r%   s     r'   get_cmapzColormapRegistry.get_cmap   s    " <\233 dFO,, 	KdC   	vj11====:J7$774::778
 
 	
r)   )__name__
__module____qualname____doc__r2   r6   r:   r=   rE   rG   rO   rR   r^   rA   r)   r'   r+   r+   B   s         .+ + +O O O! ! !     9 9 9   &* 0* 0* 0* 0* 0*d$ $ $@
 
 
 
 
r)   r+   z3.7z3.11z^``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()``)removalalternativec                    | t           j        d         } t          | t          j                  r| S t          j        t          t                    |            |t          |          S t          |          	                    |          S )ah  
    Get a colormap instance, defaulting to rc values if *name* is None.

    Parameters
    ----------
    name : `~matplotlib.colors.Colormap` or str or None, default: None
        If a `.Colormap` instance, it will be returned. Otherwise, the name of
        a colormap known to Matplotlib, which will be resampled by *lut*. The
        default, None, means :rc:`image.cmap`.
    lut : int or None, default: None
        If *name* is not already a Colormap instance and *lut* is not None, the
        colormap will be resampled to have *lut* entries in the lookup table.

    Returns
    -------
    Colormap
    NrT   )r   )
rU   rV   rW   r   rL   r   rY   rZ   r[   	resampled)r   luts     r'   r^   r^      su    0 ||L)$(( vj))5555
{$$))#...r)   c                     t          | t          j                  r| S | | nt          j        d         }|t
          vr(t          j        t          t
                    |           t          j	        |         S )ao  
    Ensure that we have a `.Colormap` object.

    For internal use to preserve type stability of errors.

    Parameters
    ----------
    cmap : None, str, Colormap

        - if a `Colormap`, return it
        - if a string, look it up in mpl.colormaps
        - if None, look up the default color map in mpl.colormaps

    Returns
    -------
    Colormap

    NrT   rJ   )
rW   r   rL   rU   rV   r[   r   rY   rZ   	colormaps)r%   	cmap_names     r'   _ensure_cmaprk     sj    & $(( (cl<.HI 
""6*--I>>>>=##r)   )NN) rb   collections.abcr   
matplotlibrU   r   r   matplotlib.colorizerr   ScalarMappablematplotlib._cmr   matplotlib._cm_listedr   r   matplotlib._cm_multivarr	   multivar_cmapsmatplotlib._cm_bivarbivar_cmapsrV   r   r(   r+   r[   globalsupdate_multivar_colormaps_bivar_colormaps
deprecatedr^   rk   rA   r)   r'   <module>r{      s     $ # # # # #     # # # # # # # # B B B B B B             7 7 7 7 7 7 C C C C C C 5 5 5 5 5 5 <$  Df
 f
 f
 f
 f
w f
 f
 f
X 002233
 		     &&~66 ##K00  	,  / / / /:$ $ $ $ $r)   