o
    h                     @   s\   d dl mZ d dlmZ G dd deZG dd deZG dd deZG d	d
 d
eZdS )    )cbook)Artistc                   @   sX   e Zd ZdZdd Zdd ZdddZd	d
 Zdd Ze	j
Z
e	jZe	jZe	jZe	jZdS )	Containerz
    Base class for containers.

    Containers are classes that collect semantically related Artists such as
    the bars of a bar plot.
    c                 C   s   dt | j dt|  dS )N<z object of z	 artists>)type__name__lenself r   h/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/matplotlib/container.py__repr__   s   zContainer.__repr__c                 O   s   t | |d S )Nr   )tuple__new__)clsargskwargsr   r   r   r      s   zContainer.__new__Nc                 C   s6   t jdgd| _d | _|d urt|| _d S d | _d S )Npchanged)signals)r   CallbackRegistry
_callbacks_remove_methodstr_label)r
   kllabelr   r   r   __init__   s    zContainer.__init__c                 C   s@   t j| dd dD ]
}|d ur|  q	| jr| |  d S d S )Nc                 S   s
   t | tS N)
isinstancer   )xr   r   r   <lambda>   s   
 z"Container.remove.<locals>.<lambda>)scalarp)r   flattenremover   )r
   cr   r   r   r#      s   
zContainer.removec                 C   s   dd t | D S )Nc                 S   s   g | ]}|d ur|qS r   r   ).0childr   r   r   
<listcomp>!   s    z*Container.get_children.<locals>.<listcomp>)r   r"   r	   r   r   r   get_children    s   zContainer.get_childrenr   )r   
__module____qualname____doc__r   r   r   r#   r(   r   	get_label	set_labeladd_callbackremove_callbackr   r   r   r   r   r      s    

r   c                       s*   e Zd ZdZdddd fddZ  ZS )BarContainera4  
    Container for the artists of bar plots (e.g. created by `.Axes.bar`).

    The container can be treated as a tuple of the *patches* themselves.
    Additionally, you can access these and further parameters by the
    attributes.

    Attributes
    ----------
    patches : list of :class:`~matplotlib.patches.Rectangle`
        The artists of the bars.

    errorbar : None or :class:`~matplotlib.container.ErrorbarContainer`
        A container for the error bar artists if error bars are present.
        *None* otherwise.

    datavalues : None or array-like
        The underlying data values corresponding to the bars.

    orientation : {'vertical', 'horizontal'}, default: None
        If 'vertical', the bars are assumed to be vertical.
        If 'horizontal', the bars are assumed to be horizontal.

    N)
datavaluesorientationc                   s0   || _ || _|| _|| _t j|fi | d S r   )patcheserrorbarr1   r2   superr   )r
   r3   r4   r1   r2   r   	__class__r   r   r   D   s
   zBarContainer.__init__r   r   r)   r*   r+   r   __classcell__r   r   r6   r   r0   *   s
    r0   c                       s"   e Zd ZdZd fdd	Z  ZS )ErrorbarContainera  
    Container for the artists of error bars (e.g. created by `.Axes.errorbar`).

    The container can be treated as the *lines* tuple itself.
    Additionally, you can access these and further parameters by the
    attributes.

    Attributes
    ----------
    lines : tuple
        Tuple of ``(data_line, caplines, barlinecols)``.

        - data_line : A `~matplotlib.lines.Line2D` instance of x, y plot markers
          and/or line.
        - caplines : A tuple of `~matplotlib.lines.Line2D` instances of the error
          bar caps.
        - barlinecols : A tuple of `~matplotlib.collections.LineCollection` with the
          horizontal and vertical error ranges.

    has_xerr, has_yerr : bool
        ``True`` if the errorbar has x/y errors.

    Fc                    s*   || _ || _|| _t j|fi | d S r   )lineshas_xerrhas_yerrr5   r   )r
   r;   r<   r=   r   r6   r   r   r   f   s   zErrorbarContainer.__init__)FFr8   r   r   r6   r   r:   M   s    r:   c                       s    e Zd ZdZ fddZ  ZS )StemContainera  
    Container for the artists created in a :meth:`.Axes.stem` plot.

    The container can be treated like a namedtuple ``(markerline, stemlines,
    baseline)``.

    Attributes
    ----------
    markerline : `~matplotlib.lines.Line2D`
        The artist of the markers at the stem heads.

    stemlines : `~matplotlib.collections.LineCollection`
        The artists of the vertical lines for all stems.

    baseline : `~matplotlib.lines.Line2D`
        The artist of the horizontal baseline.
    c                    s4   |\}}}|| _ || _|| _t j|fi | dS )aZ  
        Parameters
        ----------
        markerline_stemlines_baseline : tuple
            Tuple of ``(markerline, stemlines, baseline)``.
            ``markerline`` contains the `.Line2D` of the markers,
            ``stemlines`` is a `.LineCollection` of the main lines,
            ``baseline`` is the `.Line2D` of the baseline.
        N)
markerline	stemlinesbaseliner5   r   )r
   markerline_stemlines_baseliner   r?   r@   rA   r6   r   r   r      s
   

zStemContainer.__init__r8   r   r   r6   r   r>   m   s    r>   N)	
matplotlibr   matplotlib.artistr   r   r   r0   r:   r>   r   r   r   r   <module>   s    %# 