o
    hn(                     @   s   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
d ZG dd deZee Ze e eeZeeZejdddddddZd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                  C   s   i t } t D ]%\}}d|v rt||tnd|v r#t|d |ntj||t| |< qddddd}| D ]\}}| |  }||_	|| |< q9t
|  D ]}| }|| |j	< qQ| 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rmap r%   a/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/matplotlib/cm.py_gen_cmap_registry    s*   

r'   c                   @   s`   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dddddZ
dd Zd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                 C   s   || _ t|| _d S N)_cmapstuple_builtin_cmaps)selfr   r%   r%   r&   __init__Z   s   zColormapRegistry.__init__c                 C   s0   z| j |  W S  ty   t|dd w )Nz is not a known colormap name)r*   r   KeyError)r-   itemr%   r%   r&   __getitem__^   s
   zColormapRegistry.__getitem__c                 C   
   t | jS r)   )iterr*   r-   r%   r%   r&   __iter__d      
zColormapRegistry.__iter__c                 C   r2   r)   )lenr*   r4   r%   r%   r&   __len__g   r6   zColormapRegistry.__len__c                 C   s   dd dd | D  S )Nz'ColormapRegistry; available colormaps:
z, c                 s   s    | ]	}d | d V  qdS )'Nr%   ).0r   r%   r%   r&   	<genexpr>l   s    z+ColormapRegistry.__str__.<locals>.<genexpr>)joinr4   r%   r%   r&   __str__j   s   zColormapRegistry.__str__c                 C   s   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   r4   r%   r%   r&   __call__n   s   zColormapRegistry.__call__NF)r   forcec                C   s   t jtj|d |p|j}|| v r1|std| d|| jv r(td|dt d|d | | j	|< | j	| j|krH|| 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   
ValueErrorr,   warn_externalr   r*   )r-   r#   r   r?   r%   r%   r&   registerx   s    



zColormapRegistry.registerc                 C   s,   || 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)r,   rC   r*   pop)r-   r   r%   r%   r&   
unregister   s   
zColormapRegistry.unregisterc                 C   sf   |du r| t jd  S t|tjr|S t|tr%tjtt	|d | | S t
dd|dt|  )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.cmapr@   z<get_cmap expects None or an instance of a str or Colormap . zyou passed z	 of type )mplrcParams
isinstancer   rB   strr   check_in_listsorted
_colormaps	TypeErrortype)r-   r#   r%   r%   r&   get_cmap   s   
zColormapRegistry.get_cmap)__name__
__module____qualname____doc__r.   r1   r5   r8   r=   r>   rE   rG   rR   r%   r%   r%   r&   r(   B   s    
2 r(   z3.7z3.11z^``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()``)removalalternativec                 C   sR   | du r	t jd } t| tjr| S tjtt| d |du r"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
    NrH   )r   )
rI   rJ   rK   r   rB   r   rM   rN   rO   	resampled)r   lutr%   r%   r&   rR      s   
rR   c                 C   sJ   t | tjr| S | dur| ntjd }|tvr tjtt|d 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

    NrH   r@   )
rK   r   rB   rI   rJ   rO   r   rM   rN   	colormaps)r#   	cmap_namer%   r%   r&   _ensure_cmap  s   
r]   )NN) rV   collections.abcr   
matplotlibrI   r   r   matplotlib.colorizerr   ScalarMappablematplotlib._cmr   matplotlib._cm_listedr   r   matplotlib._cm_multivarr   multivar_cmapsmatplotlib._cm_bivarbivar_cmapsrJ   r   r'   r(   rO   globalsupdate_multivar_colormaps_bivar_colormaps
deprecatedrR   r]   r%   r%   r%   r&   <module>   s0    
" 
-