B
    ]t\[              0  @   s  d Z ddlmZmZ ddlmZ ddlZddlZddlZddl	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mZ d
dddddddddddddgZdddddddgZee ZG dd  d eZdd"d#Zd$d% ZeeZd&d' Zd(d) Zd*d+ Zd,d- Z ee Z!d.d/ Z"d0d1 Z#d2d3 Z$d4d5 Z%d6d7 Z&d8d9 Z'd:d; Z(ed<ed=d>Z)e Z*d?d@ Z+dAdB Z,dCdD Z-dEdF Z.dGZ/dHZ0G dIdJ dJeZ1G dKdL dLeZ2dMdN Z3dOdP Z4dQdR Z5dSdT Z6ee6d=dUZ7dVe7_ dWdX Z8ee9Z:dYe:_ edZd[d\gZ;d]d^ Z<d_d` Z=dadb Z>ee>Z?dcdd Z@ededfdgdhdidjdkgZAedldmB ZCedndodpdqdrgZDedsdtdudvdwdxgZEdydz ZFd{d| ZGed}d~dddddddddddddddddddddddddgd=d>ZHdd ZIeddddgd=d>ZJeeJZKeddddgd=d>ZLeeLZMedddddvdudgZNeeNZOedddgd=d>ZPdd ZQeeQZReddddddddddddtgd=d>ZSdd ZTdd ZUeddddgZVeddddddddgZWeddddddgZXeddddgZYeddddgZZdd҄ Z[ddԄ Z\G ddք deZ]eddddgZ^ddۄ Z_ee_Z`ee1d=d܍Zaee5d=dUe!e:e7e7eKeMeOe7e!e!e7eRe!e:e`eadݜZbdddddddddd	Zcdd Zdd Zddd Zedd Zfdd Zgedeh ei dd=d>Zjdd Zke*e+gd=egde,gde-gde&gdeggd=egde&gd=egde.gdegd!egde8gdoeDgde8gde gdekgde6gde8gd~e4gd~e4gd e gde gd=egdeJgdeJgdeLgdeLgddge1d=d܍gddddge1d=d܍gddge1d=d܍gd=egdeNgd e gde6gd!egde6gd=egde6gd e gdeegd!egd=egdeFgde'gd!egd!egd=egd=egd=egd!egde6gd	e8gde4gde6gde gdekgd e gde6gd e gdekgde6gd e gdekgde6gd e gdekgd
e6gd e gdekgde6gde8gde6gde6gde gdekgd e gdge:gde8gde8gde8gde8gde gddddddddddddddge:gddd d!d"d#d$d%d&d'dge:gd(d)d*d+d,d-d.ge:gd/d0d1d2d3d4d5d6ge:gd7d8d9d:d;d<d=d>d?d@g
e:gde6gd!egd=egdge:gd!egdegd~eUgdAe&gd=egd.e@gdBe@gd@e@gdCe@gdDe@gdBe@gdfeAgdEeCgd=egdFe<gdGe8gdHe8gdIe&gdJe8gd=egd=egdekgd=egde gdKe$gdLe6gde6gdMe gd=egd=egd=egd=egdNe>gde8gdOe gd!egdeYgde^gdPe>gdQe gde8gde6gdRdSge2dTgd!egd!egde&gd=egdUe&gd=egedސdVdWdXdYdZd[d\d]d^d_g
edgd`edad`dbggdce]ddd=d=ddgdce]ddd=d=ddgd=egd=egd	e8gdee8gdfe8gdge8gdhe8gdie8gdje8gdke8gd=egdeSgde&gde&gdPe>gde=gd e gd!egd=egdMe"gdle gdme gdne gdoe gdMe gdme gdne gdpe3gdqe3gd!egd=egd!egd=egdre gdTe gdMe gdse gdre gdte gde6gd!egd=egd=egd=egd=egdPe>gdue8gdteEgd=egd!egd=egd!egdre gdTe gdMe gdse gdre gdte gde6gd!egd=egd=egd=egd=egdPe>gdue8gdxeEgdve6gdekgdMe gd e gdNe>gde8gddwge1dTgdxe gdLe6gdLe6gd=egd!egdye&gdze]ddd=d=ddgd{e]ddd=d=ddgd|e]ddd=d=ddgd}e]ddd=d=ddgd~e]ddd=d!ddgd~e]ddd=d!ddgd!egde]ddd=d!ddgde]ddd=d!ddgde gde gde%gdLe6gdLe6gd=egd\e;gde&gdeGgde[gde gde8gd!egd!egdeHgd!egd!eIgde&gde(gde&gd!egd!egde(gd!egdeVgd=egdge:gd=egdeTgde#gd!egde8gd=egde]dd gd=egde\gg egde&gde:gdddge:gdddge:gddge:gdge:gd	ge:gddge:gdddge:gdddge:gdge:gdge:gdge:gddge:gdge:gdge:gddge:gde8gdeZgdye gdeWgde8gde&gdeXgg e:gdefgg e:gdefgg e:gdefgg e:gd!egd/ZlemdkrelZndend d< xhenD ]`Zoeneo d eneo d eneo d ks~epdeoeneo d eneo d eneo d f  q~W dS (  a  
The rcsetup module contains the default values and the validation code for
customization using matplotlib's rc settings.

Each rc setting is assigned a default value and a function used to validate
any attempted changes to that setting. The default values and validation
functions are defined in the rcsetup module, and are used to construct the
rcParams global object which stores the settings and is referenced throughout
matplotlib.

These default values should be consistent with the default matplotlibrc file
that actually reflects the values given here. Any additions or deletions to the
parameter set listed here should also be visited to the
:file:`matplotlibrc.template` in matplotlib's root source directory.
    )IterableMapping)reduceN)cbook)	ls_mapper)parse_fontconfig_pattern)is_color_like)CyclercyclerZGTK3AggZ	GTK3CairoZMacOSXZnbAggZQt4AggZQt4CairoZQt5AggZQt5CairoZTkAggZTkCairoZWebAggZWXZWXAggZWXCairoZaggZcairoZpdfZpgfZpsZsvgtemplatec               @   s   e Zd ZdddZdd ZdS )ValidateInStringsFc                s0   || _ | _fdd  fdd|D | _dS )z valid is a list of legal stringsc                s    r|   S | S d S )N)lower)s)
ignorecase 1lib/python3.7/site-packages/matplotlib/rcsetup.pyfunc4   s    z(ValidateInStrings.__init__.<locals>.funcc                s   i | ]}| |qS r   r   ).0k)r   r   r   
<dictcomp>9   s    z.ValidateInStrings.__init__.<locals>.<dictcomp>N)keyr   valid)selfr   r   r   r   )r   r   r   __init__/   s    zValidateInStrings.__init__c             C   sD   | j r| }|| jkr"| j| S td| j|t| j f d S )Nz/Unrecognized %s string %r: valid strings are %s)r   r   r   
ValueErrorr   listvalues)r   r   r   r   r   __call__;   s    

zValidateInStrings.__call__N)F)__name__
__module____qualname__r   r   r   r   r   r   r   .   s   
r   Fc                sT    fdd}yd j|_W n& tk
rF   d tj|_Y nX j|_|S )Nc                s   t | trRyfdd| dD S  tk
rN    rHfdd| D S  Y qX n4t | trxt | tsxfdd| D S td| d S )Nc                s    g | ]}|  r |  qS r   )strip)r   v)scalar_validatorr   r   
<listcomp>H   s    z1_listify_validator.<locals>.f.<locals>.<listcomp>,c                s    g | ]}|  r |  qS r   )r!   )r   r"   )r#   r   r   r$   N   s    c                s"   g | ]}t |tr|r |qS r   )
isinstancestr)r   r"   )r#   r   r   r$   Z   s    z7{!r} must be of type: string or non-dictionary iterable)r&   r'   split	Exceptionr   r   r   format)r   )allow_stringlistr#   r   r   fE   s    

z_listify_validator.<locals>.fz{}listz{}List)r*   r   AttributeErrortype__doc__)r#   r+   r,   r   )r+   r#   r   _listify_validatorD   s    r0   c             C   s   | S )Nr   )r   r   r   r   validate_anyg   s    r1   c             C   s,   | dkrdS t j| r| S td|  dS )z$If s is a path, return s, else FalseNz+"%s" should be a path but it does not exist)ospathexistsRuntimeError)r   r   r   r   validate_path_existsl   s
    r6   c             C   s:   t | tr|  } | dkrdS | dkr*dS td|  dS )zConvert b to a boolean or raise)tyyesontrue1   TT)r,   nnoofffalse0r   FFz!Could not convert "%s" to booleanN)r&   r'   r   r   )br   r   r   validate_boolv   s    
rD   c             C   sN   t | tr|  } | dks"| dkr&dS | dkr2dS | dkr>dS td|  dS )zConvert b to a boolean or raiseNnone)r7   r8   r9   r:   r;   r<   r=   TT)r,   r>   r?   r@   rA   rB   r   FFz!Could not convert "%s" to boolean)r&   r'   r   r   )rC   r   r   r   validate_bool_maybe_none   s    
rF   c             C   s.   yt | S  tk
r(   td|  Y nX dS )zconvert s to float or raisezCould not convert "%s" to floatN)floatr   )r   r   r   r   validate_float   s    rH   c             C   sB   | dks| dkrdS yt | S  tk
r<   td|  Y nX dS )z!convert s to float, None or raiseNNonez'Could not convert "%s" to float or None)rG   r   )r   r   r   r   validate_float_or_None   s    rJ   c             C   s:   | dkrdS yt | S  tk
r4   td|  Y nX dS )zconvert s to string or raiseNz Could not convert "%s" to string)validate_stringr   )r   r   r   r   validate_string_or_None   s    rL   c             C   sN   yt | S  tk
r<   t| tr8|  } | dr8dS Y nX td|  d S )Nlinez2%s cannot be interpreted as True, False, or "line")rD   r   r&   r'   r   
startswith)r   r   r   r   validate_axisbelow   s    


rO   c             C   s>   | dkr| S yt | S  tk
r8   td| | f Y nX dS )z;confirm s is string 'figure' or convert s to float or raisefigurez>"%s" is not string "figure" or could not convert "%s" to floatN)rG   r   )r   r   r   r   validate_dpi   s    rQ   c             C   s.   yt | S  tk
r(   td|  Y nX dS )zconvert s to int or raisezCould not convert "%s" to intN)intr   )r   r   r   r   validate_int   s    rS   c             C   sF   | dkrd} | dkrdS yt | S  tk
r@   td|  Y nX dS )z(if not None, tries to validate as an intrI   NzCould not convert "%s" to int)rR   r   )r   r   r   r   validate_int_or_None   s    rT   c             C   s   ddd}yt | }W nF tk
r\   y||   S  tk
rV   tdt| Y nX Y n&X || kr~tdt|  |S dS )z_
    confirm that this is a Postscript of PDF font type that we know how to
    convert to
       *   )Ztype3Ztruetypez*Supported Postscript/PDF font types are %sN)rS   r   r   KeyErrorr   r   )r   Z	fonttypesZfonttyper   r   r   validate_fonttype   s    rX   backendT)r   c             C   s"   | t ks| dr| nt| }|S )Nz	module://)_auto_backend_sentinelrN   _validate_standard_backends)r   rY   r   r   r   validate_backend   s    r\   c             C   s    | d krd S t ddddg| S )Nzbackend.qt4ZPyQt4ZPySideZPyQt4v2)r   )r   r   r   r   validate_qt4   s    r]   c             C   s   | d krd S t dddg| S )Nzbackend.qt5ZPyQt5ZPySide2)r   )r   r   r   r   validate_qt5  s    r^   c             C   s   t ddddgdd}|| S )NtoolbarrI   toolbar2ZtoolmanagerT)r   )r   )r   	validatorr   r   r   validate_toolbar  s
    rb   zBYou must supply exactly {n} values, you provided {num} values: {s}zbYou must supply exactly {n} comma-separated values, you provided {num} comma-separated values: {s}c               @   s   e Zd ZdddZdd ZdS )validate_nseq_floatNFc             C   s   || _ || _d S )N)r>   
allow_none)r   r>   rd   r   r   r   r     s    zvalidate_nseq_float.__init__c                s   t |tr$dd |dD }t}nt} jdk	rZt| jkrZt|j jt||dy fdd|D S  tk
r   tdY nX dS )z!return a seq of n floats or raisec             S   s   g | ]}|  qS r   )r!   )r   xr   r   r   r$   #  s    z0validate_nseq_float.__call__.<locals>.<listcomp>r%   N)r>   numr   c                s&   g | ]} j r|d k	rt|n|qS )N)rd   rG   )r   val)r   r   r   r$   ,  s   z'Could not convert all entries to floats)	r&   r'   r(   _str_err_msg_seq_err_msgr>   lenr   r*   )r   r   err_msgr   )r   r   r      s    

zvalidate_nseq_float.__call__)NF)r   r   r    r   r   r   r   r   r   rc     s   
rc   c               @   s   e Zd ZdddZdd ZdS )validate_nseq_intNc             C   s
   || _ d S )N)r>   )r   r>   r   r   r   r   5  s    zvalidate_nseq_int.__init__c             C   s   t |tr$dd |dD }t}nt}| jdk	rZt|| jkrZt|j| jt||dydd |D S  tk
r   tdY nX dS )zreturn a seq of n ints or raisec             S   s   g | ]}|  qS r   )r!   )r   re   r   r   r   r$   ;  s    z.validate_nseq_int.__call__.<locals>.<listcomp>r%   N)r>   rf   r   c             S   s   g | ]}t |qS r   )rR   )r   rg   r   r   r   r$   D  s    z%Could not convert all entries to ints)	r&   r'   r(   rh   ri   r>   rj   r   r*   )r   r   rk   r   r   r   r   8  s    
zvalidate_nseq_int.__call__)N)r   r   r    r   r   r   r   r   r   rl   4  s   
rl   c             C   s   | dkr| S t | S )zreturn a valid color arginherit)validate_color)r   r   r   r   validate_color_or_inheritI  s    ro   c             C   s   | dkr| S t | S )Nauto)rn   )r   r   r   r   validate_color_or_autoP  s    rq   c             C   sf   t | tr0td| }|d k	r^tdj| dn.t | tr^td| }|d k	r^tdj| dt| S )Ns   ^C[0-9]$z3Can not put cycle reference ({cn!r}) in prop_cycler)Zcnz^C[0-9]$)r&   bytesrematchr   r*   r'   rn   )r   rt   r   r   r   validate_color_for_prop_cycleV  s    


ru   c             C   s  y|   dkrdS W n tk
r(   Y nX t| tr`t| dksLt| dkr`d|  }t|r`|S t| rl| S | }d}| ddkrddd	 | D }|d}t|d
krd}n,ydd	 |D }W n t	k
r   d}Y nX |st|r|S t	d| |f dS )zreturn a valid color argrE         # r%   r   c             S   s(   g | ] }|  s |d ks |dkr|qS ).r%   )isdigit)r   cr   r   r   r$   |  s    z"validate_color.<locals>.<listcomp>)rU      z&
Color tuples must be of length 3 or 4c             S   s   g | ]}t |qS r   )rG   )r   rg   r   r   r   r$     s    z(
Could not convert all entries to floatsz#%s does not look like a color arg%sN)
r   r-   r&   r'   rj   r   findjoinr(   r   )r   ZstmpZcolorargmsgvalsr   r   r   rn   f  s4    


rn   )r+   zreturn a list of colorspecsc             C   s   t | ttfr| S t| S d S )N)r&   r'   )r   r   r   r   rK     s    rK   zreturn a listZorientationZ	landscapeZportraitc             C   s6   | dkr| S yt | S  tk
r0   tdY nX d S )N)rp   equalz not a valid aspect specification)rG   r   )r   r   r   r   validate_aspect  s    r   c             C   s    | d ks| dkrd S t | S d S )NrI   )validate_fontsize)r   r   r   r   validate_fontsize_None  s    r   c          	   C   sl   ddddddddd	g	}t | tr(|  } | |kr4| S yt| S  tk
rf   td
| d|f Y nX d S )Nzxx-smallzx-smallZsmallmediumlargezx-largezxx-largeZsmallerZlargerz5%s is not a valid font size. Valid font sizes are %s.z, )r&   r'   r   rG   r   r   )r   Z	fontsizesr   r   r   r     s    

r   c             C   s   t |  | S )N)r   )r   r   r   r   validate_font_properties  s    r   ZfontsetZ
dejavusansZdejavuserifcmZstixZstixsansZcustomdefaultz6rm cal it tt sf bf default bb frak circled scr regularverboseZsilentZhelpfuldebugzdebug-annoyingZ	alignmentcentertopZbottomZbaselineZcenter_baselinec             C   sd   | dkrdS yt d| }|S  ttfk
r^   yt| }|S  tk
rX   tdY nX Y nX d S )Nrange   z:Not a valid whisker value ['range', float, (float, float)])rc   	TypeErrorr   rG   )r   r"   r   r   r   validate_whiskers  s    r   c             C   s   t | } | dkrd} | S )Nrp   png)rK   )valuer   r   r   update_savefig_format  s    r   Zps_papersizerp   ZletterZlegalZledgerZa0Za1Za2Za3Za4Za5Za6Za7Za8Za9Za10Zb0Zb1Zb2Zb3Zb4Zb5Zb6Zb7Zb8Zb9Zb10c             C   sB   t | tr|  } | dkrd S | dkr*dS | dkr6| S tdd S )N)rE   N)rA   FF)ZghostscriptZxpdfzEmatplotlibrc ps.usedistiller must either be none, ghostscript or xpdf)r&   r'   r   r   )r   r   r   r   validate_ps_distiller  s    
r   	joinstyleZmiterroundZbevelcapstyleZbuttZ
projectingzmarkers.fillstyleZfullleftrightrE   Znegative_linestyleZsolidZdashedc             C   s   t | tr| S t | trd}t| d }t| |kr@td| |tkrbtdd | D sbtd|tkrtdd | D std|tk	r|tk	rtd	nDt | t	rtd
d | D stdnt | ttfs| dk	rtd| S )aF  
    Validate the markevery property of a Line2D object.

    Parameters
    ----------
    s : None, int, float, slice, length-2 tuple of ints,
        length-2 tuple of floats, list of ints

    Returns
    -------
    s : None, int, float, slice, length-2 tuple of ints,
        length-2 tuple of floats, list of ints

    r   r   z*'markevery' tuple must have a length of %dc             s   s   | ]}t |tV  qd S )N)r&   rR   )r   er   r   r   	<genexpr>-  s    z%validate_markevery.<locals>.<genexpr>zS'markevery' tuple with first element of type int must have all elements of type intc             s   s   | ]}t |tV  qd S )N)r&   rG   )r   r   r   r   r   r   1  s    zW'markevery' tuple with first element of type float must have all elements of type floatz*'markevery' tuple contains an invalid typec             s   s   | ]}t |tV  qd S )N)r&   rR   )r   r   r   r   r   r   9  s    z3'markevery' list must have all elements of type intNz!'markevery' is of an invalid type)
r&   slicetupler.   rj   r   rR   allrG   r   )r   ZtupMaxLengthZtupTyper   r   r   validate_markevery  s*    




r   Z
legend_locZbestzupper rightz
upper leftz
lower leftzlower rightzcenter leftzcenter rightzlower centerzupper centerc             C   s0   | dkr| S | dkr$t dd | S tdd S )N)rE   r3   Zsvgfontz2.2z1'svgfont' support for svg.fonttype is deprecated.zGUnrecognized svg.fonttype string '{}'; valid strings are 'none', 'path')r   Zwarn_deprecatedr   )r   r   r   r   validate_svg_fonttypeT  s    r   c             C   s,   | dkr| S |   dkr |   S tdd S )N)TF)rp   ZnativeZeitherrE   z6hinting should be 'auto', 'native', 'either' or 'none')r   r   )r   r   r   r   validate_hinting_  s
    r   zpgf.texsystemZxelatexZlualatexZpdflatexzanimation.writerZffmpegZffmpeg_fileZavconvZavconv_fileZimagemagickZimagemagick_fileZhtmlzanimation.frame_formatr   ZjpegZtiffrawZrgbamajorminorZbothzanimation.htmlZhtml5Zjshtmlc             C   sH   t | tr4|  } | dkr| S | dkr*d S tdn| d k	rDtd| S )NZtightstandardz$bbox should be 'tight' or 'standard')r&   r'   r   r   )r   r   r   r   validate_bboxw  s    

r   c             C   s   t | tr|  } | dks"| d kr&d S t | trJtdd | dD }n t | ttfrjtdd | D }t|dkr~td|S )NrE   c             S   s   g | ]}t | qS r   )rG   r!   )r   r"   r   r   r   r$     s    z#validate_sketch.<locals>.<listcomp>r%   c             S   s   g | ]}t |qS r   )rG   )r   r"   r   r   r   r$     s    rU   z7path.sketch must be a tuple (scale, length, randomness))r&   r'   r   r   r(   r   rj   r   )r   resultr   r   r   validate_sketch  s    

r   c               @   s"   e Zd ZdZdddZdd ZdS )	ValidateIntervalz#
    Value must be in interval
    Tc             C   s   || _ || _|| _|| _d S )N)vminvmaxcmincmax)r   r   r   	closedmin	closedmaxr   r   r   r     s    zValidateInterval.__init__c             C   s   yt |}W n  tk
r,   td| Y nX | jrR|| jk rRtd| j|f n"| jst|| jkrttd| j|f | jr|| jkrtd| j|f n"| js|| jkrtd| j|f |S )Nz!Value must be a float; found "%s"zValue must be >= %f; found "%f"zValue must be > %f; found "%f"zValue must be <= %f; found "%f"zValue must be < %f; found "%f")rG   r   r5   r   r   r   r   )r   r   r   r   r   r     s"    zValidateInterval.__call__N)TT)r   r   r    r/   r   r   r   r   r   r   r     s   
r   zaxes.grid.axisre   r8   c             C   sJ   t | tstdt| dddddddd	d
dh
 }|rFtdt| | S )z
    Validate a hatch pattern.
    A hatch pattern string can have any sequence of the following
    characters: ``\ / | - + * . x o O``.

    zHatch pattern must be a string\/|-+*rz   re   oOzUnknown hatch symbol(s): %s)r&   r'   r   setr   )r   unknownr   r   r   validate_hatch  s    
 r   )rd   )color	linewidth	linestyle	facecolor	edgecolorr   r   Z	fillstylemarkerfacecolor
markersizemarkeredgewidthmarkeredgecolorZ	markeveryZalphaZmarkerZhatchZdashesr   r   r   r   r   r   r   r   r   )	r|   ZlwlsZfcZecZmfcZmecZmewZmsc              O   s   | r|rt dn| s"|s"t dt| dkrPt| d tsDt dt| d S t| dkrp| d | d fg}nt| dkrt dn| }g }xR|D ]J\}}t||}t|d}|dkrt d	| ||}|	||f qW t
tjd
d |D S )a+  
    Creates a `~cycler.Cycler` object much like :func:`cycler.cycler`,
    but includes input validation.

    Call signatures::

      cycler(cycler)
      cycler(label=values[, label2=values2[, ...]])
      cycler(label, values)

    Form 1 copies a given `~cycler.Cycler` object.

    Form 2 creates a `~cycler.Cycler` which cycles over one or more
    properties simultaneously. If multiple properties are given, their
    value lists must have the same length.

    Form 3 creates a `~cycler.Cycler` for a single property. This form
    exists for compatibility with the original cycler. Its use is
    discouraged in favor of the kwarg form, i.e. ``cycler(label=values)``.

    Parameters
    ----------
    cycler : Cycler
        Copy constructor for Cycler.

    label : str
        The property key. Must be a valid `.Artist` property.
        For example, 'color' or 'linestyle'. Aliases are allowed,
        such as 'c' for 'color' and 'lw' for 'linewidth'.

    values : iterable
        Finite-length iterable of the property values. These values
        are validated and will raise a ValueError if invalid.

    Returns
    -------
    cycler : Cycler
        A new :class:`~cycler.Cycler` for the given properties.

    Examples
    --------
    Creating a cycler for a single property:

    >>> c = cycler(color=['red', 'green', 'blue'])

    Creating a cycler for simultaneously cycling over multiple properties
    (e.g. red circle, green plus, blue cross):

    >>> c = cycler(color=['red', 'green', 'blue'],
    ...            marker=['o', '+', 'x'])

    zEcycler() can only accept positional OR keyword arguments -- not both.z2cycler() must have positional OR keyword argumentsr=   r   zEIf only one positional argument given, it must  be a Cycler instance.r   z+No more than 2 positional arguments allowedNzUnknown artist property: %sc             s   s   | ]\}}t ||V  qd S )N)ccycler)r   r   r"   r   r   r   r   6  s    zcycler.<locals>.<genexpr>)r   rj   r&   r	   validate_cycleritems_prop_aliasesget_prop_validatorsappendr   operatoradd)argskwargsZpairsZ	validatedpropr   	norm_propra   r   r   r   r
     s,    5

r
   c       	   
   C   s  t | trjy,d| ddkr$tdt| ti d} W n2 tk
rh } ztd| |f W dd}~X Y nX t | trz| }ntd|  |jt	t
t	tB  }|rtd	| t	 }xb|jD ]X}t||}||kr||jkrtd
||||krtd||||g qW t|t|jks.tx(|jD ]}t||}||| q6W x&|  D ]\}}t
| | qfW |S )z>return a Cycler object from a string repr or the object itselfz.__ ry   zG'%s' seems to have dunder methods. Raising an exception for your safety)r
   __builtins__z+'%s' is not a valid cycler construction: %sNz.object was not a string or Cycler instance: %szUnknown artist properties: %sz@Cannot specify both '{0}' and alias '{1}' in the same prop_cyclezKAnother property was already aliased to '{0}'. Collision normalizing '{1}'.)r&   r'   replacer   evalr
   BaseExceptionr	   keysr   r   r   r   r*   updaterj   AssertionErrorZ
change_keyZby_keyr   )	r   r   Zcycler_instZunknownsZcheckerr   r   r   r   r   r   r   r   9  s@    



r   c          	   C   s\   t | dr| S yt| S  ttfk
r0   Y nX yt| S  tk
rN   Y nX tdd S )Nrp   z:'hist.bins' must be 'auto', an int or a sequence of floats)r   Z
_str_equalrR   r   r   validate_floatlist)r   r   r   r   validate_hist_binsz  s    r   c             C   s8   t | tstdddlm} d|kr4|d j  | S )Nzpath must be a (unicode) stringr   )moduleszmatplotlib.animation)r&   r'   r   sysr   ZwritersZ	set_dirty)pr   r   r   r   validate_animation_writer_path  s    
r   c          
   C   s\   | d k	rPdd l }y||  W n, |jk
rJ } ztdW d d }~X Y nX | S tdd S )Nr   z*'webagg.address' is not a valid IP address)socketZ	inet_atonerrorr   )r   r   r   r   r   r   validate_webagg_address  s    r   rI   r   ry   c          	   C   sp   t | tttfrt| S y,t| d dkr8td| dt | fS  tt	fk
rj   td| Y nX dS )zf
    A validator for all possible line styles, the named ones *and*
    the on-off ink sequences.
    r   r   z2the linestyle sequence {!r} is not of even length.Nz2linestyle {!r} is not a valid on-off ink sequence.)
r&   r'   rr   	bytearray_validate_named_linestylerj   r   r*   rc   r   )r   r   r   r   _validate_linestyle  s    
r   i#  z	127.0.0.12   r`   ZUTCz
sys.stdoutg      ?r   ZC0g      ?rv   g@g?g@r=   gffffff?Zblack
   r   ZC1ZC2^z--z
sans-serifZnormalzDejaVu SerifzBitstream Vera SerifzComputer Modern RomanzNew Century SchoolbookzCentury Schoolbook LZUtopiazITC BookmanZBookmanzNimbus Roman No9 LzTimes New RomanZTimesZPalatinoZCharterZserifzDejaVu SanszBitstream Vera SanszComputer Modern Sans SerifzLucida GrandeZVerdanaZGenevaZLucidZArialZ	HelveticazAvant GardezApple ChanceryZTextilezZapf ChanceryZSandz	Script MTZFelipaZcursivezComic Sans MSZChicagoZCharcoalZImpactZWesternz
Humor SansZxkcdZfantasyzDejaVu Sans MonozBitstream Vera Sans MonozComputer Modern TypewriterzAndale MonozNimbus Mono LzCourier NewZCourierZFixedZTerminalZ	monospacerw   Zsanszsans:italicz	sans:bolditr   ZnearestZviridis   upperrM   Zwhiteg?r   g      @r   g      @i   r   r}   z#1f77b4z#ff7f0ez#2ca02cz#d62728z#9467bdz#8c564bz#e377c2z#7f7f7fz#bcbd22z#17becfdataZautolimit_modeZround_numbersg?)r   r   z%Yz%Y-%mz%Y-%m-%dz%m-%d %Hz%d %H:%Mz%H:%M:%Sz%M:%S.%fg?g      ?g       @gffffff?rm   z0.8g      @g333333?g333333@outz#b0b0b0g333333@d      g      ?g?g)\(?g)\(?g?g{Gz?gr.U?rP   _   r   g?~ip  rU   r3   z.matplotlib_pluginsgqq?g        )r,   zctrl+fhrhomer|   Z	backspacer"   r   r   zctrl+szctrl+wzcmd+wqWzcmd+WQgGlr   Laf1zctrl+czcmd+cZh264Zconvert(/  rY   Zbackend_fallbackzbackend.qt4zbackend.qt5zwebagg.portzwebagg.addresszwebagg.open_in_browserzwebagg.port_retriesznbagg.transparentr_   datapathinteractiveZtimezonezverbose.levelzverbose.fileozlines.linewidthzlines.linestylezlines.colorzlines.markerzlines.markerfacecolorzlines.markeredgecolorzlines.markeredgewidthzlines.markersizezlines.antialiasedzlines.dash_joinstylezlines.solid_joinstylezlines.dash_capstylezlines.solid_capstylezlines.dashed_patternzlines.dashdot_patternzlines.dotted_patternzlines.scale_dasheszmarkers.fillstylezpatch.linewidthzpatch.edgecolorzpatch.force_edgecolorzpatch.facecolorzpatch.antialiasedzhatch.colorzhatch.linewidthz	hist.binszboxplot.notchzboxplot.verticalzboxplot.whiskerszboxplot.bootstrapzboxplot.patchartistzboxplot.showmeanszboxplot.showcapszboxplot.showboxzboxplot.showflierszboxplot.meanlinezboxplot.flierprops.colorzboxplot.flierprops.markerz"boxplot.flierprops.markerfacecolorz"boxplot.flierprops.markeredgecolorzboxplot.flierprops.markersizezboxplot.flierprops.linestylezboxplot.flierprops.linewidthzboxplot.boxprops.colorzboxplot.boxprops.linewidthzboxplot.boxprops.linestylezboxplot.whiskerprops.colorzboxplot.whiskerprops.linewidthzboxplot.whiskerprops.linestylezboxplot.capprops.colorzboxplot.capprops.linewidthzboxplot.capprops.linestylezboxplot.medianprops.colorzboxplot.medianprops.linewidthzboxplot.medianprops.linestylezboxplot.meanprops.colorzboxplot.meanprops.markerz!boxplot.meanprops.markerfacecolorz!boxplot.meanprops.markeredgecolorzboxplot.meanprops.markersizezboxplot.meanprops.linestylezboxplot.meanprops.linewidthzfont.familyz
font.stylezfont.variantzfont.stretchzfont.weightz	font.sizez
font.serifzfont.sans-serifzfont.cursivezfont.fantasyzfont.monospacez
text.colorztext.usetexztext.latex.unicodeztext.latex.preambleztext.latex.previewztext.dvipnghackztext.hintingztext.hinting_factorztext.antialiasedzmathtext.calzmathtext.rmzmathtext.ttzmathtext.itzmathtext.bfzmathtext.sfzmathtext.fontsetzmathtext.defaultzmathtext.fallback_to_cmzimage.aspectzimage.interpolationz
image.cmapz	image.lutzimage.originzimage.resamplezimage.composite_imagezcontour.negative_linestylezcontour.corner_maskzerrorbar.capsizezaxes.axisbelowzaxes.facecolorzaxes.edgecolorzaxes.linewidthzaxes.spines.leftzaxes.spines.rightzaxes.spines.bottomzaxes.spines.topzaxes.titlesizezaxes.titleweightzaxes.titlepadz	axes.gridzaxes.grid.whichzaxes.grid.axiszaxes.labelsizezaxes.labelpadzaxes.labelweightzaxes.labelcolorzaxes.formatter.limitszaxes.formatter.use_localezaxes.formatter.use_mathtextzaxes.formatter.min_exponentzaxes.formatter.useoffsetzaxes.formatter.offset_thresholdzaxes.unicode_minuszaxes.prop_cyclezaxes.autolimit_modezaxes.xmarginzaxes.ymarginzpolaraxes.gridzaxes3d.gridzscatter.markerzdate.autoformatter.yearzdate.autoformatter.monthzdate.autoformatter.dayzdate.autoformatter.hourzdate.autoformatter.minutezdate.autoformatter.secondzdate.autoformatter.microsecondzlegend.fancyboxz
legend.loczlegend.numpointszlegend.scatterpointszlegend.fontsizezlegend.title_fontsizezlegend.markerscalezlegend.shadowzlegend.frameonzlegend.framealphazlegend.borderpadzlegend.labelspacingzlegend.handlelengthzlegend.handleheightzlegend.handletextpadzlegend.borderaxespadzlegend.columnspacingzlegend.facecolorzlegend.edgecolorz	xtick.topzxtick.bottomzxtick.labeltopzxtick.labelbottomzxtick.major.sizezxtick.minor.sizezxtick.major.widthzxtick.minor.widthzxtick.major.padzxtick.minor.padzxtick.colorzxtick.minor.visiblezxtick.minor.topzxtick.minor.bottomzxtick.major.topzxtick.major.bottomzxtick.labelsizezxtick.directionzxtick.alignmentz
ytick.leftzytick.rightzytick.labelleftzytick.labelrightzytick.major.sizezytick.minor.sizezytick.major.widthzytick.minor.widthzytick.major.padzytick.minor.padzytick.colorzytick.minor.visiblezytick.minor.leftzytick.minor.rightzytick.major.leftzytick.major.rightzytick.labelsizezytick.directionzytick.alignmentz
grid.colorzgrid.linestylezgrid.linewidthz
grid.alphazfigure.titlesizezfigure.titleweightzfigure.figsizez
figure.dpizfigure.facecolorzfigure.edgecolorzfigure.frameonzfigure.autolayoutzfigure.max_open_warningzfigure.subplot.leftzfigure.subplot.rightzfigure.subplot.bottomzfigure.subplot.topzfigure.subplot.wspacezfigure.subplot.hspacezfigure.constrained_layout.usez figure.constrained_layout.hspacez figure.constrained_layout.wspacezfigure.constrained_layout.h_padzfigure.constrained_layout.w_padzsavefig.dpizsavefig.facecolorzsavefig.edgecolorzsavefig.frameonzsavefig.orientationzsavefig.jpeg_qualityzsavefig.formatzsavefig.bboxzsavefig.pad_incheszsavefig.directoryzsavefig.transparentztk.window_focuszps.papersizez	ps.useafmzps.usedistillerzps.distiller.reszps.fonttypezpdf.compressionzpdf.inheritcolorzpdf.use14corefontszpdf.fonttypez	pgf.debugzpgf.texsystemzpgf.rcfontszpgf.preamblezsvg.image_inlinezsvg.fonttypezsvg.hashsaltzdocstring.hardcopyzplugins.directoryzpath.simplifyzpath.simplify_thresholdz	path.snapzpath.sketchzpath.effectszagg.path.chunksizezkeymap.fullscreenzkeymap.homezkeymap.backzkeymap.forwardz
keymap.panzkeymap.zoomzkeymap.savezkeymap.quitzkeymap.quit_allzkeymap.gridzkeymap.grid_minorzkeymap.yscalezkeymap.xscalezkeymap.all_axeszkeymap.helpzkeymap.copyzexamples.directoryzanimation.htmlzanimation.embed_limitzanimation.writerzanimation.codeczanimation.bitratezanimation.frame_formatzanimation.html_argszanimation.ffmpeg_pathzanimation.ffmpeg_argszanimation.avconv_pathzanimation.avconv_argszanimation.convert_pathzanimation.convert_argsz_internal.classic_mode__main__r   r  z%s: %s != %s)F)rI   rE   r   ry   )qr/   Zcollections.abcr   r   	functoolsr   r   r2   rs   r   Z
matplotlibr   Zmatplotlib.cbookr   Zmatplotlib.fontconfig_patternr   Zmatplotlib.colorsr   r
   r	   r   Zinteractive_bkZnon_interactive_bkZall_backendsobjectr   r0   r1   Zvalidate_anylistr6   rD   rF   rH   r   rJ   rL   rO   rQ   rS   rT   rX   r[   rZ   r\   r]   r^   rb   ri   rh   rc   rl   ro   rq   ru   rn   Zvalidate_colorlistrK   r'   Zvalidate_stringlistZvalidate_orientationr   r   r   Zvalidate_fontsizelistr   Zvalidate_fontsetr(   Zvalidate_mathtext_defaultZvalidate_verboseZ_validate_alignmentr   r   Zvalidate_ps_papersizer   Zvalidate_joinstyleZvalidate_joinstylelistZvalidate_capstyleZvalidate_capstylelistZvalidate_fillstyleZvalidate_fillstylelistZ_validate_negative_linestyler   Zvalidate_markeverylistZvalidate_legend_locr   r   Zvalidate_pgf_texsystemZvalidate_movie_writerZvalidate_movie_frame_fmtZvalidate_axis_locatorZvalidate_movie_html_fmtr   r   r   Zvalidate_grid_axisr   Zvalidate_hatchlistZvalidate_dashlistr   r   r   r   r   r   r   r   r   r   ZdefaultParamsr   Zrcr   printr   r   r   r   <module>   s  
#

&	
	
/UA

















(