U
    Âmœd�P ã                   @   s&4  d dl Z d dlmZ d dlZd dlmZ d dlmZ d dlZd dl	Z	d dl
mZ d dlZd dlmZ d dlZd dlZd dlmZ d dlm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" d dl#m$Z$ d dl%m&Z' d dl(m)Z* d dl+m,Z- d dl.m/Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z7 d dl8m9Z: d dl;m<Z= d dl>m?Z@ d dlAmBZC d dlDmEZEmFZFmGZG d dlHmIZImJZJmKZK eJdgd�dd„ ƒZLdd„ ZMdd„ ZNeJƒ dd„ ƒZOeJƒ dd„ ƒZPeJƒ dd„ ƒZQdd „ ZReJdgd�d!d"„ ƒZSeJdgd�d#d$„ ƒZTd%d&„ ZUeJdgd�d'd(„ ƒZVeId)d*d+d,d-gƒd.d/„ ƒZWd0d1„ ZXd2d3„ ZYeId4gƒd5d6„ ƒZZd7d8„ Z[ej\ ]d9d:¡eJdgd;d<�d=d>„ ƒƒZ^eId?gƒd@dA„ ƒZ_dBdC„ Z`dDdE„ ZadFdG„ ZbdHdI„ ZceJdgd�dJdK„ ƒZdeIdLgdMdN�dOdP„ ƒZeejf gdQ¡dRdS„ ƒZhejf gdQ¡dTdU„ ƒZiejf gdQ¡dVdW„ ƒZjeJdgd�dXdY„ ƒZkeIdZgdMdN�d[d\„ ƒZleId]gdMdN�d^d_„ ƒZmd`da„ Zndbdc„ Zoddde„ Zpdfdg„ ZqeIdhgdidjidk�dldm„ ƒZrdndo„ ZseJdgd�dpdq„ ƒZteIdrdrgƒdsdt„ ƒZueIdugdvdw�dxdy„ ƒZveJdgd�dzd{„ ƒZwd|d}„ ZxeId~gdgdMdvd�d€d�„ ƒZyeId‚gƒdƒd„„ ƒZzeId…gd†d‡�dˆd‰„ ƒZ{eIdŠdŠgdMdN�d‹dŒ„ ƒZ|eId�d�gdMdN�dŽd�„ ƒZ}d�d‘„ Z~eId’gdvdw�d“d”„ ƒZeId•gdvdMd–�d—d˜„ ƒZ€d™dš„ Z�d›dœ„ Z‚eId�gƒdždŸ„ ƒZƒejf gdQ¡ej\ ]d d¡d¢d£g¡eJdgd�d¤d¥„ ƒƒƒZ„eId¦d¦gdMdvd§�d¨d©„ ƒZ…eIdªgdve †¡ d«k�rBd¬nd d­�d®d¯„ ƒZ‡d°d±„ ZˆeId²gdMdN�d³d´„ ƒZ‰ej\j]dµe Šd¶¡d·d·fe ‹d¸d¹d†¡e Šd¶¡d·fe ‹d¸d¹d†¡d·e Šd¶¡fgdºd»d¼gd½�d¾d¿„ ƒZŒej\j]dÀe Šd¶¡d·d·fe ‹d¸d¹d†¡e Šd¶¡d·fe ‹d¸d¹d†¡d·e Šd¶¡fgdÁdÂdÃgd½�dÄdÅ„ ƒZ�eIdÆgdMdN�dÇdÈ„ ƒZŽeIdÉgdvdMd–�dÊdË„ ƒZ�eIdÌgdMdN�dÍdÎ„ ƒZ�eIdÏgƒdÐdÑ„ ƒZ‘eIdÒgdMdN�dÓdÔ„ ƒZ’dÕdÖ„ Z“eId×gdMdN�dØdÙ„ ƒZ”eIdÚgdÛgd�dÜdÝ„ ƒZ•eIdÞgddßgdMdà�dádâ„ ƒZ–ej\ ]dãdädåg¡eJdgd�dædç„ ƒƒZ—eIdègdvdw�dédê„ ƒZ˜eIdëgdvdw�dìdí„ ƒZ™dîdï„ ZšeJdgd�dðdñ„ ƒZ›eJdgd�dòdó„ ƒZœdôdõ„ Z�död÷„ Zžej\ ]dødùdMg¡eJdgd�dúdû„ ƒƒZŸeIdügƒdýdþ„ ƒZ eIdÿgdMdQd§��d �d„ ƒZ¡eI�dgdMdN��d�d„ ƒZ¢�d�d„ Z£eI�dgdMdN��d�d	„ ƒZ¤eI�d
gdM�d�d��d�d„ ƒZ¥eI�dgdM�d�d��d�d„ ƒZ¦eI�dgdMdN��d�d„ ƒZ§eI�dgdMdN��d�d„ ƒZ¨eI�dgdQdMd–��d�d„ ƒZ©eI�dgdMdN��d�d„ ƒZªeI�dgdMdN��d �d!„ ƒZ«eI�d"�d"gƒ�d#�d$„ ƒZ¬�d%�d&„ Z­�d'�d(„ Z®eI�d)gƒ�d*�d+„ ƒZ¯eI�d,gƒ�d-�d.„ ƒZ°eJdgd��d/�d0„ ƒZ±eJdgd��d1�d2„ ƒZ²eJdgd��d3�d4„ ƒZ³eJdgd��d5�d6„ ƒZ´�d7�d8„ Zµ�d9�d:„ Z¶eI�d;gƒ�d<�d=„ ƒZ·�d>�d?„ Z¸�d@�dA„ Z¹�dB�dC„ Zº�dD�dE„ Z»�dF�dG„ Z¼�dH�dI„ Z½ejf gdQ¡eJƒ �dJ�dK„ ƒƒZ¾ej\ ]�dL�dM�dN�dM�dOg�dMf�dP�dQ�dRg�dS�dT�dUg�dV�dW�dXg�dV�dW�dXg�dOf�dP�dQ�dRg�dS�dT�dUg�dY�dZ�dOg�dY�dZ�dOg�dOf�dP�dQ�dRg�dS�dT�dUg�d[�dO�dO�dOg�d[fg¡�d\�d]„ ƒZ¿�d^�d_„ ZÀ�d`�da„ ZÁeI�dbgdMdN��dc�dd„ ƒZÂeJdgd��de�df„ ƒZÃ�dg�dh„ ZÄeI�digdMdN��dj�dk„ ƒZÅ�dl�dm„ ZÆeI�dngdMdN��do�dp„ ƒZÇeI�dqgdMdN��dr�ds„ ƒZÈeI�dtgƒ�du�dv„ ƒZÉ�dw�dx„ ZÊ�dy�dz„ ZËej\j]�d{ejjÌ�d|�d}„ �d~�d}„ g�d�d€�d�gd½��d‚�dƒ„ ƒZÍej\ ]�d„g �dNfg g�dNfg g gd¹fg¡�d…�d†„ ƒZÎej\ ]�d‡�dˆej,jÏjÐf�d‰ejÑjÒjÐf�dŠej,jÏjÐfg¡�d‹�dŒ„ ƒZÓeJdgd��d��dŽ„ ƒZÔeJdgd��d��d�„ ƒZÕeJdgd��d‘�d’„ ƒZÖeJdgd��d“�d”„ ƒZ×�d•�d–„ ZØ�d—�d˜„ ZÙ�d™�dš„ ZÚ�d›�dœ„ ZÛ�d��dž„ ZÜeI�dŸgdMdN��d �d¡„ ƒZÝeI�d¢gƒ�d£�d¤„ ƒZÞeJdgd��d¥�d¦„ ƒZß�d§�d¨„ ZàeI�d©gdMdvd§��dª�d«„ ƒZáeI�d¬gdve †¡ d«k�rþd†nd d­��d­�d®„ ƒZâeI�d¯�d¯gdMdvd§��d°�d±„ ƒZãeI�d²gdMdvd§��d³�d´„ ƒZä�dµ�d¶„ ZåG �d·�d¸„ �d¸ƒZæ�dŸd�d¹œ�dº�d»„Zçe�d¼�d½ƒZèej\ ]�d¾eçƒ eè�dQe éd d �dN�dNgg¡�d¿�feç�dÀ�dÁ�eè�dÀe é�dNd d �dNgg¡�d¿�feç�dÀ�dQ�d¿�eè�dÀe é�dNd d �dNgg¡�d¿�feç�dQ�dÂ�eè�dQe éd d �dN�dNgg¡�d¿�feç�dQ�dÃg�dÂ�eè�dQ�dÃge éd d �dN�dNgd �dÄd �dNgg¡�d¿�fg¡�dÅ�dÆ„ ƒZê[ç[èej\ ]�dÇeëƒ dfeë�dQ�dÁ�dfeë�dÀ�d¹��dÀfeë�dÀ�dÃg�d¹��dÀ�dÃgfeë�dÀ�dÈ��dÀfeë�dÉ�d¹��dÉfeë�dÊ�d¹��dÊfeë�dÀ�dÃ�dË��dÀfeë�dQ�dÀ�dÃ�dÌ��dÀfeë�dÀ�dÂ��dÀfeë�dÀ�dÃ�dÍ��dÃfg¡�dÎ�dÏ„ ƒZì�dÐ�dÑ„ Zí�dÒ�dÓ„ Zî�dÔ�dÕ„ Zï�dÖ�d×„ Zð�dØ�dÙ„ Zñ�dÚ�dÛ„ ZòeI�dÜ�dÜgƒ�dÝ�dÞ„ ƒZóeI�dßgdMdN��dà�dá„ ƒZôi �dâ�d}„ i f�dã�dä„ZõeI�dågdi�dæidQ�dç��dè�dé„ ƒZöeI�dêgdi�dæidQ�dç��dë�dì„ ƒZ÷eI�dígdi�dæidQ�dç��dî�dï„ ƒZøeI�dðgdi�dæidQ�dç��dñ�dò„ ƒZùeI�dógdMdi�dæidQ�dô�dõ��dö�d÷„ ƒZúeI�døgdi�dæidQ�dô�dù��dú�dû„ ƒZûeI�dügdMdi�dæidQ�dý��dþ�dÿ„ ƒZüeI�d gdMdi�didQ�dý��d�d„ ƒZýeI�dgdMdi�dæidQ�dý��d�d„ ƒZþeI�dgdMdi�dæidQ�dý��d�d	„ ƒZÿeI�d
gdMdi�dæidQ�dý��d�d„ ƒ�Z eI�dgdMdi�dæidQ�dý��d�d„ ƒ�ZeI�dgdMdi�dæidQ�dý��d�d„ ƒ�ZeI�dgdMdi�dæidQ�dý��d�d„ ƒ�ZeI�dgdMdi�dæidQ�dý��d�d„ ƒ�ZeI�dgdMdi�dæidQ�dý��d�d„ ƒ�ZeI�dgdMdi�dæidQ�dý��d�d„ ƒ�ZeI�dgdMdi�dæidQ�dý��d �d!„ ƒ�ZeI�d"gdMdi�dæidQ�dý��d#�d$„ ƒ�ZeI�d%gdMdi�dæidQ�dý��d&�d'„ ƒ�Z	eI�d(gdMdi�dæidQ�dý��d)�d*„ ƒ�Z
eI�d+gdMdi�dæidQ�dý��d,�d-„ ƒ�ZeI�d.gdMdi�dæidQ�dý��d/�d0„ ƒ�Z�d1�d2„ �Z�d3�d4„ �ZeI�d5gdi�dæidQ�dç��d6�d7„ ƒ�ZeI�d8gdi�dæidQ�dç��d9�d:„ ƒ�Z�d;�d<„ �ZeI�d=�d=g�d>dQ�d?��d@�dA„ ƒ�ZeI�dBgdi�dæidQ�dç��dC�dD„ ƒ�ZeI�dEgdMdQd§��dF�dG„ ƒ�ZeI�dHgdMdi�dæidQ�dý��dI�dJ„ ƒ�ZeI�dK�dLgdQdw��dM�dN„ ƒ�Z�dO�dP„ �ZeI�dQgdi�didM�dNdQ�dR��dS�dT„ ƒ�ZeI�dUgdMdi�dæidQ�dý��dV�dW„ ƒ�ZeI�dXgdMdi�dæidQ�dý��dY�dZ„ ƒ�Z�d[�d\„ �Z�d]�d^„ �Z�d_�d`„ �Z�da�db„ �ZeI�dcgdMdi�dæidQ�dý��dd�de„ ƒ�ZeI�df�dfgƒ�dg�dh„ ƒ�Z eI�digƒ�dj�dk„ ƒ�Z!eI�dlgƒ�dm�dn„ ƒ�Z"eI�dogƒ�dp�dq„ ƒ�Z#eI�drgƒ�ds�dt„ ƒ�Z$eI�dugƒ�dv�dw„ ƒ�Z%eI�dxgƒ�dy�dz„ ƒ�Z&eI�d{gƒ�d|�d}„ ƒ�Z'eI�d~gƒ�d�d€„ ƒ�Z(eI�d�gƒ�d‚�dƒ„ ƒ�Z)eI�d„gƒ�d…�d†„ ƒ�Z*eI�d‡gƒ�dˆ�d‰„ ƒ�Z+eI�dŠgƒ�d‹�dŒ„ ƒ�Z,eI�d�gƒ�dŽ�d�„ ƒ�Z-�d��d‘„ �Z.�d’�d“„ �Z/�d”�d•„ �Z0�d–�d—„ �Z1eJdgd��d˜�d™„ ƒ�Z2eJdgd��dš�d›„ ƒ�Z3�dœ�d�„ �Z4�dž�dŸ„ �Z5�d �d¡„ �Z6eI�d¢�d£�d¢gƒ�d¤�d¥„ ƒ�Z7eI�d¦gdgdMdà��d§�d¨„ ƒ�Z8�d©�dª„ �Z9eJƒ �d«�d¬„ ƒ�Z:�d­�d®„ �Z;eI�d¯gƒ�d°�d±„ ƒ�Z<�d²�d³„ �Z=�d´�dµ„ �Z>eJdgd��d¶�d·„ ƒ�Z?�d¸�d¹„ �Z@�dº�d»„ �ZAeJƒ �d¼�d½„ ƒ�ZBej\ ]�d¾�dNd¹d·ge é�dNd¹d·g¡�dNg¡�d¿�dÀ„ ƒ�ZCeJdgd��dÁ�dÂ„ ƒ�ZDeI�dÃ�dÃgƒ�dÄ�dÅ„ ƒ�ZEeI�dÆgƒ�dÇ�dÈ„ ƒ�ZFeI�dÉgdMdN��dÊ�dË„ ƒ�ZGeI�dÌgƒ�dÍ�dÎ„ ƒ�ZHeI�dÏgƒ�dÐ�dÑ„ ƒ�ZIej\j]�dÒdMdùg�dÓ�dÔgd½�eI�dÕgdvdMd–��dÖ�d×„ ƒƒ�ZJ�dØ�dÙ„ �ZK�dÚ�dÛ„ �ZL�dÜ�dÝ„ �ZMej\j]�dÒdMdùg�dÓ�dÔgd½�eI�dÞgdvdMd–��dß�dà„ ƒƒ�ZNeI�dágƒ�dâ�dã„ ƒ�ZOeI�dägƒ�då�dæ„ ƒ�ZPeI�dçgƒ�dè�dé„ ƒ�ZQeI�dêgdMdN��dë�dì„ ƒ�ZR�dí�dî„ �ZS�dï�dð„ �ZT�dñ�dò„ �ZU�dó�dô„ �ZV�dõ�dö„ �ZW�d÷�dø„ �ZX�dù�dú„ �ZY�dû�dü„ �ZZeI�dýgƒ�dþ�dÿ„ ƒ�Z[�d �d„ �Z\�d�d„ �Z]�d�d„ �Z^eI�dgdMdN��d�d„ ƒ�Z_eI�d	gdMdN��d
�d„ ƒ�Z`eI�dgdMdN��d�d„ ƒ�Za�d�d„ �Zb�d�d„ �ZceI�dgdMdN��d�d„ ƒ�ZdeI�d�dgdMdN��d�d„ ƒ�ZeeI�dgdMdN��d�d„ ƒ�Zfej\ ]�d�d�d�dg¡�d�d „ ƒ�Zg�d!�d"„ �ZheI�d#gdMdN��d$�d%„ ƒ�Zi�d&�d'„ �Zjej\ ]�d(g gg d �dNggd �dNgg gg¡ej\ ]�d)d�d*�d+g¡�d,�d-„ ƒƒ�ZkeJdgd��d.�d/„ ƒ�ZleI�d0gdMdN��d1�d2„ ƒ�ZmeI�d3gƒ�d4�d5„ ƒ�ZneI�d6gdMdN��d7�d8„ ƒ�ZoeI�d9�d:ge †¡ �d;k�räd nd†d‡��d<�d=„ ƒ�ZpeJƒ �d>�d?„ ƒ�ZqeJƒ �d@�dA„ ƒ�ZreJƒ �dB�dC„ ƒ�ZseJƒ �dD�dE„ ƒ�Zt�dF�dG„ �ZueI�dH�dI�dJgdgd��dK�dL„ ƒ�Zv�dM�dN„ �ZweI�dO�dP�dQgdgd��dR�dS„ ƒ�Zx�dT�dU„ �Zyej\ ]�d(�dNd¹d·e�jz�dVgej� {�dNd¹d·�dW�dVg�dW¡g¡eJdgd��dX�dY„ ƒƒ�Z|eI�dZ�dZgdMdN��d[�d\„ ƒ�Z}eI�d]gdMdN��d^�d_„ ƒ�Z~�d`�da„ �ZeI�db�dc�dd�degdM�dfdQ�dg��dh�di„ ƒ�Z€eI�dj�dk�dl�dmgdM�dfdQ�dg��dn�do„ ƒ�Z�eI�dp�dq�dr�dsgdM�dfdQ�dg��dt�du„ ƒ�Z‚�dv�dw„ �ZƒeJdgd��dx�dy„ ƒ�Z„�dz�d{„ �Z…eI�d|�d}�d~�dgdM�d€�d��d��d‚„ ƒ�Z†eI�dƒ�d„�d…�d†�d‡�dˆ�d‰�dŠgdMdN��d‹�dŒ„ ƒ�Z‡�d��dŽ„ �ZˆeJdgd��d��d�„ ƒ�Z‰eI�d‘gdMdN��d’�d“„ ƒ�ZŠeI�d”�d”gdMdN��d•�d–„ ƒ�Z‹ej\ ]�d—�d˜�d™�dšg¡�d›�dœ„ ƒ�ZŒ�d��dž„ �Z��dŸ�d „ �ZŽeJdgd��d¡�d¢„ ƒ�Z��d£�d¤„ �Z�ej\ ]�d¥e7�j‘e7�j’�d¦ge7�j“e7�j”�d§gg¡�d¨�d©„ ƒ�Z•�dª�d«„ �Z–�d¬�d­„ �Z—�d®�d¯„ �Z˜�d°�d±„ �Z™�d²�d³„ �Zšej\ ]�d´�e›�dµi �d¶f�eœ�d·i �d¸f�e›�dNd¹gfi �d¹f�e›�e�ƒ �dºdi�d»ff¡�d¼�d½„ ƒ�Zž�d¾�d¿„ �ZŸej\ ]d9d:¡�dÀ�dÁ„ ƒ�Z �dÂ�dÃ„ �Z¡�dÄ�dÅ„ �Z¢eI�dÆgƒ�dÇ�dÈ„ ƒ�Z£eI�dÉ�dÉ�dÉgdgdv�dÊ��dË�dÌ„ ƒ�Z¤eI�dÍgdvdw��dÎ�dÏ„ ƒ�Z¥eI�dÐgdvdw��dÑ�dÒ„ ƒ�Z¦eI�dÓgdvdw��dÔ�dÕ„ ƒ�Z§eI�dÖgdvdw��d×�dØ„ ƒ�Z¨eI�dÙgdvdw��dÚ�dÛ„ ƒ�Z©eI�dÜgƒ�dÝ�dÞ„ ƒ�Zª�dß�dà„ �Z«�dá�dâ„ �Z¬�dã�dä„ �Z­eJƒ �då�dæ„ ƒ�Z®eJƒ �dç�dè„ ƒ�Z¯eI�dégƒ�dê�dë„ ƒ�Z°�dì�dí„ �Z±eJdgd��dî�dï„ ƒ�Z²�dð�dñ„ �Z³�dò�dó„ �Z´�dô�dõ„ �Zµ�dö�d÷„ �Z¶eI�døgƒ�dù�dú„ ƒ�Z·�dû�dü„ �Z¸eI�dýgdi�dþidk��dÿ�d „ ƒ�Z¹�d�d„ �Zº�d�d„ �Z»ej\ ]�d´�eœ�di �df�eœ�di �df�eœ�e�ƒ �dM�di�df�eœ�e�ƒ �d	�di�df�e›�d¦�dN�dNd:œ�d
f�e›�d¦�dM�dNi�d
f�e›�di �dff¡�d�d„ ƒ�Z¼�d�d„ �Z½�d�d„ �Z¾�d�d„ �Z¿�d�d„ �ZÀ�d�d„ �ZÁ�d�d„ �ZÂ�d�d„ �ZÃ�d�d„ �ZÄeI�dgdi�dæidk��d �d!„ ƒ�ZÅeI�d"gdi�dæidk��d#�d$„ ƒ�ZÆ�d%�d&„ �ZÇ�d'�d(„ �ZÈ�d)�d*„ �ZÉ�d+�d,„ �ZÊej\ ]�d-�d.e�jË�jÌf�d/e�jË�jÌf�eÍ�dVƒ�eÍ�dWƒfe�jË�jÌf�dNd¹�dW�d0�d1gd �dNd¹d·gfe�jË�jÎfe�jÏ� Ï�d2¡e�jÏ� Ï�d2¡fej�jÐfg¡ej\ ]�d(e ‹�d3¡� Ñ�d4¡e�jÏ� Òd·�dWd·¡g¡�d5�d6„ ƒƒ�ZÓ�d7�d8„ �ZÔ�d9�d:„ �ZÕ�d;�d<„ �ZÖ�d=�d>„ �Z×ej\ ]�d?�e×ƒ ¡�d@�dA„ ƒ�ZØeI�dBgdMdN��dC�dD„ ƒ�ZÙ�dE�dF„ �ZÚ�dG�dH„ �ZÛej\ ]�dIdMdùg¡�dJ�dK„ ƒ�ZÜeI�dLgdMd†�d��dM�dN„ ƒ�ZÝeI�dOgdMdvd§��dP�dQ„ ƒ�ZÞejf gdQ¡�dR�dS„ ƒ�Zße�jà�dM�d	g�dT��dU�dV„ ƒ�Záe�jà�dW�dX�dY�dZg�dT��d[�d\„ ƒ�Zâ�d]�d^„ �Zã�d_�d`„ �Zä�da�db„ �Zå�dc�dd„ �Zæejf gdQ¡�de�df„ ƒ�Zçejf gdQ¡�dg�dh„ ƒ�Zè�di�dj„ �Zé�dk�dl„ �Zê�dm�dn„ �Zë�do�dp„ �Zì�dq�dr„ �Zí�ds�dt„ �Zî�du�dv„ �Zï�dw�dx„ �Zð�dy�dz„ �Zñ�d{�d|„ �Zò�d}�d~„ �Zó�d�d€„ �Zô�d��d‚„ �Zõ�dƒ�d„„ �Zö�d…�d†„ �Z÷eI�d‡g�dˆd‡��d‰�dŠ„ ƒ�ZøeI�d‹gƒ�dŒ�d�„ ƒ�ZùeI�dŽg�dˆd‡��d��d�„ ƒ�ZúeI�d‘gdMdN��d’�d“„ ƒ�Zû�d”�d•„ �Zü�d–�d—„ �Zý�d˜�d™„ �Zþ�dš�d›„ �Zÿej\j]�dœ�d��dž�dŸg�d �d¡�d¢gd½��d£�d¤„ ƒ�Z �d¥�d¦„ �Z�d§�d¨„ �Z�d©�dª„ �Z�d«�d¬„ �Z�d­�d®„ �Z�d¯�d°„ �Z�d±�d²„ �Z�d³�d´„ �Zejf gdQ¡�dµ�d¶„ ƒ�Z	�d·�d¸„ �Z
�d¹�dº„ �Z�d»�d¼„ �Z�d½�d¾„ �Z�d¿�dÀ„ �Zej\ ]�dÁ�dÂ�dÃg¡ej\ ]�dÄ�dÂ�dÃg¡�dÅ�dÆ„ ƒƒ�Z�dÇ�dÈ„ �Z�dÉ�dÊ„ �Z�dË�dÌ„ �ZeJdgd��dÍ�dÎ„ ƒ�ZeJdgd��dÏ�dÐ„ ƒ�Z�dÑ�dÒ„ �Z�dÓ�dÔ„ �Z�dÕ�dÖ„ �ZeI�d×gdMdvd§��dØ�dÙ„ ƒ�Z�dÚ�dÛ„ �Z�dÜ�dÝ„ �Zej\ ]�dÞdùdMg¡ej\ ]�dßdùdMg¡�dà�dá„ ƒƒ�Z�dâ�dã„ �Z�dä�då„ �Z�dæ�dç„ �Z�dè�dé„ �Z�dê�dë„ �Z �dì�dí„ �Z!eI�dîgdvdMd–��dï�dð„ ƒ�Z"eI�dñgdvdw��dò�dó„ ƒ�Z#�dô�dõ„ �Z$�dö�d÷„ �Z%�dø�dù„ �Z&�dú�dû„ �Z'�dü�dý„ �Z(eI�dþgdMdvd§��dÿ�d „ ƒ�Z)�d�d„ �Z*�d�d„ �Z+�d�d„ �Z,�d�d„ �Z-�d	�d
„ �Z.�d�d„ �Z/eJdgd��d�d„ ƒ�Z0�d�d„ �Z1�d�d„ �Z2�d�d„ �Z3�d�d„ �Z4�d�d„ �Z5�d�d„ �Z6�d�d„ �Z7�d�d„ �Z8�d�d „ �Z9�d!�d"„ �Z:�d#�d$„ �Z;�d%�d&„ �Z<�d'�d(„ �Z=�d)�d*„ �Z>�d+�d,„ �Z?�d-�d.„ �Z@�d/�d0„ �ZAej\ ]�d1d:¡ej\ ]�d2�d3¡�d4�d5„ ƒƒ�ZBeJdgd��d6�d7„ ƒ�ZCejf gdQ¡�d8�d9„ ƒ�ZD�d:�d;„ �ZE�d<�d=„ �ZFej\ ]�d>�d?�d@„ e'�jGD ƒ�d0�dS�d3g ¡ejf gdQ¡�dA�dB„ ƒƒ�ZH�dC�dD„ �ZI�dE�dF„ �ZJeJdßgd��dG�dH„ ƒ�ZKeJdgd��dI�dJ„ ƒ�ZL�dK�dL„ �ZMej\ ]�dM�dN�dO�dPg¡�dQ�dR„ ƒ�ZN�dS�dT„ �ZO�dU�dV„ �ZP�dW�dX„ �ZQ�dY�dZ„ �ZR�d[�d\„ �ZS�d]�d^„ �ZT�d_�d`„ �ZUeI�dagƒ�db�dc„ ƒ�ZV�dd�de„ �ZWej\ ]�df�dg�dh�dh�jXg¡�di�dj„ ƒ�ZY�dk�dl„ �ZZ�dm�dn„ �Z[�do�dp„ �Z\�dq�dr„ �Z]�ds�dt„ �Z^�du�dv„ �Z_ejf gdQ¡�dw�dx„ ƒ�Z`�dy�dz„ �Za�d{�d|„ �Zbej\ ]�d}�d~¡ej\ ]�d(d�d�eÍd·ƒig¡�d€�d�„ ƒƒ�Zc�d‚�dƒ„ �Zd�d„�d…„ �Ze�d†�d‡„ �Zf�dˆ�d‰„ �Zg�dŠ�d‹„ �Zh�dŒ�d�„ �Zi�dŽ�d�„ �Zj�d��d‘„ �ZkeJdgd��d’�d“„ ƒ�ZleI�d”gdvdw��d•�d–„ ƒ�Zm�d—�d˜„ �Zn�d™�dš„ �Zo�d›�dœ„ �Zpejf gdQ¡�d��dž„ ƒ�ZqdS (   é    N)Ú
namedtuple©ÚDecimal)Úpartial)Úproduct)ÚSimpleNamespace)Úma)Úcycler)Ú
rc_context)ÚMatplotlibDeprecationWarning)ÚFigure)ÚAxes)Ú
HammerAxes)Ú	PolarAxes)Úassert_allcloseÚassert_array_equalÚassert_array_almost_equal)Úimage_comparisonÚcheck_figures_equalÚremove_ticks_and_titlesÚpng©Ú
extensionsc                 C   s   |   ¡ }| d¡ d S ©NF)ÚsubplotsÚset_visible©Úfig_testÚfig_refÚax© r    úS/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/matplotlib/tests/test_axes.pyÚtest_invisible_axes1   s    r"   c                  C   sD   t  ¡ \} }| d¡ | d¡ | ¡ dks0t‚| ¡ dks@t‚d S )Nzx labelzy label)Úpltr   Ú
set_xlabelÚ
set_ylabelZ
get_xlabelÚAssertionErrorZ
get_ylabel©Úfigr   r    r    r!   Útest_get_labels7   s
    

r)   c                  C   sH   t  ¡ \} }| d¡ | d¡ | d¡ | d¡ t|ƒdksDt‚d S )NÚlabelÚtitleÚxÚyzH<Axes: label='label', title={'center': 'title'}, xlabel='x', ylabel='y'>)r#   r   Ú	set_labelÚ	set_titler$   r%   Úreprr&   r'   r    r    r!   Ú	test_repr?   s    



ÿr1   c                 C   sÎ   |   ¡ }|jddgddgddgdd�}| ¡  |jddd� |jdd	d� |  |¡}|jd
dd� |  ¡ }|jddgddgddgdd�}| ¡  |jddd	d� |jddd	d� | |¡}|jd
dd	d� d S )Né   é   Úscatter©Úcr*   úY LabelÚtop©ÚlocúX LabelÚrightúZ Label©r-   Úha©r,   r?   ©r   r4   Úlegendr%   r$   Úcolorbarr.   ©r   r   r   ÚscÚcbarr    r    r!   Útest_label_loc_verticalJ   s    

rG   c                 C   sÖ   |   ¡ }|jddgddgddgdd�}| ¡  |jddd� |jdd	d� | j|d
d�}|jdd	d� |  ¡ }|jddgddgddgdd�}| ¡  |jddd	d� |jddd	d� |j|d
d�}|jddd	d� d S )Nr2   r3   r4   r5   r7   Úbottomr9   r;   ÚleftÚ
horizontal©Úorientationr=   r   r>   r@   rA   rD   r    r    r!   Útest_label_loc_horizontal]   s    rM   c              	   C   sæ   t  dddœ¡�` |  ¡ }|jddgddgddgdd�}| ¡  | d¡ | d	¡ | j|d
d�}| d¡ W 5 Q R X | ¡ }|jddgddgddgdd�}| ¡  |jdddd� |jd	ddd� |j|d
d�}|jdddd� d S )Nr<   r8   )zxaxis.labellocationzyaxis.labellocationr2   r3   r4   r5   r7   r;   rJ   rK   r=   r>   r@   )	Ú
matplotlibr
   r   r4   rB   r%   r$   rC   r.   rD   r    r    r!   Útest_label_loc_rcp   s"    ÿ


rO   c                  C   s  t  ¡ \} }|jddd� |jddd� |j ¡  ¡ dks>t‚|jddd� |j ¡  ¡ dksbt‚|jddd� |j ¡  ¡ dks†t‚|jddd� |jddd� |j ¡  ¡ dks¸t‚|jddd� |j ¡  ¡ dksÜt‚|jddd� |j ¡  ¡ dk�st‚d S )Nz
Test labelrI   r9   Úcenterr<   r8   rH   )	r#   r   r$   ÚxaxisÚ	get_labelÚget_horizontalalignmentr&   r%   Úyaxisr'   r    r    r!   Útest_label_shift…   s    rU   c           	      C   s´   t j d¡ d}t j dd|¡ ¡ }|d }|  ¡ }|j||d� | ¡ }t j||dd�t  ||¡ }t  	| |d ¡}||d | || … }| 
|dg|¡ |jdddd� d S )	Né!N,é   r   r2   )ÚmaxlagsÚfull)Úmode)r-   ÚxminÚxmax)ÚnpÚrandomÚseedÚnormalZcumsumr   ZacorrZ	correlateÚdotÚarangeÚvlinesÚaxhline)	r   r   ZNxr,   rX   Úax_testÚax_refZnorm_auto_corrZlagsr    r    r!   Ú
test_acorr›   s    rg   c                 C   s   t j d¡ t  d¡}d|d d…< t j |¡ | d¡}|  d¡}|d  |¡ |d j|dd	d
� | d¡}|d j|ddd� |d j	 
¡  |d jt  |¡d d d… džddiŽ |d jd|d  ¡ |d  ¡ d d d… d� |D ]}|j	 d¡ qêd S )NrV   i   r   rW   )é    rh   r3   r2   Ú.Úlower)ÚmarkerÚoriginZgray_rÚnearest)ÚcmapÚinterpolationéÿÿÿÿÚ
markersizeé
   )ÚaspectÚxlimÚylimÚboth)ri   )r]   r^   r_   ÚonesÚshuffleÚreshaper   ÚspyÚimshowrQ   Útick_topÚplotZnonzeroÚsetÚget_xlimÚget_ylimÚset_ticks_position)r   r   ÚaÚaxs_testÚaxs_refr   r    r    r!   Útest_spy®   s&    



( 
 ÿr…   c               
   C   sT   t  ¡ \} }ddidddœfD ]0}t t¡� |jt dd¡f|Ž W 5 Q R X qd S )Nro   rm   ÚoÚsolid)rk   Ú	linestyleé   )r#   r   ÚpytestÚraisesÚ	TypeErrorrz   r]   Úeye)r(   r   Zunsupported_kwr    r    r!   Útest_spy_invalid_kwargsÄ   s    ÿrŽ   c                 C   sT   t j d¡ tj dd¡}|  ¡  |¡ | ¡ }| |¡ |j	 
¡  |j	 d¡ d S )NÚmpl20rh   rv   )ÚmplÚstyleÚuser]   r^   ÚrandÚadd_subplotZmatshowr{   rQ   r|   r�   )r   r   r‚   rf   r    r    r!   Útest_matshowÌ   s    

r•   Zformatter_ticker_001Zformatter_ticker_002Zformatter_ticker_003Zformatter_ticker_004Zformatter_ticker_005c                     sV  dd l m  m‰  ˆ  ¡  dtjd< ‡ fdd„tdƒD ƒ} ‡ fdd„tdƒD ƒ}‡ fdd„tdƒD ƒ}t ¡  	¡ }| 
d	¡ t ¡  	¡ }| 
d	¡ |j| |d
dd� t ¡  	¡ }| 
d	¡ |j| |d
dd� | 
d¡ t ¡  	¡ }|j| |d
dd� |j| |ddd� | 
d¡ t ¡  	¡ }|j| |d
dd� |j| |ddd� | 
d¡ | ¡  d S )Nr   é   zlines.markeredgewidthc                    s   g | ]}|ˆ j  ‘qS r    )Úsec©Ú.0r,   ©Úunitsr    r!   Ú
<listcomp>æ   s     z)test_formatter_ticker.<locals>.<listcomp>rr   c                    s   g | ]}d | d ˆ j  ‘qS )ç      ø?ç      à?©Úkm©r™   r-   rš   r    r!   rœ   ç   s     c                    s   g | ]}d | d ˆ j  ‘qS )ç      ü?ç      ð?rŸ   r¡   rš   r    r!   rœ   è   s     zx-label 001Úbluer—   )ÚcolorZxunitszx-label 003ÚgreenÚhourzx-label 004zx-label 005)Úmatplotlib.testing.jpl_unitsÚtestingÚ	jpl_unitsÚregisterrN   ÚrcParamsÚranger#   Úfigurer   r$   r}   Úautoscale_view)ZxdataZydata1Zydata2r   r    rš   r!   Útest_formatter_ticker×   s0    






r°   c                  C   sº   dd„ } t  ¡  ¡ }|jjs t‚|jjs,t‚|jjs8t‚|jjsDt‚|j | ¡ |jjr\t‚|jjsht‚|jjstt‚|jjs€t‚t	 
| ¡}t|j ¡ t	j
ƒs t‚|j ¡ j|jks¶t‚d S )Nc                 S   s   dS )NÚ r    ©r,   Úposr    r    r!   Ú	_formfunc  s    z4test_funcformatter_auto_formatter.<locals>._formfunc)r#   r®   r   rQ   ÚisDefault_majfmtr&   ÚisDefault_minfmtrT   Úset_major_formatterÚmtickerÚFuncFormatterÚ
isinstanceÚget_major_formatterÚfunc)r´   r   Ztarg_funcformatterr    r    r!   Ú!test_funcformatter_auto_formatter  s     

ÿr½   c                  C   s¶   d} t  ¡  ¡ }|jjst‚|jjs(t‚|jjs4t‚|jjs@t‚|j | ¡ |jjsXt‚|jjsdt‚|jjspt‚|jjr|t‚t	 
| ¡}t|j ¡ t	j
ƒsœt‚|j ¡ j|jks²t‚d S )Nz	{x}_{pos})r#   r®   r   rQ   rµ   r&   r¶   rT   Úset_minor_formatterr¸   ZStrMethodFormatterrº   Zget_minor_formatterÚfmt)Zformstrr   Ztarg_strformatterr    r    r!   Ú&test_strmethodformatter_auto_formatter  s     

ÿrÀ   Ztwin_axis_locators_formattersc                  C   s  t jddddd�} t  t j|  d ¡}t |¡}t ddd	g¡}t ¡ }| ddd¡}| dd
gddg¡ |j	 
|¡ |j	 |¡ |j	 t d¡¡ |j	 t dddg¡¡ |j 
t ¡ ¡ |j t ddddg¡¡ |j t d¡¡ |j t ddddg¡¡ | ¡  | ¡  d S )Nr   r2   é   T)ÚnumZendpointç       @çš™™™™™¹?çš™™™™™É?ç333333Ó?éd   z%08.2lfZtricksZmindZjedié   é#   é7   éK   z%05.2lfr6   Ú3Úpr†   )r]   ÚlinspaceÚsinÚpir#   ZFixedLocatorr®   r”   r}   rT   Úset_major_locatorZset_minor_locatorr·   ZFormatStrFormatterr¾   ZFixedFormatterrQ   ZLinearLocatorÚtwinyÚtwinx)ÚvalsZlocsZmajlZminlr(   Úax1r    r    r!   Ú"test_twin_axis_locators_formatters7  s&    
ÿrÖ   c                  C   sÒ   t  ¡ \} }| ¡ }| ¡ }t  ¡  |j ¡ r2t‚|j ¡ r@t‚| 	¡  | 	¡  |j ¡ r^t‚|j ¡ rlt‚|j
 ¡ szt‚|j ¡ sˆt‚|j ¡ r–t‚|j
 ¡ r¤t‚|j ¡ s²t‚|j ¡ sÀt‚|j
 ¡ sÎt‚d S ©N)r#   r   rÓ   rÒ   ÚdrawrQ   Úget_visibler&   ÚpatchÚclarT   )r(   r   Úax2Úax3r    r    r!   Útest_twinx_claP  s"    rÞ   Útwin©r,   r-   çR¸…ëQÈ?)r   Útolc                 C   sF  d|› �}d|› d�}t  dd¡}|  ddd¡}t||ƒƒ }t||ƒdƒ | ||¡ |  ddd¡}t||ƒdƒ t||ƒƒ }| ||¡ dD ]¢}| dd|¡}	t|	|ƒdƒ |	 ||¡ tjj}
| tj	j
|
d	d	gd	dgd	dgddgddgdd	gdd	gd	d	gg|
j|
jgd
 ƒ|	jdtjd tjd dd�¡ qŽt| ƒ t|ƒ d S )Nrß   Úset_Úscaler2   rÇ   r3   Úlog©r2   r3   r   é   Únonezaxes.edgecolorúaxes.linewidthZ
projecting)Ú	transformÚ	facecolorÚ	edgecolorÚ	linewidthZcapstyle)r]   rb   r”   Úgetattrr}   rN   ÚpathÚPathÚ
add_artistÚpatchesÚ	PathPatchÚMOVETOZLINETOÚ	transAxesr�   r¬   r   )r   r   rß   Z	twin_funcZ	set_scaler,   re   Úax_twinÚirf   rð   r    r    r!   Útest_twin_logscaleg  sJ    
   ýüöÿrø   ztwin_autoscale.pngc                  C   s’   t  dddg¡} d|  }t  dddg¡}d| }t ¡ }|jdddd�}|j| |dd	d
� t |¡}|j||ddd� | dd¡ | dd¡ d S )Nr   rž   r2   r3   ©r   r   r2   r2   F)Zautoscalex_onZautoscaley_onr¤   rr   ©r¥   Úlwúr--rÁ   ©rû   )r]   Úarrayr#   r®   Úadd_axesr}   rÓ   Úmargins)r,   r-   Úx2Úy2r(   r   rÜ   r    r    r!   Útest_twinx_axis_scales“  s    
r  c                  C   st   t  ¡ \} }| ¡ }| d¡ | ¡ }| ¡ s2t‚| ¡ r>t‚| ¡ }| d¡ | ¡ }| ¡ sdt‚| ¡ rpt‚d S r   )	r#   r   rÓ   Zset_autoscalex_onÚget_autoscalex_onr&   rÒ   Zset_autoscaley_onÚget_autoscaley_on)r(   r   Zax_x_onZax_x_offZax_y_onZax_y_offr    r    r!   Ú#test_twin_inherit_autoscale_setting¥  s    

r  c                  C   s†  t  d¡} |  ¡ }| ¡ rt‚| ¡ r*t‚tj d¡}| |¡ | ¡ rLt‚| ¡ sXt‚| 	¡  t 
ddtj d¡}| |t |¡¡ | ¡ r’t‚| ¡ ržt‚| 	¡  | |¡ t  ¡  | ¡ rÄt‚| ¡ sÐt‚| jD ]}| ¡  qÖt  d¡}t jd|d�}|j d¡ | ¡ �st‚| |t |¡¡ | 	¡  | ¡ �r>t‚| 	¡  | |¡ | |t |¡¡ | 	¡  | ¡ �sxt‚t  | ¡ d S )	Nr   )rÇ   rÇ   r3   rÇ   éÓ   éÔ   ©ÚshareyT)r#   r®   ÚgcaZxaxis_invertedr&   Úyaxis_invertedr]   r^   r{   rÛ   rÎ   rÐ   r}   ÚcosÚ	autoscaleÚaxesÚremoveÚsubplotrT   Zset_invertedÚclose)r(   r   Úimgr,   Úax0rÕ   r    r    r!   Útest_inverted_cla¶  sB    






r  c            	   	      sö   t jtdd�� G ‡ fdd„dtƒ} W 5 Q R X t jtdd�� G ‡ fdd„dtƒ}W 5 Q R X G dd„ d| ƒ}G ‡ fd	d
„d
tƒ}G ‡ fdd„dtƒ}G dd„ d|ƒ}tƒ }| |||||fD ]6}d‰ ||ddddgƒ}ˆ sÜt‚d‰ | ¡  ˆ sºt‚qºd S )NzOverriding `Axes.cla`©Úmatchc                       s   e Zd Z‡ fdd„ZdS )z(test_subclass_clear_cla.<locals>.ClaAxesc                    s   d‰ d S ©NTr    ©Úself©Úcalledr    r!   rÛ   ò  s    z,test_subclass_clear_cla.<locals>.ClaAxes.claN)Ú__name__Ú
__module__Ú__qualname__rÛ   r    r  r    r!   ÚClaAxesñ  s   r   c                       s   e Zd Z‡ ‡fdd„Z‡  ZS )z-test_subclass_clear_cla.<locals>.ClaSuperAxesc                    s   d‰t ƒ  ¡  d S r  )ÚsuperrÛ   r  ©Ú	__class__r  r    r!   rÛ   ù  s    z1test_subclass_clear_cla.<locals>.ClaSuperAxes.cla)r  r  r  rÛ   Ú__classcell__r    r  ©r#  r!   ÚClaSuperAxesø  s   r&  c                   @   s   e Zd ZdS )z+test_subclass_clear_cla.<locals>.SubClaAxesN©r  r  r  r    r    r    r!   Ú
SubClaAxesþ  s   r(  c                       s   e Zd Z‡ fdd„ZdS )z*test_subclass_clear_cla.<locals>.ClearAxesc                    s   d‰ d S r  r    r  r  r    r!   Úclear  s    z0test_subclass_clear_cla.<locals>.ClearAxes.clearN)r  r  r  r)  r    r  r    r!   Ú	ClearAxes  s   r*  c                       s   e Zd Z‡ ‡fdd„Z‡  ZS )z/test_subclass_clear_cla.<locals>.ClearSuperAxesc                    s   d‰t ƒ  ¡  d S r  )r!  r)  r  r"  r    r!   r)    s    z5test_subclass_clear_cla.<locals>.ClearSuperAxes.clear)r  r  r  r)  r$  r    r  r%  r!   ÚClearSuperAxes  s   r+  c                   @   s   e Zd ZdS )z-test_subclass_clear_cla.<locals>.SubClearAxesNr'  r    r    r    r!   ÚSubClearAxes  s   r,  Fr   r2   )rŠ   ÚwarnsÚPendingDeprecationWarningr   r   r&   rÛ   )	r   r&  r(  r*  r+  r,  r(   Ú
axes_classr   r    r  r!   Útest_subclass_clear_claê  s0    ÿÿ  ÿr0  c                  C   s*   t  ¡ D ]} d| jkrd| jkst‚qd S )Nr0  rÛ   )r   Ú__subclasses__r  Ú__dict__r&   )Úklassr    r    r!   Ú!test_cla_not_redefined_internally  s    
r4  c              	   C   s`   t  dddœ¡�" |  ¡ }| ddgddg¡ W 5 Q R X | ¡ }| ddgddg¡ | ¡  d S )NT)zxtick.minor.visiblezytick.minor.visibler   r2   )rN   r
   r   r}   Úminorticks_on©r   r   re   rf   r    r    r!   Ú test_minorticks_on_rcParams_both%  s    ÿ
r7  Zautoscale_tiny_rangeT©Úremove_textc                  C   sL   t  dd¡\} }t|jƒD ],\}}dd|  }| ddgdd| g¡ qd S )Nr3   rr   iõÿÿÿr   r2   )r#   r   Ú	enumerateÚflatr}   )r(   Úaxsr÷   r   Úy1r    r    r!   Útest_autoscale_tiny_range0  s    r>  Údefaultc                  C   sÒ   t  dd¡\} }| ddddg¡ |jdddd� |jdd	dd� t| ¡ d
ƒ t| ¡ dƒ | ¡ sjt‚| 	¡ svt‚| 
¡ s‚t‚|jd d� t| ¡ d
ƒ t| ¡ dƒ | ¡ s¶t‚| 	¡ sÂt‚| 
¡ sÎt‚d S )Nr2   r3   r‰   rç   Tr,   F)ÚenableÚaxisÚtightr-   )g333333Ã¿g333333	@)r£   ç      @)r@  )r#   r   r}   r  r   r   r€   r  r&   r  Úget_autoscale_onr'   r    r    r!   Útest_autoscale_tight9  s    rE  c                  C   s¶   t jdtd�} tjdddd�\}\}}| | | ¡ | | | ¡ |jdd� |jdd� t ¡  | d | d f}t	| 
¡ |ƒ t	| ¡ |ƒ t	| 
¡ |ƒ t	| ¡ | d	 | d fƒ d S )
NrÇ   ©Zdtyper3   r2   T©Úsharex)rB  rp   r   )r]   rb   Úfloatr#   r   ÚloglogÚsemilogxr  rØ   r   r   r€   )r,   r(   rÕ   rÜ   Zlimsr    r    r!   Útest_autoscale_log_sharedQ  s    rL  c                  C   sÒ   t  ¡ \} }|jddgddggdd� t| ¡ dƒ t| ¡ dƒ d|_| ¡  d	d|j  d
d|j  f}d	d|j	  d
d|j	  f}t| ¡ |ƒ t| ¡ |ƒ d|_| ¡  t| ¡ dƒ t| ¡ dƒ d S )Nr   r2   r3   r‰   rj   ©rl   )ç      à¿r�   FrN  r�   T)
r#   r   r{   r   r   r€   Zuse_sticky_edgesr  Z_xmarginZ_ymargin)r(   r   rt   ru   r    r    r!   Útest_use_sticky_edgesc  s    rO  c                 C   sZ   t  d¡ dd¡}|  d¡}| jd|d�}| |¡ | d¡}|jd|d�}| |¡ d S )NrÈ   r‰   rÁ   r  r  rG  )r]   rb   ry   r”   Ú
pcolormesh)r   r   ÚZr  rÕ   r    r    r!   Útest_sticky_shared_axesv  s    


rR  Zoffset_pointsc                  C   sf   t  ddd¡} t  dt j |  ¡}t ¡ }|jdddd�}|j| |d	d
d�\}|jdddddd� d S )Nç        ç      @ç{®Gáz„?rÃ   F)rp   rÁ   ©éýÿÿÿrÁ   )Zautoscale_onrt   ru   r‰   Úpurple©rû   r¥   z	local max©r‰   r2   Údata©r‰   r‰   zoffset points)ÚxyÚxycoordsÚxytextÚ
textcoords)	r]   rb   r  rÐ   r#   r®   r”   r}   Úannotate)ÚtÚsr(   r   Úliner    r    r!   Útest_basic_annotate…  s    
 ÿre  zarrow_simple.pngc            
      C   s´   d} d}d}t | ||ƒ}t dd¡\}}tt|j|ƒƒD ]v\}\}}| dd¡ | dd¡ |\} }}dtj	 | d }	|j
ddt |	¡t |	¡|	d	 | |||	d
 |	d
 d�
 q8d S )N)TF)rY   rI   r<   r‰   rç   éþÿÿÿr3   é   r   rÇ   rr   )ÚwidthÚlength_includes_headÚshapeÚhead_starts_at_zeroZ
head_widthÚhead_length)r   r#   r   r:  Úzipr;  Úset_xlimÚset_ylimr]   rÐ   ÚarrowrÏ   r  )
ri  rj  rk  Úkwargsr(   r<  r÷   r   ÚkwargÚthetar    r    r!   Útest_arrow_simple•  s$    
úrt  c                  C   s$   t  ¡ \} }|jdddddd� d S )Nr   )rl  )r#   r   rp  ©Ú_r   r    r    r!   Útest_arrow_empty°  s    rw  c                  C   s@   t  ¡ \} }| dddd¡ | ¡ dks,t‚| ¡ dks<t‚d S )Nr2   )çš™™™™™é?çš™™™™™@)r#   r   rp  r   r&   r€   ru  r    r    r!   Útest_arrow_in_view¶  s    rz  c                  C   sN   t  ¡ \} }|jdddd�}|jd ks*t‚|jdddi d�}|jd k	sJt‚d S )NÚfoo©r   r2   ©r3   r‰   )r_  )r_  Ú
arrowprops)r#   r   ra  Zarrow_patchr&   )r(   r   Úannr    r    r!   Útest_annotate_default_arrow½  s
    r€  c                  C   sp   t  ¡ \} }t |j¡j}t tj¡j}t| 	¡ ƒt| 	¡ ƒksDt
‚t| ¡ | ¡ ƒD ]\}}||ksVt
‚qVdS )z?Check that the signature of Axes.annotate() matches Annotation.N)r#   r   ÚinspectÚ	signaturera  Ú
parametersÚmtextZ
AnnotationÚlistÚkeysr&   rm  Úvalues)r(   r   Zannotate_paramsZannotation_paramsÚp1Úp2r    r    r!   Útest_annotate_signatureÆ  s    rŠ  zfill_units.pngÚdpié<   )Úsavefig_kwargc                  C   s   dd l m  m}  |  ¡  | jdt ddd¡d�}d| j }|  dd¡}tj	d	d
dd�}t
 |¡}t dd¡\}\\}}\}	}
|j|g|gddd� ddddg}| || ddddgd¡ |j|g|gddd� | |||| || gddddgd¡ |	j|g|gddd� |	 || d| j d| j d| j d| j gd¡ |
j|g|gddd� |
j|||| || gd| j d| j d| j d| j gdd� | ¡  d S )Nr   ÚETéÙ  rç   é   ©Údtç      $@g     õ@z
2009-04-27z
2009-04-29údatetime64[D]rF  r3   ÚdegÚred)Zyunitsr¥   r2   rS  g     €V@ÚbéZ   r¤   )rë   )r¨   r©   rª   r«   ÚEpochÚdatetimer•  ÚDurationr]   rb   ÚmdatesÚdate2numr#   r   r}   ÚfillZautofmt_xdate)r›   rb  ÚvalueÚdayr’  Zdtnr(   rÕ   rÜ   rÝ   Úax4Úindr    r    r!   Útest_fill_unitsÐ  s6    


 ÿ
"þ"þr£  c                	   C   sª   t jtdd�� tjdgdgddd� W 5 Q R X t jtdd�� tjdgdgdd	d
� W 5 Q R X t jtdd�� tjdgdgddd� W 5 Q R X tjdgdgddd� d S )Nzmarker .* redundantly definedr  r   r†   r,   ©rk   z linestyle .* redundantly definedú-ú--©rˆ   zcolor .* redundantly definedÚrr¤   ©r¥   rè   )r¿   r¥   )rŠ   r-  ÚUserWarningr#   r}   Úerrorbarr    r    r    r!   Ú test_plot_format_kwarg_redundantò  s       r¬  c                 C   s~   ddddg}t  |¡}| ¡ }|  ¡ }|j||t  |¡t  |¡d�^}}| ddg¡ |j||t  |¡t  |¡ddgd� d S )Nr2   r3   r‰   rç   ©ÚxerrÚyerr)r®  r¯  Údashes)r]   rÏ   r  r«  ÚabsZ
set_dashes)r   r   r,   r-   rf   re   rd  rv  r    r    r!   Útest_errorbar_dashesý  s    
"r²  Zsingle_pointc                  C   s’   dt jd< dt jd< t d¡\} \}}| dgdgd¡ | dgdgd¡ dgdgdœ}t d¡\} \}}|jd	d	d|d
� |jddd|d
� d S )Nr†   úlines.markerTú	axes.gridr3   r   r2   ©r‚   r—  r‚   ©r[  r—  )rN   r¬   r#   r   r}   )r(   rÕ   rÜ   r[  r    r    r!   Útest_single_point  s    

r·  zsingle_date.pngr�   )r‘   c                  C   sj   dt jd< t t d¡¡} dg}dg}t  dd¡\}}|d j||  |d	d
d� |d j||d	d
d� d S )N)éùÿÿÿé   zaxes.formatter.limitsz
0000-12-31g    X&AgÃõ(\�bPÀr3   r2   r   r†   r¨  r©  )	r#   r¬   rœ  r�  r]   Ú
datetime64r   Ú	plot_dater}   )r’  Ztime1Údata1r(   r   r    r    r!   Útest_single_date  s    
r½  c                 C   s|   t  d¡ d¡}t  ddd¡ d¡}|  d¡}|d  |¡ |d  |¡ | d¡}|d jdd	d
� |d  | ¡ ¡ d S )Nrr   ©r2   rp   r   rÇ   ©rp   r2   r3   r2   ©g¸…ëQ¸®¿ç¸…ëQ¸®?)r   é	   ©rt   ru   )r]   rb   ry   r   r}   r~   Zravel)r   r   ÚrowÚcolr<  r    r    r!   Útest_shaped_data,  s    

rÆ  c                  C   sZ   t jddgdtfdtfgd�} t ¡  d¡}|d jdd| d� |d	 jddd
| d� d S )N©r2   r2   ©r3   r3   rw   ZtwosrF  r3   r   r¶  r2   r¨  )r]   rþ   rI  r#   r®   r   r}   )Zptsr<  r    r    r!   Útest_structured_data;  s    rÉ  Zaitoff_proj)r   r9  r‘   c                  C   sz   t  t j t jd¡} t  t j d t jd d¡}t  | |¡\}}tjdtdd�d�\}}| ¡  |j|j	|j	ddd	� d
S )z^
    Test aitoff projection ref.:
    https://github.com/matplotlib/matplotlib/pull/14451
    é   r3   )é   çÍÌÌÌÌÌ@Zaitoff©Z
projection)ÚfigsizeÚ
subplot_kwr†   rç   )rq   N)
r]   rÎ   rÐ   Úmeshgridr#   r   ÚdictÚgridr}   r;  )r,   r-   ÚXÚYr(   r   r    r    r!   Útest_aitoff_projE  s    ÿ
rÕ  Zaxvspan_epochc                  C   s˜   dd l m  m}  |  ¡  | jdt ddd¡d�}| jdt ddd¡d�}|  d| j d¡¡}t	 
¡ }|j||d	d
d� | |d|  |d|  ¡ d S ©Nr   rŽ  r�  r2   rÊ  r‘  é   r—   r¤   ç      Ð?)rë   ÚalpharT  )r¨   r©   rª   r«   r™  rš  r›  r   Úconvertr#   r  Úaxvspanrn  ©r›   Út0Útfr’  r   r    r    r!   Útest_axvspan_epochV  s    rß  Zaxhspan_epochç{®Gáz”?)râ   c                  C   s˜   dd l m  m}  |  ¡  | jdt ddd¡d�}| jdt ddd¡d�}|  d| j d¡¡}t	 
¡ }|j||d	d
d� | |d|  |d|  ¡ d S rÖ  )r¨   r©   rª   r«   r™  rš  r›  r   rÚ  r#   r  Úaxhspanro  rÜ  r    r    r!   Útest_axhspan_epoche  s    râ  zhexbin_extent.pngc                  C   st   t  ¡ \} }t d¡d  d¡}|\}}|j||ddddgd� ||dœ}t  ¡ \} }|jd	d
ddddg|d� d S )NéÐ  )r3   éè  rÄ   rÆ   ç333333ã?çffffffæ?)Úextentrà   r,   r-   )rç  r[  )r#   r   r]   rb   ry   Úhexbin)r(   r   r[  r,   r-   r    r    r!   Útest_hexbin_extentt  s    
ré  zhexbin_empty.pngc                  C   s8   t  ¡ \} }| g g ¡ t  ¡ \} }|jg g dd� d S )Nrå   ©Úbins)r#   r   rè  r'   r    r    r!   Útest_hexbin_empty„  s    rì  c                  C   sd   t  ¡ \} }t d¡d  d¡}|\}}|j||ddddgdd�}td	d
d�}| |¡d s`t‚d S )NéÈ   ©r3   rÇ   rÄ   rÆ   rå  ræ  rp   )rç  Zpickeré�  é,  rà   r   )	r#   r   r]   rb   ry   rè  r   Úcontainsr&   )r(   r   r[  r,   r-   ZhbZmouse_eventr    r    r!   Útest_hexbin_pickable�  s    rò  zhexbin_log.pngc                  C   s„   dt jd< tj d¡ d} tj | ¡}dd|  dtj | ¡  }t d|d	 ¡}t  ¡ \}}|j||d
d
dtj	d�}t  
|¡ d S )NFúpcolormesh.snaprV   é † rÃ   ç      @rC  r3   rž   rå   T)Úyscalerë  Ú	marginalsÚreduce_C_function)r#   r¬   r]   r^   r_   Ústandard_normalÚpowerr   rè  ÚsumrC   )Únr,   r-   r(   r   Úhr    r    r!   Útest_hexbin_log™  s    
 ÿrþ  zhexbin_linear.png©r‘   r9  c                  C   s^   t j d¡ d} t j | ¡}dd|  dt j | ¡  }t ¡ \}}|j||ddt jd� d S )	NrV   rô  rÃ   rõ  rC  ©rr   rÁ   T)Zgridsizer÷  rø  )r]   r^   r_   rù  r#   r   rè  rû  )rü  r,   r-   r(   r   r    r    r!   Útest_hexbin_linear¬  s    ÿr  c                  C   sH   t  d¡ d¡\} }t ¡ \}}|j| |dddd�}| ¡ dksDt‚d S )Nrí  rî  rå   r3   rÇ   )rë  ÚvminÚvmax)r]   rb   ry   r#   r   rè  Zget_climr&   )r,   r-   r(   r   rý  r    r    r!   Útest_hexbin_log_clim¹  s    r  c                  C   sÞ   t  ¡ \} }| ¡  | ddddgddddg¡ | ¡ dks@t‚| ¡ dksPt‚t  ¡  t  ¡ \} }| ¡  | ddddgddddg¡ | ¡ d	ks˜t‚| ¡ d
ks¨t‚t  ¡ \} }| 	d¡ | 
dd¡ | ¡ dksÚt‚d S )NéûÿÿÿrW  r3   rç   r2   rÁ   )rç   r  rV  )r  rç   )rÁ   rW  rå   rr   )rr   r2   )r#   r   Úinvert_xaxisr}   r   r&   r€   r  Úinvert_yaxisÚ
set_yscalero  r'   r    r    r!   Útest_inverted_limitsÀ  s    
r	  Znonfinite_limitsc               	   C   s`   t  dt jd¡} t jdd�� t  | ¡}W 5 Q R X t j| t| ƒd < t ¡ \}}| 	| |¡ d S )NrS  rU  Úignore©Údivider3   )
r]   rb   ÚeÚerrstaterå   ÚnanÚlenr#   r   r}   ©r,   r-   r(   r   r    r    r!   Útest_nonfinite_limitsÚ  s    r  Úplot_funr4   r}   Úfill_betweenc                 C   s^   t jdddd�}| ¡ }| ¡ }t|| ƒg g ƒ ||fD ] }t|| ƒ|tt|ƒƒdd� q8d S )Nz
2010-01-01z
2011-01-01r”  rF  ÚC0r©  )r]   rb   r   rî   r­   r  )r  r   r   r,   re   rf   r   r    r    r!   Útest_limits_empty_dataå  s    r  r{   )r9  r‘   c                  C   s’   dt jd< d} t | | f¡\}}|| d 8 }|| d 8 }t |d |d  ||  ¡}t ¡ \}}| |¡ d|i}t ¡ \}}|jd|d� d S )Nrm   úimage.interpolationrÇ   r3   r¨  r¶  )rN   r¬   r]   ÚindicesÚsqrtr#   r   r{   )ÚNr,   r-   r¨  r(   r   r[  r    r    r!   Útest_imshowö  s    

r  Zimshow_clip)Úaarch64Úppc64leÚs390xg×£p=
×ó?)r‘   râ   c            	      C   s°   dt jd< d} t | | f¡\}}|| d 8 }|| d 8 }t |d |d  ||  ¡}t ¡ \}}| || d g¡}|jd }| 	¡ d }| 
¡ }t ||¡}|j||d� d S )Nrm   r  rÇ   r3   rç   r   )Ú	clip_path)rN   r¬   r]   r  r  r#   r   ÚcontourÚcollectionsÚ	get_pathsÚget_transformÚmtransformsZTransformedPathr{   )	r  r,   r-   r¨  r(   r   r6   r  Zclip_transformr    r    r!   Útest_imshow_clip  s    

r%  c               	   C   sP   ddgddgg} t  ¡ }tjtdd��  |j| t dd¡d	d
d� W 5 Q R X dS )ú4Parameters vmin, vmax should error if norm is given.r2   r3   r‰   rç   úLPassing a Normalize instance simultaneously with vmin/vmax is not supported.r  éöÿÿÿrr   r   rÁ   )Únormr  r  N)r#   r  rŠ   r‹   Ú
ValueErrorr{   ÚmcolorsÚ	Normalize)r‚   r   r    r    r!   Útest_imshow_norm_vminvmax(  s    ÿr-  Zpolycollection_joinstylec                  C   sf   t  ¡ \} }t ddgddgddgddgg¡}tjj|gdd�}| |¡ | dd¡ | 	dd¡ d S )Nr2   r3   é(   )Ú
linewidthsr   r‰   )
r#   r   r]   rþ   r�   r!  ZPolyCollectionÚadd_collectionÚ
set_xboundÚ
set_ybound)r(   r   Úvertsr6   r    r    r!   Útest_polycollection_joinstyle2  s    "
r4  z	x, y1, y2rÈ  r‰   rS  r3   Z
2d_x_inputZ2d_y1_inputZ2d_y2_input)Úidsc              	   C   s4   t  ¡ \}}t t¡� | | ||¡ W 5 Q R X d S r×   )r#   r   rŠ   r‹   r*  r  ©r,   r=  r  r(   r   r    r    r!   Útest_fill_between_input=  s    r7  z	y, x1, x2Z
2d_y_inputZ2d_x1_inputZ2d_x2_inputc              	   C   s4   t  ¡ \}}t t¡� | | ||¡ W 5 Q R X d S r×   )r#   r   rŠ   r‹   r*  Úfill_betweenx)r-   Úx1r  r(   r   r    r    r!   Útest_fill_betweenx_inputN  s    r:  Zfill_between_interpolatec               	   C   s  t  ddd¡} t  dt j |  ¡}dt  dt j |  ¡ }tjdddd�\}\}}|j| || |d	d
� |j| ||||kdddd� |j| ||||kddd� t j 	|d¡}t jj
|d< |j| || |d	d
� |j| ||||kddd� |j| ||||kddd� d S )NrS  r3   rà  ç333333ó?rç   r2   TrG  Úblackr©  Úwhiteú/)Úwhererë   ÚhatchÚinterpolater–  )r?  rë   rA  r£   r   r¦   )r]   rb   rÏ   rÐ   r#   r   r}   r  r   Zmasked_greaterZmasked)r,   r=  r  r(   rÕ   rÜ   r    r    r!   Útest_fill_between_interpolate_  s(    ÿÿÿÿrB  Z#fill_between_interpolate_decreasingc               	   C   s°   t  dddg¡} t  dddg¡}t  ddd	g¡}tjd
d�\}}| || d¡ | || d¡ |j| ||||k dddd� |j| ||||kdddd� | dd¡ | dd¡ d S )Ngfffff¢†@i¼  i�  gÍÌÌÌÌÌ"@r¹  ry  gš™™™™™@gffffff@gffffff@)rÂ  rÂ  ©rÎ  ztab:redÚkr¤   Tçš™™™™™Ù?©r?  rë   rA  rÙ  r–  r   r–   é   éX  )r]   rþ   r#   r   r}   r8  rn  ro  )rÍ   rb  Zprofr(   r   r    r    r!   Ú(test_fill_between_interpolate_decreasingw  s$      ÿ  ÿrI  Zfill_between_interpolate_nanc                  C   s´   t  d¡} t  ddt jdddddddg
¡}t  ddddddddt jt jg
¡}t ¡ \}}|j| |d	d
� |j| |dd
� |j| ||||kdddd� |j| ||||kdddd� d S )Nrr   rË  é   é   é   é   rh   r–   rD  ©r6   r—  r¦   Trž   rF  r–  )r]   rb   Úasarrayr  r#   r   r}   r  r6  r    r    r!   Ú!test_fill_between_interpolate_nanŒ  s    
 " ÿ ÿrP  z
symlog.pdfc               
   C   sp   t  ddddddddg¡} t  d	d
ddddddg¡}t ¡ \}}| | |¡ | d¡ | d¡ | dd¡ d S )Nr   r2   r3   rç   é   rÂ  rg  rK  i@B i ¡ rô  rÇ   rÁ   ÚsymlogÚlinearrp   i€–˜ )r]   rþ   r#   r   r}   r  Ú
set_xscalero  r  r    r    r!   Útest_symlog   s    

rU  zsymlog2.pdfc                  C   st   t  ddd¡} t dd¡\}}t|dddd	d
gƒD ],\}}| | | ¡ |jd|d� | d¡ q2|d  dd	¡ d S )NéÎÿÿÿé2   çü©ñÒMbP?rÁ   r2   ç      4@rÃ   r£   rÄ   rU  rR  )Ú	linthreshTrp   çš™™™™™¹¿)	r]   rb   r#   r   rm  r}   rT  rÒ  ro  )r,   r(   r<  r   rZ  r    r    r!   Útest_symlog2¬  s    r\  c                  C   s¨   dddddddg} dddd	dd
dddddddg}t  | |¡\}}t  ||¡}t |¡ t t|ƒ¡ t | ||d d…d d…f ¡ t ||t|d d…d d…f ƒ¡ d S )Nç      ø¿ç      ð¿rN  rS  rž   r£   r�   g      ô¿g      è¿g      Ð¿r   rØ  ç      è?ç      ô?rp   )r]   rÐ  Úhypotr#   Úpcolorr…  )r,   r-   rÓ  rÔ  rQ  r    r    r!   Útest_pcolorargs_5205¹  s         ÿ
rc  rP  c                  C   s*  dt jd< d} t dd| ¡}t dd| d ¡}t ||¡\}}t |¡t |¡ }t |¡t |¡ }|d }t ||¡d }|| ¡  | 	¡  }t
 t |¡d	t |¡ k |¡}t  d
d¡\}	\}
}}|
j|||d d…d d…f d	dd� |j|||d d…d d…f dddgd� |j|||dd� d S )NFró  rg  r]  r�   r3   çš™™™™™ñ?rÁ   rž   r2   r‰   rp   rD  ©rû   Ú
edgecolorsr—  ÚwÚgouraud©Úshading)r#   r¬   r]   rÎ   rÐ  r  rÏ   ra  ÚminÚptpr   Úmasked_wherer±  Úmaxr   rP  )rü  r,   r-   rÓ  rÔ  ÚQxÚQzrQ  ÚZmr(   rÕ   rÜ   rÝ   r    r    r!   Útest_pcolormeshÇ  s    
 $(rr  Zpcolormesh_smallZepsc                  C   s6  d} t  dd| ¡}t  dd| d ¡}t  ||¡\}}t  |¡t  |¡ }t  |¡t  |¡ }|d }t  ||¡d }|| ¡  | ¡  }t 	t  
|¡dt  |¡ k |¡}t dd¡\}	\}
}}|
j|||d d	…d d	…f dd
d� |j|||d d	…d d	…f dddgd� |j|||dd� |	jD ]}| ¡  �q"d S )Nr‰   r]  r�   r3   rd  rÁ   rž   r2   rp   rD  re  r—  rg  rh  ri  )r]   rÎ   rÐ  r  rÏ   ra  rk  rl  r   rm  r±  rn  r#   r   rP  r  Úset_axis_off)rü  r,   r-   rÓ  rÔ  ro  rp  rQ  rq  r(   rÕ   rÜ   rÝ   r   r    r    r!   Útest_pcolormesh_smallß  s      $(
rt  Zpcolormesh_alphaÚpdf)r   r9  c                  C   sˆ  dt jd< d} t t dd| ¡t dd| d ¡¡\}}|}|t |¡ }t ||¡d }|| ¡  | ¡  }t	j
d  d	¡}|t d	¡ƒ}d
d
t t d	¡¡  |d d …df< t |¡}t  dd¡\}	\\}
}\}}|
|||fD ]&}| tjddddddd
gdd�¡ qà|
j|||d d…d d…f |dddd� |j||||dddd� |j|||d d…d d…f |ddd� |j||||ddd� d S )NFró  rg  r]  r�   r3   rÁ   Úviridisé   rž   r‰   )r   r]  ræ  rÄ   r   )rë   Úzorderrp   rE  r;  r2   )rn   rÙ  rj  rx  rh  )rn   rj  rx  )r#   r¬   r]   rÐ  rÎ   rÏ   ra  rk  rl  r�   Ú	colormapsÚ	resampledrb   r+  ZListedColormapr   Ú	add_patchÚmpatchesÚ	RectanglerP  )rü  rÓ  rÔ  ro  ZQyrQ  ZvirÚcolorsrn   r(   rÕ   rÜ   rÝ   r¡  r   r    r    r!   Útest_pcolormesh_alphaô  s<    
þ$
   
 ÿ
 ÿ&r  z
dims,alpharZ  )rç   rž   c                 C   sN   |   ¡ }tjdd|ftd�d }| |¡ |  ¡ }|j|d ddd|d	� d S )
NrÁ   rQ  rF  r3   ).r   Úgrayr   r2   )rn   r  r  rÙ  )r   r]   rw   rI  rP  )r   r   ZdimsrÙ  r   r6   r    r    r!   Útest_pcolormesh_rgba  s
    
r�  zpcolormesh_datetime_axis.pngc                     s–  dt jd< t  ¡ } | jdddd� t ddd¡‰ t ‡ fd	d
„tdƒD ƒ¡}t d¡}t 	t d¡t d¡¡\}}|| }t  
d¡ t  |d d… |d d… |d d…d d…f ¡ t  
d¡ t  |||¡ tj|tj ddd�}tj|d d …tjf ddd�}t  
d¡ t  |d d…d d…f |d d…d d…f |d d…d d…f ¡ t  
d¡ t  |||¡ |  ¡ D ]*}| ¡ D ]}| d¡ | d¡ �qr�qfd S )NFró  rE  ç\�Âõ(\ï?ç333333Ã?©Zhspacer8   rH   éÝ  r2   c                    s   g | ]}ˆ t j|d � ‘qS ©©Údays©rš  Ú	timedelta©r™   Úd©Úbaser    r!   rœ   *  s     z1test_pcolormesh_datetime_axis.<locals>.<listcomp>r×  rÊ  éÝ   rp   éÞ   r   ©rA  éß   éà   r<   r–   )r#   r¬   r®   Úsubplots_adjustrš  r]   rþ   r­   rb   rÐ  r  rP  ÚrepeatÚnewaxisÚget_axesÚget_xticklabelsÚset_haÚset_rotation©r(   r,   r-   Zz1Zz2Úzr   r*   r    r�  r!   Útest_pcolormesh_datetime_axis"  s,    


.

>

r�  zpcolor_datetime_axis.pngc                     sŒ  t  ¡ } | jdddd� t ddd¡‰ t ‡ fdd„td	ƒD ƒ¡}t d	¡}t t d
¡t d
¡¡\}}|| }t  	d¡ t  
|d d… |d d… |d d…d d…f ¡ t  	d¡ t  
|||¡ tj|tj d	dd�}tj|d d …tjf d	dd�}t  	d¡ t  
|d d…d d…f |d d…d d…f |d d…d d…f ¡ t  	d¡ t  
|||¡ |  ¡ D ]*}| ¡ D ]}| d¡ | d¡ �qh�q\d S )NrE  r‚  rƒ  r„  r…  r2   c                    s   g | ]}ˆ t j|d � ‘qS r†  r‰  r‹  r�  r    r!   rœ   C  s     z-test_pcolor_datetime_axis.<locals>.<listcomp>r×  rÊ  r�  rp   r�  r   r‘  r’  r“  r<   r–   )r#   r®   r”  rš  r]   rþ   r­   rb   rÐ  r  rb  r•  r–  r—  r˜  r™  rš  r›  r    r�  r!   Útest_pcolor_datetime_axis>  s*    

.

>

rž  c               	   C   s  d} t  dd| ¡}t  dd| d ¡}t  ||¡\}}t  ||¡d }t ¡ \}}t t¡� | 	|||¡ W 5 Q R X t t¡� | 	|||j
¡ W 5 Q R X t t¡�( |j	|||d d…d d…f dd� W 5 Q R X t t¡�( |j	|||d d…d d…f dd� W 5 Q R X t j|d	< t t¡�$ | 	|||d d…d d…f ¡ W 5 Q R X t jd
d�� t jj||d	k d�}W 5 Q R X t t¡�$ | 	|||d d…d d…f ¡ W 5 Q R X dd	dg}ddg}t  ||¡\}}t  |j¡}tjtdd�� |j	|||dd� W 5 Q R X d S )Nrg  r]  r�   r3   rÁ   rp   rh  ri  r   r
  ©Úinvalid)Úmaskig  r2   r(  rr   z.are not monotonically increasing or decreasingr  Úauto)r]   rÎ   rÐ  ra  r#   r   rŠ   r‹   rŒ   rP  ÚTÚNaNr*  r  r   rþ   Úzerosrj  r-  rª  )rü  r,   r-   rÓ  rÔ  rQ  rv  r   r    r    r!   Útest_pcolorargsW  s:    ,,
((
ÿr¦  c                 C   sž   |   ¡ }t dd¡}t dd¡}tj d¡ tj dd¡}|j|||dd� |  ¡ }|d d	… t |¡d  }|d d	… t |¡d  }|j|||d
d� d S )Nr   rr   r‰   rV   r3   rÂ  r;  ri  rp   rm   ©r   r]   rb   r^   r_   ÚrandnrP  Údiff©r   r   r   r,   r-   rQ  r  r  r    r    r!   Útest_pcolornearestx  s    r«  c                 C   sœ   |   ¡ }dd„ tdƒD ƒ}t dd¡}tj d¡ tj dd¡}|j|||d	d
� |  ¡ }dd„ tdƒD ƒ}|d d… t |¡d  }|j|||dd
� d S )Nc                 S   s   g | ]}t j  |d  ¡‘qS )é  ©rš  Úfromtimestampr˜   r    r    r!   rœ   ‹  s     z+test_pcolornearestunits.<locals>.<listcomp>rr   r   r‰   rV   r3   rÂ  r;  ri  c                 S   s    g | ]}t j  |d  d ¡‘qS )rž   r¬  r­  r˜   r    r    r!   rœ   “  s     rp   rm   )	r   r­   r]   rb   r^   r_   r¨  rP  r©  rª  r    r    r!   Útest_pcolornearestunitsˆ  s    r¯  c               	   C   sn   t  ¡ \} }t dd¡}t dd¡}tj d¡ tj dd¡}tjt	dd�� |j
|||dd� W 5 Q R X d S )	Nr   rÂ  r‰   rV   zDimensions of Cr  r;  ri  )r#   r   r]   rb   r^   r_   r¨  rŠ   r‹   rŒ   rP  ©r(   r   r,   r-   rQ  r    r    r!   Útest_pcolorflaterror˜  s    r±  c               	   C   s`   t  ¡ \} }t t d¡t d¡¡\}}|| }tjtdd�� |j|||dd� W 5 Q R X d S )NrÁ   r‰   z.*one smaller than Xr  r;  ri  )	r#   r   r]   rÐ  rb   rŠ   r‹   rŒ   rP  r°  r    r    r!   Útest_samesizepcolorflaterror¢  s
    r²  ÚsnapFc           	      C   sž   |   ¡ }t dd¡}t dd¡}tj d¡ tj dd¡}|j||||d� |  ¡ }|d d… t |¡d	  }|d d… t |¡d	  }|j||||d� d S )
Nr   rr   rç   rV   r‰   rÂ  )r³  rp   r3   r§  )	r   r   r³  r   r,   r-   rQ  r  r  r    r    r!   Útest_pcolorautoª  s    r´  Ú	canonicalc                  C   s    t  ¡ \} }| dddg¡ d S ©Nr2   r3   r‰   ©r#   r   r}   r'   r    r    r!   Útest_canonical½  s    r¸  zarc_angles.pngc            
      C   sL  d} d}d}d}t  dd¡\}}t|jƒD �]\}}|d d }|d }	| tj|| |dd	�¡ | tj|| ||	|d
�¡ | |t	 
t	 |	¡¡ |d  |d |t	 
t	 |¡¡ |d  g|t	 t	 |	¡¡ |d  |d |t	 t	 |¡¡ |d  g¡ | | |¡ | | |¡ | d9 } |d9 }|d d |d d f}|d9 }q*d S )Nr3   r2   )rÅ   rž   r‰   éh  rÂ  é-   rÆ   ©rÙ  )Útheta1Útheta2r   rr   )r#   r   r:  r;  r{  r|  ZEllipseÚArcr}   r]   r  Údeg2radrÏ   rn  ro  )
rg  rý  Zcentrerä   r(   r<  r÷   r   r½  r¼  r    r    r!   Útest_arc_anglesÃ  s2    þþýrÀ  Zarc_ellipsec               	   C   sH  d\} }d\}}d}t  t  d¡¡}|d t  |¡ }|d t  |¡ }t  |¡}t  t  |¡t  |¡ gt  |¡t  |¡gg¡}	t  |	||g¡\}}|| 7 }||7 }t ¡ }
|
j	ddd�}|j
||d	d
d
ddd� tj| |f|||dddd�}| |¡ |
j	ddd�}|j
||d	dddd� tj| |f|||dddd�}| |¡ d S )N)gR¸…ëQØ?g¤p=
×£à?)rÄ   rÆ   éâÿÿÿr¹  rÃ   r  r¢  )rs   rÅ   Úyellowr2   )rÙ  rë   rì   rí   rx  r3   F)Úanglerí   rž  rx  r  Úequalr¦   )rÙ  rë   rì   rx  )r]   r¿  rb   r  rÏ   rþ   ra   r#   r®   r”   rž  r|  r¾  r{  )ZxcenterÚycenterrh  ÚheightrÃ  rs  r,   r-   ZrthetaÚRr(   r   Úe1Úe2r    r    r!   Útest_arc_ellipseå  sH    
þ ÿ   ÿ
   ÿrÊ  c                  C   sn   t  ¡ \} }t d¡}|jdddgdddg|d� |jdddgdddg|d� |jdddgdddg|d� d S )Nr†   r2   r3   r‰   r¤  rç   rÁ   )r#   r   ÚmmarkersÚMarkerStyler}   r4   r«  )Úfixr   Úmr    r    r!   Útest_marker_as_markerstyle
  s
    
rÏ  Ú	markeveryc                  C   s�   t  ddd¡} t  | ¡t  | d d ¡ }t ¡ \}}|j| |ddd� |j| |dd d	d
� |j| |dddd
� |j| |dddd
� | ¡  d S )Nr   rr   rÇ   rž   r†   r?  ©r*   rŒ  úmark all©rÐ  r*   rc  úmark every 10ú+©rÁ   rÊ  úmark every 5 starting at 10©r]   rÎ   rÏ   r  r#   r   r}   rB   r  r    r    r!   Útest_markevery  s    rÙ  Zmarkevery_lineg{®Gázt?)r9  râ   c                  C   s�   t  ddd¡} t  | ¡t  | d d ¡ }t ¡ \}}|j| |ddd� |j| |dd d	d
� |j| |dddd
� |j| |dddd
� | ¡  d S )Nr   rr   rÇ   rž   z-or?  rÑ  z-drÒ  rÓ  z-srÔ  z-+rÖ  r×  rØ  r  r    r    r!   Útest_markevery_line   s    rÚ  Zmarkevery_linear_scalesrX  c            
      C   sÚ   d dddddgddgt dd	d
ƒdddddg} d
}tj t| ƒ| d |¡}d}t ddd|  d	¡| }t |¡d | }t| ƒD ]R\}}|| }|| }	t	 
|||	f ¡ t	 dt|ƒ ¡ t	j||ddd|d� q‚d S )NrË  ©r–   rË  rw  rK  r–   r   rp   rÇ   rí  r‰   rÄ   rÆ   r�   ©rS  rÄ   ©çÍÌÌÌÌÌÜ?rÄ   r2   ç)\�Âõ(¼?rr   r3   r£   úmarkevery=%sr†   r¥  rç   ©ÚlsÚmsrÐ  )ÚslicerN   ÚgridspecÚGridSpecr  r]   rÎ   rÏ   r:  r#   r  r+   Ústrr}   ©
ÚcasesÚcolsÚgsÚdeltar,   r-   r÷   ÚcaserÄ  rÅ  r    r    r!   Útest_markevery_linear_scales2  s.     
   úrî  Zmarkevery_linear_scales_zoomedc            
      C   sî   d dddddgddgt dd	d
ƒdddddg} d
}tj t| ƒ| d |¡}d}t ddd|  d	¡| }t |¡d | }t| ƒD ]f\}}|| }|| }	t	 
|||	f ¡ t	 dt|ƒ ¡ t	j||ddd|d� t	 d¡ t	 d¡ q‚d S )NrË  rÛ  rw  rK  r–   r   rp   rÇ   rí  r‰   rÄ   rÆ   r�   rÜ  rÝ  r2   rß  rr   r3   r£   rà  r†   r¥  rç   rá  )rQ  gÍÌÌÌÌÌ@)rd  g333333û?)rä  rN   rå  ræ  r  r]   rÎ   rÏ   r:  r#   r  r+   rç  r}   rt   ru   rè  r    r    r!   Ú#test_markevery_linear_scales_zoomedK  s2     
   ú
rï  Zmarkevery_log_scalesc            
      C   sî   d dddddgddgt dd	d
ƒdddddg} d
}tj t| ƒ| d |¡}d}t ddd|  d	¡| }t |¡d | }t| ƒD ]f\}}|| }|| }	t	 
|||	f ¡ t	 dt|ƒ ¡ t	 d¡ t	 d¡ t	j||ddd|d� q‚d S )NrË  rÛ  rw  rK  r–   r   rp   rÇ   rí  r‰   rÄ   rÆ   r�   rÜ  rÝ  r2   rß  rr   r3   r£   rà  rå   r†   r¥  rç   rá  )rä  rN   rå  ræ  r  r]   rÎ   rÏ   r:  r#   r  r+   rç  Úxscalerö  r}   rè  r    r    r!   Útest_markevery_log_scalesf  s2     
   ú

rñ  Zmarkevery_polarc            	      C   sÊ   d dddddgddgt dd	d
ƒdddddg} d
}tj t| ƒ| d |¡}t ddd	¡}dtj | }t| ƒD ]V\}}|| }|| }t	j
|||f dd� t	 dt|ƒ ¡ t	j||ddd|d� qnd S )NrË  rÛ  rw  rK  r–   r   rp   rÇ   rí  r‰   rÄ   rÆ   r�   rÜ  rÝ  r2   rõ  r3   T©Úpolarrà  r†   r¥  rç   rá  )rä  rN   rå  ræ  r  r]   rÎ   rÐ   r:  r#   r  r+   rç  r}   )	ré  rê  rë  r¨  rs  r÷   rí  rÄ  rÅ  r    r    r!   Útest_markevery_polar�  s,     
   úrô  Zmarkevery_linear_scales_nansc            
      C   s   d dddddgddgt dd	d
ƒdddddg} d
}tj t| ƒ| d |¡}d}t ddd|  d	¡| }t |¡d | }tj |d d…<  |dd …< |dd…< t	| ƒD ]R\}}|| }|| }	t
 |||	f ¡ t
 dt|ƒ ¡ t
j||ddd|d� q¨d S )NrË  rÛ  rw  rK  r–   r   rp   rÇ   rí  r‰   rÄ   rÆ   r�   rÜ  rÝ  r2   rß  rr   r3   r£   éìÿÿÿrW  éF   rà  r†   r¥  rç   rá  )rä  rN   rå  ræ  r  r]   rÎ   rÏ   r  r:  r#   r  r+   rç  r}   rè  r    r    r!   Ú!test_markevery_linear_scales_nans™  s0     
   ú&r÷  Zmarker_edgesc                  C   sz   t  ddd¡} t ¡ \}}|j| t  | ¡ddddd� |j| d t  | ¡ddddd� |j| d	 t  | ¡ddd
dd� d S )Nr   r2   rr   zy.ç      >@r¨  )rã  ÚmewÚmecrÄ   rÅ   r3   r—  )r]   rÎ   r#   r   r}   rÏ   ©r,   r(   r   r    r    r!   Útest_marker_edges³  s
     rü  zbar_tick_label_single.pngc                  C   sP   t  ¡ } | jddddd� dddœ}t  ¡ \}} t  ¡ } | jdddd|d	� d S )
Nr   r2   ÚedgeÚ0)ÚalignÚ
tick_labelrµ  r‚   r—  )rÿ  r   r[  )r#   r  Úbarr   )r   r[  r(   r    r    r!   Útest_bar_tick_label_single¼  s    
r  c                  C   s&   t  ¡ \} }| ddgtjdg¡ d S )Nr   r2   rç   )r#   r   r  r]   r  r'   r    r    r!   Útest_nan_bar_valuesÉ  s    r  c                  C   s   t  ¡ \} }| g g ¡ d S r×   )r#   r   r  r'   r    r    r!   Útest_bar_ticklabel_failÎ  s    r  zbar_tick_label_multiple.pngc                  C   s0   t  ¡ } | jddgddgddgddgdd	� d S )
Nr2   ç      @r3   rÅ   rž   r‚   r—  rP   ©rh  r   rÿ  )r#   r  r  ©r   r    r    r!   Útest_bar_tick_label_multipleÓ  s    ÿr  z/bar_tick_label_multiple_old_label_alignment.pngc                  C   s:   dt jd< t ¡ } | jddgddgddgdd	gdd
� d S )NrP   zytick.alignmentr2   r  r3   rÅ   rž   r‚   r—  r  )rN   r¬   r#   r  r  r  r    r    r!   Ú*test_bar_tick_label_multiple_old_alignmentÛ  s
    
ÿr	  c                 C   sh   |   ¡ }ddddg}ddddg}d	d
„ |D ƒ}dd
„ |D ƒ}|j||dd� |  ¡ }|j||dd� d S )Nr�   çÍÌÌÌÌÌ @ç333333@rÌ  rd  ry  çffffff
@çš™™™™™@c                 S   s   g | ]}t |ƒ‘qS r    r   r˜   r    r    r!   rœ   é  s     z+test_bar_decimal_center.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ‘qS r    r   r¡   r    r    r!   rœ   ê  s     rP   ©rÿ  ©r   r  ©r   r   r   Úx0Úy0r,   r-   r    r    r!   Útest_bar_decimal_centerä  s    r  c                 C   s|   |   ¡ }ddddg}ddddg}d	d
„ |D ƒ}dd
„ |D ƒ}|j||ddddgdd� |  ¡ }|j||ddddgdd� d S )Nr�   r
  r  rÌ  rd  ry  r  r  c                 S   s   g | ]}t |ƒ‘qS r    r   r˜   r    r    r!   rœ   ÷  s     z,test_barh_decimal_center.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ‘qS r    r   r¡   r    r    r!   rœ   ø  s     rž   r2   rP   ©rÆ  rÿ  ©r   Úbarhr  r    r    r!   Útest_barh_decimal_centerò  s    r  c                 C   sj   ddddg}ddddg}d	d
ddg}dd„ |D ƒ}|   ¡ }|j|||dd� |  ¡ }|j|||dd� d S )Nr�   r
  r  rÌ  rd  ry  r  r  ræ  ç333333÷?r2   r3   c                 S   s   g | ]}t |ƒ‘qS r    r   ©r™   r÷   r    r    r!   rœ     s     z*test_bar_decimal_width.<locals>.<listcomp>rP   ©rh  rÿ  r  )r   r   r,   r-   Zw0rg  r   r    r    r!   Útest_bar_decimal_width   s    r  c                 C   sj   ddddg}ddddg}d	d
ddg}dd„ |D ƒ}|   ¡ }|j|||dd� |  ¡ }|j|||dd� d S )Nr�   r
  r  rÌ  rd  ry  r  r  ræ  r  r2   r3   c                 S   s   g | ]}t |ƒ‘qS r    r   r  r    r    r!   rœ     s     z,test_barh_decimal_height.<locals>.<listcomp>rP   r  r  )r   r   r,   r-   Zh0rý  r   r    r    r!   Útest_barh_decimal_height  s    r  c                  C   sR   t  ¡ } | jddgddgdddd�}|D ]$}| ¡ dks<t‚| ¡ d	ks(t‚q(d S )
Nr2   r3   rç   rÆ   rè   r¨  ©rÙ  r¥   rì   ©r   r   r   r   ©r2   r   r   rÆ   ©r#   r  r  Úget_facecolorr&   Úget_edgecolor©r   ÚrectsÚrectr    r    r!   Útest_bar_color_none_alpha  s
    r&  c                  C   sR   t  ¡ } | jddgddgdddd�}|D ]$}| ¡ dks<t‚| ¡ d	ks(t‚q(d S )
Nr2   r3   rç   rÆ   r¨  rè   r  r  r  r   r#  r    r    r!   Útest_bar_edgecolor_none_alpha$  s
    r'  zbarh_tick_label.pngc                  C   s0   t  ¡ } | jddgddgddgddgdd	� d S )
Nr2   r  r3   rÅ   rž   r‚   r—  rP   )rÆ  r   rÿ  )r#   r  r  r  r    r    r!   Útest_barh_tick_label,  s    ÿr(  c                  C   s^  t  ¡ \} }|jt ddd¡dtjdd�d� |jt ddd¡dtjdd�tjdd�d� t  ¡ \} }|jt ddd¡dtjdd�d	� |jt ddd¡dtjdd�tjdd�d
� t  ¡ \} }|jt ddd¡t ddd¡gt ddg¡tjdd�d	� |jt ddd¡t ddd¡gt ddg¡dd„ dD ƒd	� | t ddd¡tjdd�fgd¡ dS )z>Smoketest that bar can handle width and height in delta units.éâ  r2   r£   r‰   ©Úhours©rh  r3   )r®  rh  )rÆ  )rÆ  r¯  r�   c                 S   s   g | ]}t j|d �‘qS )r*  r‰  ©r™   rb  r    r    r!   rœ   H  s     z&test_bar_timedelta.<locals>.<listcomp>ræ   )rr   rÊ  N)	r#   r   r  rš  rŠ  r  r]   rþ   Úbroken_barhr'   r    r    r!   Útest_bar_timedelta4  s<    
ÿ

þ
ÿ

þ
þþ
ÿþr/  c                 C   sB   t j dd¡}| jdd| jdd�d�j}t ¡  tj||d� d S )NrÁ   r3   z1/1/2000r2   )Úyears)ÚperiodsÚfreq©Ú	positions)	r]   r^   r“   Ú
date_rangeZ
DateOffsetÚyearr#   r®   Úboxplot)Úpdr[  r0  r    r    r!   Útest_boxplot_dates_pandasN  s     
ÿr9  c                  C   sê   t j dd¡} t d¡\}}|d j| dddgdddgd� |d	 j| dddgdd� |d
 j| dddgd� |d j| ddddgd� |d j| ddd� |d j| dd� |d j| dddgd� |d j| dd� |d  | ¡ d S )NrÁ   r‰   rÂ  r   rÆ   rÅ   rÄ   )Ú	capwidthsÚwidthsr2   r3   ©r:  rž   rç   rQ  ©r;  r¹  rË  )r]   r^   r“   r#   r   r7  )r[  r(   r<  r    r    r!   Útest_boxplot_capwidthsW  s     r>  c                 C   sØ   ddl m}m} t ¡ }| d¡}t ddd¡g}t|ƒdk rZ| |d tj	dd	� ¡ q2t
 d
¡}t
 ||¡\}}t|ƒd t|ƒd f}	t
 |	d |	d  ¡}
|	|
_z"|ƒ  | |||
¡}|j ¡  W 5 |ƒ  X d S )Nr   )Úregister_matplotlib_convertersÚ deregister_matplotlib_converterséo   éå  r2   r¹  rp   éx   )ÚsecondsrÁ   )Zpandas.plottingr?  r@  r#   r®   r”   rš  r  ÚappendrŠ  r]   rb   rÐ  rj  rP  ÚcanvasrØ   )r8  r?  r@  r(   r   ÚtimesZy_valsZ	time_axisZy_axisrj  Zz_dataÚimr    r    r!   Útest_pcolor_regressionh  s     

rI  c                 C   s¦   |   dddgdddgdddgdddgdœ¡}|  |dddg ¡|d	< |d	d
g  d	g¡ ¡ }|j}|d
 }|d
 }t ¡ \}}|j||ddd� |j||ddd� d S )Nr)  r2   r3   r‰   )r6  Úmonthr   rŸ  r6  rJ  r   ÚdaterŸ  rr   rP   r  Úorangerç   rú   )	Ú	DataFrameÚto_datetimeÚgroupbyrû  Úindexr#   r   r  r}   )r8  ÚdfZmonthlyÚdatesZforecastÚbaseliner(   r   r    r    r!   Útest_bar_pandas†  s    ýÿrT  c                 C   sJ   | j dddgdddgdœdd	d
gd�}t ¡ \}}|j|jd|jd� d S )Nr£   rÃ   rõ  rÅ   rE  rå  )r,   rh  r2   r3   r‰   ©rP  r,  )rM  r#   r   r  r,   rh  ©r8  rQ  r(   r   r    r    r!   Útest_bar_pandas_indexed™  s
    ÿrW  c                 C   sh   |   ¡ }|  ¡ }ddg}ddg}ddg}tdƒD ]"}|j|| || d|| d� q0|j|||d� d S )	Nr2   r3   r‰   r,   r†   r  )r¥   r@  ©r@  )r   r­   r  )r   r   re   rf   r,   r-   Úhatchesr÷   r    r    r!   Útest_bar_hatches¡  s     rZ  )r,   rh  r*   Úexpected_labelsÚcontainer_labelr,   r2   Ú
_nolegend_r‚   r—  r6   rr   rÊ  rÈ   ÚAÚBÚCrÇ  rÔ  Úbarsc           	      C   sJ   t  ¡ \}}|j| ||d�}dd„ |D ƒ}||ks6t‚| ¡ |ksFt‚d S )NrÑ  c                 S   s   g | ]}|  ¡ ‘qS r    )rR   )r™   r  r    r    r!   rœ   ¿  s     z#test_bar_labels.<locals>.<listcomp>)r#   r   r  r&   rR   )	r,   rh  r*   r[  r\  rv  r   Úbar_containerZ
bar_labelsr    r    r!   Útest_bar_labels°  s
    rc  c               	   C   s€   t  ¡ \} }t t¡�$ |jddgddgdddgd� W 5 Q R X t  ¡ \} }t t¡�  |jddgddgdgd� W 5 Q R X d S )	Nr,   r-   r2   r3   rÓ  rÔ  rQ  rÑ  )r#   r   rŠ   r‹   r*  r  ru  r    r    r!   Útest_bar_labels_lengthÄ  s    (rd  c                 C   sˆ   | j ddgdd�| j ddgdd�fD ]4}t ||¡ t |j|¡ t |¡ t |j¡ q$|  ddddgi¡}t |¡ t ||¡ d S )Nr2   r3   Úfloat64rF  ZFloat64rÅ  r‰   )ÚSeriesr#   r}   rP  rM  )r8  r,   rQ  r    r    r!   Útest_pandas_minimal_plotÍ  s    ÿ

rg  Zhist_logc                  C   sH   t  ddd¡d } t  d|  d|  g¡}t ¡ \}}|j|ddd� d S )Nr   r2   rí  r‰   FT)rž  rå   )r]   rÎ   Úconcatenater#   r   Úhist)Zdata0r[  r(   r   r    r    r!   Útest_hist_logÚ  s    rj  c                 C   s°   |   dd¡}|  dd¡}tdddgƒD ]„\}}|d|f  d¡ |d|f jdd|d	� |d|f jdd|d	� |d|f  d¡ |d d …|f D ]}|jddd
|d� q’q&d S )Nr3   r‰   r  ÚstepÚ
stepfilledr   rå   r2   ©ÚhisttypeT)rå   rn  )r   r:  r  ri  )r   r   rƒ   r„   r÷   rn  r   r    r    r!   Útest_hist_log_2â  s    ro  c                  C   sŒ   t  d¡\} }|d jdgddggddd� |d  d¡ |d jdddgddd� |d  d¡ | j ¡  |d  ¡ |d  ¡ ksˆt‚d S )Nr3   r   r2   Ú
barstackedrm  rå   )r#   r   ri  r  rF  rØ   r€   r&   ©r(   r<  r    r    r!   Útest_hist_log_barstackedò  s    
rr  zhist_bar_empty.pngc                  C   s   t  ¡ } | jg dd� d S )Nr  rm  ©r#   r  ri  r  r    r    r!   Útest_hist_bar_emptyü  s    rt  c                  C   s˜   t j d¡ t  t jjdddd�dd¡ t j¡} tj| ddd	�}|d
 }t	dt
|ƒƒD ]<}||d   ¡ }||  ¡ }|d d |d d ksVt‚qVd S )NrV   rž   rÆ   rä  ©Úsizer   r2   r‰   )rë  rÙ  r3   )r]   r^   r_   Úclipr`   ÚastypeZfloat16r#   ri  r­   r  Zget_cornersr&   )r‡  rý  Úbcr¨  ZrleftZrrightr    r    r!   Útest_hist_float16  s      ÿÿrz  zhist_step_empty.pngc                  C   s   t  ¡ } | jg dd� d S )Nrk  rm  rs  r  r    r    r!   Útest_hist_step_empty  s    r{  zhist_step_filled.pngc            
      C   sÖ   t j d¡ t j dd¡} d}ddiddidd ii gd }d	gd
 dgd
  }tjdd
d�\}}t|||jƒD ]B\}}}|j| |f|ddœ|—Ž | 	d||f ¡ |j
dd� qn|d j}	tdd„ |	D ƒƒsÒt‚d S )Nr   rä  r‰   rr   rž  TFr3   rk  rç   rl  )ÚnrowsÚncols©rn  Ústackedz%s/%srV  ©rH   ©r   r   c                 s   s   | ]}|  ¡ | ¡ kV  qd S r×   )r!  r"  )r™   rÍ   r    r    r!   Ú	<genexpr>)  s     z(test_hist_step_filled.<locals>.<genexpr>)r]   r^   r_   r¨  r#   r   rm  r;  ri  r/   ro  rò   Úallr&   )
r,   Zn_binsrq  Útypesr(   r<  ZkgÚ_typer   rò   r    r    r!   Útest_hist_step_filled  s    
r†  zhist_density.pngc                  C   s6   t j d¡ t j d¡} t ¡ \}}|j| dd� d S )NrV   rã  T©Údensity)r]   r^   r_   rù  r#   r   ri  ©r[  r(   r   r    r    r!   Útest_hist_density,  s    rŠ  c                  C   s^   t j d¡} |  d¡}ddddddg}tj||d	d
�\}}}t j||d	d
�\}}t||ƒ d S )Ni‹à  rÇ   rW  rp   rN  r   r2   rÁ   T)rë  rˆ  )r]   r^   ZRandomStater¨  r#   ri  Z	histogramr   )Úrngrb  rë  Zmpl_heightsrv  Z
np_heightsr    r    r!   Útest_hist_unequal_bins_density4  s    
rŒ  c                  C   sd   t   ddd¡t   ddd¡gt   ddd¡t   ddd¡gg} t ¡ \}}|j| dd� |j| dd� d S )Néá  r2   r3   T)r  F)rš  r#   r   ri  r‰  r    r    r!   Útest_hist_datetime_datasets?  s    ÿrŽ  Úbins_preprocessc                 C   s   | S r×   r    rê  r    r    r!   Ú<lambda>I  ó    r�  c                 C   s   t  | d¡S )Nrº  )r]   rO  rê  r    r    r!   r�  J  r‘  r�  zdatetime.datetimeznp.datetime64c              	   C   s   t   ddd¡t   ddd¡t   ddd¡t   ddd¡gt   ddd¡t   ddd¡t   ddd¡t   ddd¡gg}t   ddd¡t   ddd¡t   ddd¡g}t ¡ \}}|j|| |ƒdd	�\}}}tj |tj 	|¡¡ |j|| |ƒd
d	�\}}}tj |tj 	|¡¡ d S )Niã  r2   rÁ   rL  r3   r‰   rJ  T)rë  r  F)
rš  r#   r   ri  r]   r©   r   r�   rR  r�  )r�  r[  Z
date_edgesr(   r   rv  rë  r    r    r!   Ú test_hist_datetime_datasets_binsG  s"     ÿ ÿþÿr’  zdata, expected_number_of_histsc                 C   sH   t  | ¡\}}}t |¡}|jdkr2d|ksDt‚n|jd |ksDt‚d S )Nr2   r   )r#   ri  r]   rO  Úndimr&   rj  )r[  Zexpected_number_of_histsZhistsrv  r    r    r!   Útest_hist_with_empty_input^  s
    

r”  zhisttype, zorderr  rk  rl  c                 C   sH   t  ¡  ¡ }|jddg| d� |js(t‚|jD ]}| ¡ |ks.t‚q.d S )Nr2   r3   rm  )r#   r®   r”   ri  rò   r&   Ú
get_zorder)rn  rx  r   rÚ   r    r    r!   Útest_hist_zorderl  s
    

r–  c                 C   s’  dd l m} t ddddddddg¡}t d	d
dddddddg	¡}|  dd¡ ¡ }|d j||d d� |d j||d dd� |d  ||¡ |d j||dd� |d  ||¡ |d  ¡  |d j||dd� |d  ¡  dddœ}| dd¡ ¡ }|d j	|t 
||d ¡fddi|—Ž |d j	t 
|d |¡|fddi|—Ž |d j	|t 
||d ¡fddi|—Ž |d  |j|d |d gd|d gf|Ž¡ |d  |j|d |d gd|d gf|Ž¡ |d  dd ¡ |d j	t 
|d |¡|fddi|—Ž |d  |jd|d g|d |d gf|Ž¡ |d  |jd|d g|d |d gf|Ž¡ |d  dd ¡ |d j	|t 
||d ¡fddi|—Ž |d  |j|d |d gd|d gf|Ž¡ |d  |j|d |d gd|d gf|Ž¡ |d  ¡  |d j	t 
|d |¡|fddi|—Ž |d  |jd|d g|d |d gf|Ž¡ |d  |jd|d g|d |d gf|Ž¡ |d  ¡  d S ) Nr   rQ  é   rh   é%   é0   r×  rç   r£   rÃ   rõ  rC  rT  ç      @ç      @ç       @ç      "@r‰   r3   ©rS  r2   rJ   )rS  rL   rK   rÁ   ÚmiterÚbutt©Úsolid_joinstyleÚsolid_capstylerp   Ú	drawstyleú
steps-post)Zmatplotlib.linesÚlinesr]   rþ   r   ÚflattenÚstairsZsemilogyrK  r}   rE  Úadd_lineÚLine2Dro  rn  )r   r   Zmlinesr-   r,   Ú	test_axesr‘   Úref_axesr    r    r!   Útest_stairsx  s@    
(((..(..(..(..r­  c                 C   s�  dddddgddddddg }}d}|   dd¡ ¡ }|d j||dd	� |d j||d
dd� |d j|||dd� |d j|||d
dd� |  dd¡ ¡ }|d j|t ||d ¡ddd� |d  dd ¡ |d j|t ||d ¡ddd� |d  dd ¡ |d j|t ||d ¡t 	t
|ƒd ¡| ddd� |d  |d ¡ |d j|t ||d ¡t 	t
|ƒd ¡| ddd� |d  |d ¡ d S )Nr2   r3   r‰   rç   r   rÁ   rf  T©rž  rJ   )rL   rž  )rS  rž  )rS  rL   rž  rp   Úpost)rk  rû   )r   r§  r¨  r  r]   rE  ro  r8  rn  rw   r  )r   r   rý  rë  Úbsr«  r¬  r    r    r!   Útest_stairs_fill¤  s4     ÿ""  ÿ  ÿr±  c                 C   s  d}|   ¡ }| dddg¡}| |¡ | dddg¡ |jt d¡d d� | dddgt d¡d ¡ | dddg¡ | d t d¡¡ t | ¡ d t dd¡¡sªt‚t | ¡ d t d¡¡sÈt‚|jdd	� | ¡ j	dksæt‚|  ¡ }|jdddgdd	�}| |¡ d S )
N)rW  rç   r2   r3   r‰   rç   ©Úedgesr   rf  rž  )
r”   r¨  ro  Úset_datar]   rb   ÚallcloseÚget_datar&   rS  )r   r   ru   Útest_axrý  Úref_axr    r    r!   Útest_stairs_update¾  s     
 r¹  c                 C   sb   |   ¡ }|jdddgd d� |  ¡ }dddœ}|jtdƒddddgfd	d
i|—Ž | dd ¡ d S )NrÁ   rQ  r¹  rž  rŸ  r   r¡  rç   r¤  r¥  r   )r”   r¨  r}   r­   ro  )r   r   r·  r¸  r‘   r    r    r!   Útest_stairs_baseline_0Ö  s    
$rº  c                  C   s>   t  ¡  ¡ } |  g dg¡ |  ¡ dks*t‚|  ¡ dks:t‚d S )Né*   )é'   rº  rÀ  )r#   r®   r”   r¨  r   r&   r€   r  r    r    r!   Útest_stairs_emptyã  s    r½  c                	   C   s6   t jtdd�� t ddgdtjdg¡ W 5 Q R X d S )NúNan values in "edges"r  r2   r3   r   )rŠ   r‹   r*  r#   r¨  r]   r  r    r    r    r!   Útest_stairs_invalid_nanê  s    r¿  c                	   C   s2   t jtdd�� t ddgddg¡ W 5 Q R X d S )NúSize mismatchr  r2   r3   r   )rŠ   r‹   r*  r#   r¨  r    r    r    r!   Útest_stairs_invalid_mismatchï  s    rÁ  c               	   C   sH   t  ddgdddg¡} tjtdd�� | jdtjdgd� W 5 Q R X d S )Nr2   r3   r   r¾  r  r²  )r#   r¨  rŠ   r‹   r*  r´  r]   r  ©rý  r    r    r!   Útest_stairs_invalid_updateô  s    rÃ  c               	   C   sF   t  ddgdddg¡} tjtdd�� | jt d¡d� W 5 Q R X d S )Nr2   r3   r   rÀ  r  rÁ   r²  )r#   r¨  rŠ   r‹   r*  r´  r]   rb   rÂ  r    r    r!   Útest_stairs_invalid_update2ú  s    rÄ  ztest_stairs_options.pngc               
   C   s   t  dddddg¡t  ddddg¡ t¡ } }| ¡ }t j|d< t ¡ \}}|j|d | dddd	� |j|| d d d
dddd� |j|| ddddd� |j|d | d d dddddd� |j|d d d… d d | d d
ddd dd� |j|d d d… d d | dddddd� |j|d d d… d d | d t  	dd t
|ƒ¡d!dd"dd#� |j|d d… d d d… d d$ | d d… d d%ddd&d'd(d)� |jd*d+� d S ),Nr2   r3   r‰   rç   rÁ   r¦   Tr^  )r¥   rž  r*   r–  rJ   r_  )r¥   rž  rL   r*   rL  r¦  r`  )r¥   râ  rû   r*   rž   ÚD)râ  rû   rS  rL   r*   rp   é   ÚE)r¥   râ  rû   rS  r*   r—  rM  rX  ÚF)rS  r¥   râ  rû   r*   rÈ   r�  é   r¤   ÚG)rS  r¥   râ  r*   rž  rL  r<  rg  ú//ÚH)r¥   râ  rû   rS  r@  r*   r   r9   )r]   rþ   rx  rI  Úcopyr  r#   r   r¨  rÎ   r  rB   )r,   r-   Zynr(   r   r    r    r!   Útest_stairs_options 	  sF    .
 ÿ ÿ&ÿ   ÿ.   ÿ4  ÿrÎ  ztest_stairs_datetime.pngc               	   C   sF   t jdd�\} }| t d¡t t d¡t d¡¡¡ t jdd� d S )NT)Úconstrained_layouté$   z
2001-12-27z
2002-02-02r–   )Úrotation)r#   r   r¨  r]   rb   rº  Úxticks)Úfr   r    r    r!   Útest_stairs_datetime	  s    ÿÿrÔ  c                 C   sH   |   ¡ }|jdddgddd� |  ¡ }|jdddgdd�}| d¡ d S )Nr2   r3   r‰   r–  T)r¥   rž  r®  )r”   r¨  Ú	set_color)r   r   r·  r¸  Ústr    r    r!   Útest_stairs_edge_handling!	  s
    r×  c                  C   sH   t  ddd¡} t  ddd¡}t  | ¡t  |d d …t jf ¡ }| ||fS )NrW  rÁ   é–   rC  )r]   rÎ   r  rÏ   r–  )r,   r-   rœ  r    r    r!   Úcontour_dat-	  s    "rÙ  Zcontour_hatchingc               
   C   sD   t ƒ \} }}t ¡ \}}|j| ||dddddgtjd ddd	� d S )
Nr¹  r>  ú\rË  r¥  r€  rv   rž   )rY  rn   ÚextendrÙ  )rÙ  r#   r   Úcontourfr�   ry  )r,   r-   rœ  r(   r   r    r    r!   Útest_contour_hatching4	  s     þrÝ  Zcontour_colorbarc            	   
   C   s²   t ƒ \} }}t ¡ \}}|j| ||t ddd¡tjd dddd�}|j| ||t d	d
d¡dgddd�}|j| ||t ddd¡dgdd�}|j	||d�}| 
|¡ |j
|dd� d S )NgÍÌÌÌÌÌü¿g7‰A`åÐü?rÅ   ZRdBug333333ã¿rå  rv   )Úlevelsrn   r  r  rÛ  gš™™™™™Àg^ºI+ã¿r-   r‡   r3   )rÞ  r~  Ú
linestylesr/  ry  r6   )rÞ  r~  r/  r  F)Zerase)rÙ  r#   r   rÜ  r]   rb   r�   ry  r   rC   Z	add_lines)	r,   r-   rœ  r(   r   ÚcsZcs1Zcs2rF   r    r    r!   Útest_contour_colorbar=	  s(    üýþ
rá  Úhist2dc                  C   s†   dt jd< tj d¡ tj d¡d d } tj d¡d }t  ¡ \}}|j| |ddd	� | |d
œ}t  ¡ \}}|jddd|dd� d S )NFró  r   rÇ   r3   rÁ   rr   T©rë  Ú
rasterizedrà   r,   r-   )rë  r[  rä  )r#   r¬   r]   r^   r_   r¨  r   râ  )r,   r-   r(   r   r[  r    r    r!   Útest_hist2dU	  s    

rå  Zhist2d_transposec                  C   sX   dt jd< tj d¡ t dgd ¡} tj d¡d }t  ¡ \}}|j| |ddd	� d S )
NFró  r   rÁ   rÇ   r3   rr   Trã  )	r#   r¬   r]   r^   r_   rþ   r¨  r   râ  r  r    r    r!   Útest_hist2d_transposeg	  s    
ræ  c                  C   s>   t j d¡\} }t ¡  ¡ }|tfD ]}|j| |dd� q$d S )Nrî  Tr‡  )r]   r^   r#   r®   r   râ  )r,   r-   r   Úobjr    r    r!   Útest_hist2d_densityu	  s    rè  c                "   @   s$  e Zd Zedgddd�dd„ ƒZedgdd�d	d
„ ƒZedgddgd�dd„ ƒZedgd�dd„ ƒZdd„ Z	e
j dddide ¡ iddiddig¡dd„ ƒZdd„ Zej d ¡d!d"„ ƒZd#d$„ Zd%d&„ Zedgd�d'd(„ ƒZedgd�d)d*„ ƒZd+d,„ Zedgd�d-d.„ ƒZedgd�d/d0„ ƒZd1d2gd3fd4d5d6d7d8d9d:gd;fd<d=gd3fd=gd> d3fd?gd@ d;fd?gd> d;fd?gdA dBfdCdDdEdFgd;fdCdGdEdHgd;fdCd?dEdHgd3fdIddggd;fdIddggd@ dBfdIddggd> d;fdIddggdA dBfdIddd?ggd;fdIddd?ggd@ dBfdIddd?ggd> d;fdIddd?ggdA dBfdIddd?ggd@ dIddgg d;fdIddd?gdGdJgdBfdIddd?gdGdJdHgd;fdIddd?gdGdJdHddIdggdBfdIddd?gdGd=gd3fdIddd?gdGdJd=gd3fdIddd?gdGdJdHd=gd3fgZe
j dKe¡dLdM„ ƒZej d ¡edgd�dNdO„ ƒƒZdPdQ„ Zd;S )RÚTestScatterr4   r�   Trÿ  c                 C   s¼   t  ddddg¡t  ddddg¡dddd	gd
dddgddddgdœ}t ¡ \}}|j|d d |d d |d |d d� |j|d d |d d |d |d d� |jdddd|d� d S )Nr‰   rç   r3   rQ  rÁ   r¨  r-   r—  ÚlimerK  rÈ   é   é   ú0.5ú0.6ú0.7z0.8)r,   r-   r6   rc  Úc2r,   r£   r6   rc  ©r6   rc  rð  )r6   rc  r[  )r]   rþ   r#   r   r4   )r  r[  r(   r   r    r    r!   Útest_scatter_plot}	  s     
 

þ**zTestScatter.test_scatter_plotzscatter_marker.pngr8  c           
   
   C   s2  t jdd�\}\}}}|jddddgddddgddd	d
gddddgdddd	gdd� |jddddgddddgddd	d
gddddgdddd	gtjddd�d� d\}}|| tj }t ddtj d¡}t t 	|¡| | t 
|¡| | g¡}	|jddddgddddgddd	d
gddddgdddd	g|	d� d S )Nr‰   ©r}  rç   r3   rQ  rÁ   ©r2   r   r   r-   r—  rê  rŒ  rW  r.  r–   rD  r¨  Úgrc  )r6   rc  rf  rk   r†   r8   ©Ú	fillstylerZ  r   r×  )r#   r   r4   rË  rÌ  r]   rÐ   rÎ   Zcolumn_stackr  rÏ   )
r  r(   r  rÕ   rÜ   ÚrxZryZarears  r3  r    r    r!   Útest_scatter_markerˆ	  s2    


ü


üÿ


üzTestScatter.test_scatter_markerZ
scatter_2Dr   )r9  r   c                 C   sP   t  d¡}t  d¡}t  ||¡\}}|| }t ¡ \}}|j|||ddd� d S )Nr‰   r3   rí  Úface)r6   rc  rf  )r]   rb   rÐ  r#   r   r4   )r  r,   r-   rœ  r(   r   r    r    r!   Útest_scatter_2D¡	  s    

zTestScatter.test_scatter_2Dr   c           
      C   sœ   t  ddddg¡}t  ddddg¡}t  d	d
„ |D ƒ¡}t  dd
„ |D ƒ¡}ddddg}ddddg}| ¡ }	|	j||||d� | ¡ }	|	j||||d� d S )Nr�   r
  r  rÌ  rd  ry  r  r  c                 S   s   g | ]}t |ƒ‘qS r    r   r  r    r    r!   rœ   ®	  s     z4TestScatter.test_scatter_decimal.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ‘qS r    r   r  r    r    r!   rœ   ¯	  s     r¨  r-   r—  rê  rK  rÈ   rë  rì  rñ  )r]   rþ   r   r4   )
r  r   r   r  r  r,   r-   r6   rc  r   r    r    r!   Útest_scatter_decimalª	  s    z TestScatter.test_scatter_decimalc              	   C   sn   t  t¡�" tjddgddgddgd� W 5 Q R X t  t¡�( tjdddgdddgdddgd� W 5 Q R X d S )Nr2   r3   rÄ   rÅ   r©  r‰   )rŠ   r‹   r*  r#   r4   r  r    r    r!   Útest_scatter_color¹	  s    &zTestScatter.test_scatter_colorrq  rn   r€  r)  r  r   r  c              	   C   s¨   d}t jt|d�� tjg g f|Ž W 5 Q R X t jt|d��& tjddgddgfdg i|—Ž W 5 Q R X tjg g fdg i|—Ž tjddgddgfdddgi|—Ž d S )	Nz"No data for colormapping provided r  r2   r3   r‰   rç   r6   rÁ   )rŠ   r-  ÚWarningr#   r4   )r  rq  Z
warn_matchr    r    r!   Útest_scatter_color_warningÀ	  s    *z&TestScatter.test_scatter_color_warningc                 C   sŒ   t jdddgdddgdddgtjdd	d
�dddgd�}| ¡ jdksHt‚t| ¡ ddddgddddgddddggƒ t| 	¡ dddgƒ d S )Nr   r2   r3   r‰   ú0.1ú0.3rí  r†   rè   rö  rd  r;  çÍÌÌÌÌÌô?©r6   rk   r/  )r   rç   rÄ   rÆ   rž   )
r#   r4   rË  rÌ  Úget_facecolorsrj  r&   r   Úget_edgecolorsÚget_linewidths©r  Úcollr    r    r!   Útest_scatter_unfilledÓ	  s    þ

þz!TestScatter.test_scatter_unfilledr?  c                 C   s‚   t jdddgdddgdddgdd	d
dgd�}t| ¡ | ¡ ƒ t| ¡ ddddgddddgddddggƒ t| ¡ d	d
dgƒ d S )Nr   r2   r3   r‰   r   r  rí  r,   rd  r;  r  r  rÄ   rÆ   rž   )r#   r4   r   r  r  r  r  r    r    r!   Útest_scatter_unfillableÝ	  s    þ

þz#TestScatter.test_scatter_unfillablec              	   C   sž   t  d¡}tjtdd�� t |||dd … ¡ W 5 Q R X tjtdd��$ t |dd … |dd … |¡ W 5 Q R X tjtdd�� t ||d¡ W 5 Q R X d S )Nrç   zsame size as x and yr  r2   zfloat array-liker{  )r]   rb   rŠ   r‹   r*  r#   r4   )r  r,   r    r    r!   Útest_scatter_size_arg_sizeè	  s    
 (z&TestScatter.test_scatter_size_arg_sizec                 C   sp   t jdddgdtjtjgdd�}t | ¡ d¡s4t‚t jddddgdtjtjdgdd�}t | ¡ d¡slt‚d S )Nr2   r3   r‰   rô  ©rì   rç   ©r2   r   r   r2   )r#   r4   r]   r  r+  Ú
same_colorr"  r&   r  r    r    r!   Útest_scatter_edgecolor_RGBñ	  s    ÿÿz&TestScatter.test_scatter_edgecolor_RGBc                 C   s´   |  ¡ }tjd  d¡}| dd¡ |jtdƒtdƒdtjdtjgddddg|dd	� |  ¡ }tjd  d¡}|jd
dgd
dgddgddg|d� |jddgddgddgdd� d S )Nrv  rw  rD  r2   rç   r3   r‰   T©r6   rc  rn   Zplotnonfiniter   ©r6   rc  rn   )rc  r¥   ©	r   r�   ry  rz  Zset_badr4   r­   r]   r  ©r  r   r   r   rn   r    r    r!   Útest_scatter_invalid_colorú	  s     
 þ$z&TestScatter.test_scatter_invalid_colorc                 C   s†   |  ¡ }tjd  d¡}| dd¡ |jtdƒtdƒdtjdtjgddddg|dd	� |  ¡ }|jd
dgd
dgddgddg|d� d S )Nrv  rw  rD  r2   rç   r3   r‰   Fr  r   r  r  r  r    r    r!   Útest_scatter_no_invalid_color

  s     
 þz)TestScatter.test_scatter_no_invalid_colorc              	   C   sN   dddg}t  ¡ }tjtdd��$ |j|||t dd¡dd	d
� W 5 Q R X dS )r&  r2   r3   r‰   r'  r  r(  rr   r   rÁ   )r6   r)  r  r  N)r#   r  rŠ   r‹   r*  r4   r+  r,  )r  r,   r   r    r    r!   Útest_scatter_norm_vminvmax
  s    
ÿ ÿz&TestScatter.test_scatter_norm_vminvmaxc                 C   s:   |  ¡ }|jdddd� |  ¡ }|jdgdgdgd� d S )Nr2   rN  )r   r4   )r  r   r   r   r    r    r!   Útest_scatter_single_point 
  s    z%TestScatter.test_scatter_single_pointc                 C   s^   t  d¡}| ¡ }|j|| dd¡| dd¡d� | ¡ }|j| dd¡|| dd¡d� d S )Nrr   r3   rÁ   rN  )r]   rb   r   r4   ry   )r  r   r   r,   r   r    r    r!   Útest_scatter_different_shapes'
  s
    
 z)TestScatter.test_scatter_different_shapes)rí  NZrgbyÚ
conversion)r–  N)rè   N)NNr¨  rõ  r—  rè   N)Újauner  r  rç   rž   r‰   rÁ   rj  rí  z0.4rî  rï  r–  ÚC5r2   z0.0zc_case, re_keyc              	   C   s†   dd„ }d}dddœ}|d k	r0t jt|| d�n(t|tƒrRt|ƒdkrRt jd	d�nt ¡ }|� t	j
jj|d
i ||d� W 5 Q R X d S )Nc                   S   s   dS ©Nr¤   r    r    r    r    r!   Úget_next_color_
  s    z2TestScatter.test_scatter_c.<locals>.get_next_colorrç   z!^'c' argument has [0-9]+ elementsz^'c' argument must be a color)rj  r  r  r‰   ú(argument looks like a single numeric RGBr<  )r6   rf  rq  ÚxsizeÚget_next_color_func)rŠ   r‹   r*  rº   r…  r  r-  Ú
contextlibÚnullcontextr�   r  r   Ú_parse_scatter_color_args)r  Zc_caseZre_keyr  r  ÚREGEXPZassert_contextr    r    r!   Útest_scatter_c]
  s*    þÿÿ
ÿû   þzTestScatter.test_scatter_cc                 C   sž   dddgg}ddddgg}|  ¡ }|jt d¡tdƒ|d� |jt d¡d tdƒ|d� |  ¡ }|jt d¡tdƒ|d� |jt d¡d tdƒ|d� d S )	Nr2   rž   çš™™™™™©?r‰   r©  rç   r3   rN  )r   r4   r]   rw   r­   )r  r   r   ÚrgbZrgbarf   re   r    r    r!   Útest_scatter_single_color_cu
  s    z'TestScatter.test_scatter_single_color_cc              	   C   s¬   t  d¡}t ¡ \}}tdƒD ]@}|j|t  d|¡d|› �dd|d d�}| ¡ |d kst‚q|j|t  dd¡dddtddƒd
•d�}t	| ¡ tddƒt
jd	 f•ƒ d S )NrÁ   r‰   r`  r,   rÇ   r2   )r6   rk   rc  r/  ÚC3úlines.linewidth)N)r]   rb   r#   r   r­   r4   rY   r  r&   r   r�   r¬   )r  r,   r(   r   r÷   Zpcr    r    r!   Útest_scatter_linewidths…
  s    
ÿÿÿz#TestScatter.test_scatter_linewidths) r  r  r  r   rò  rù  rû  r   rü  rý  rŠ   ÚmarkÚparametrizer+  r,  rÿ  r	  r�   r‘   Úcontextr
  r  r  r  r  r  r  r  Zparams_test_scatter_cr%  r(  r+  r    r    r    r!   ré  |	  sˆ   






üÿ




		








 Ø+


ré  )rf  c                K   s   | ||d k	r|ni |fS r×   r    )r6   r  rf  rq  r    r    r!   Ú_params”
  s    r/  Ú_resultz	c, colorszparams, expected_result)r6   r~  r¨  rN  r©  rõ  rž   c                 C   s@   dd„ }t jjj| d|iŽ\}}}||jks0t‚t||jƒ d S )Nc                   S   s   dS r  r    r    r    r    r!   r  ¨
  s    z5test_parse_scatter_color_args.<locals>.get_next_colorr   )r�   r  r   r#  r6   r&   r   r~  )ÚparamsZexpected_resultr  r6   r~  Z_edgecolorsr    r    r!   Útest_parse_scatter_color_args™
  s    ÿÿr2  zkwargs, expected_edgecolorsr  rú  rè   )rì   rf  )r6   rì   rf  )r¥   rì   c                 C   sN   dd„ }|   dd ¡}|   dd ¡}tjjj||| d|d�\}}}||ksJt‚d S )Nc                   S   s   dS r  r    r    r    r    r!   r  Ã
  s    z@test_parse_scatter_color_args_edgecolors.<locals>.get_next_colorr6   rf  r3   )r  r   )Úpopr�   r  r   r#  r&   )rq  Zexpected_edgecolorsr  r6   rf  rv  Zresult_edgecolorsr    r    r!   Ú(test_parse_scatter_color_args_edgecolors´
  s        ÿÿr4  c               	   C   sX   dd„ } t jtdd��8 t dddgddd	gg¡}tjjj|d i d
| d� W 5 Q R X d S )Nc                   S   s   dS r  r    r    r    r    r!   r  Ï
  s    z;test_parse_scatter_color_args_error.<locals>.get_next_colorz&RGBA values should be within 0-1 ranger  rÄ   rÅ   ræ  rE  gffffffö?r3   ©rq  r  r   )	rŠ   r‹   r*  r]   rþ   r�   r  r   r#  )r  r6   r    r    r!   Ú#test_parse_scatter_color_args_errorÎ
  s    ÿ    ÿr6  c                  C   sz   G dd„ dƒ} | ƒ }| ƒ }t j|_tjddddg|d�}t|ƒtksHt‚t ¡  tj	d|d�}t|ƒtksnt‚t ¡  d S )Nc                   @   s   e Zd Zdd„ Zdd„ ZdS )z#test_as_mpl_axes_api.<locals>.Polarc                 S   s
   d| _ d S )Nr   )Útheta_offsetr  r    r    r!   Ú__init__Ü
  s    z,test_as_mpl_axes_api.<locals>.Polar.__init__c                 S   s   t d| jifS )Nr7  )r   r7  r  r    r    r!   Ú_as_mpl_axesß
  s    z0test_as_mpl_axes_api.<locals>.Polar._as_mpl_axesN)r  r  r  r8  r9  r    r    r    r!   ÚPolarÛ
  s   r:  r   r2   rÍ  éy   )
r]   rÐ   r7  r#   r  Útyper   r&   r  r  )r:  ZprjZprj2r   r    r    r!   Útest_as_mpl_axes_apiÙ
  s    r=  c                  C   sZ   t  ¡ \} }t  ¡ \}}t  |¡ |t  ¡ ks2t‚| t  ¡ ksBt‚t  | ¡ t  |¡ d S r×   )r#   r   Zscar  r&   Zgcfr  )Úfig1rÕ   Úfig2rÜ   r    r    r!   Útest_pyplot_axesò
  s    

r@  c                  C   s¶   t  ¡ \} }| t t dd¡¡¡ |jddd� | ¡  |jddd� dd„ |j	|j
fD ƒ\}}|d	d
dddddddddddddddgks�t‚|ddddddd ddddgks²t‚d S )!NrÄ   rÇ   rå   ç      @r�  r�  c                 S   s   g | ]}d d„ |  ¡ D ƒ‘qS )c                 S   s   g | ]}|  ¡ |j ¡ f‘qS r    )Zget_locÚlabel1Úget_textr-  r    r    r!   rœ     s     z.test_log_scales.<locals>.<listcomp>.<listcomp>)Z_update_ticks)r™   rA  r    r    r!   rœ     s   ÿz#test_log_scales.<locals>.<listcomp>)r£   z$\mathdefault{9^{0}}$)r�  z$\mathdefault{9^{1}}$)g     @T@z$\mathdefault{9^{2}}$)rÃ   r±   )rõ  r±   )rC  r±   )rT  r±   )rš  r±   )r›  r±   )rœ  r±   )g      2@r±   )g      ;@r±   )g      B@r±   )g     €F@r±   )g      K@r±   )g     €O@r±   )ç      R@r±   )gF]tÑEÇ?z$\mathdefault{5.5^{-1}}$)r£   z$\mathdefault{5.5^{0}}$)rA  z$\mathdefault{5.5^{1}}$)gF]tÑE×?r±   )gtÑE]tá?r±   )gF]tÑEç?r±   )g]tÑEí?r±   )r#   r   r}   r]   rå   rÎ   r  r  rT  rQ   rT   r&   )r(   r   rÒ  Zyticksr    r    r!   Útest_log_scalesý
  sP    
þ
ï
õrE  c                  C   sR   t  ¡ \} }|jddd� |j t d¡¡ | ¡ | ¡   krHdksNn t	‚d S )Nrå   )rð  rö  r2   ©r2   rr   )
r#   r   r~   rQ   rÑ   r¸   ZMultipleLocatorr   r€   r&   ru  r    r    r!   Útest_log_scales_no_data)  s    rG  c               	   C   sp   t  ¡ \} }| d¡ tjtdd�� | dd¡ W 5 Q R X | d¡ tjtdd�� | dd¡ W 5 Q R X d S )Nrå   zAttempt to set non-positiver  rp   rr   )	r#   r   rT  rŠ   r-  rª  rn  r  ro  r'   r    r    r!   Útest_log_scales_invalid0  s    

rH  Zstackplot_test_imagec               	   C   s¶   t  ¡ } t ddd¡}d| }d| d }d| d }|  ddd¡}| ||||¡ | d¡ | d	¡ ||||d
œ}t  ¡ \} }|jdddd|dddgd� | d¡ | d	¡ d S )Nr   rr   r£   rÃ   r2   rõ  r3   ©r   rr   )r   rö  )r,   r=  r  Úy3r,   r=  r  rJ  r  ÚC1ÚC2)r[  r~  )	r#   r®   r]   rÎ   r”   Ú	stackplotrn  ro  r   )r(   r,   r=  r  rJ  r   r[  r    r    r!   Útest_stackplot:  s    


rN  Zstackplot_test_baselinec                  C   sª   t j d¡ dd„ } | ddƒ}d|dd d …f< t dd¡\}}|d jtdƒ|jd	d
� |d jtdƒ|jdd
� |d jtdƒ|jdd
� |d jtdƒ|jdd
� d S )Nr   c                 S   sž   t  || f¡}t| ƒD ]‚}tdƒD ]t}ddt j ¡   }dt j ¡  d }ddt j ¡   }|d d …|f  |t  t  |¡| | | d  ¡ 7  < q"q|S )NrÁ   r2   rÄ   r3   rž   rr   )r]   r¥  r­   r^   Úexprb   )rü  rÎ  r‚   r÷   Újr,   r-   rœ  r    r    r!   ÚlayersS  s    >z'test_stackplot_baseline.<locals>.layersr‰   rÇ   rW  r3   r�  Úzerorž  r|  Úsym©r2   r   ZwigglerÇ  Zweighted_wiggle)r]   r^   r_   r#   r   rM  r­   r£  )rQ  rŒ  r(   r<  r    r    r!   Útest_stackplot_baselineO  s    

rU  c                 C   s   | S r×   r    )rc  r    r    r!   r�  i  r‘  c                 C   sŠ   t j d¡ tjjt jjdddd�f| Ž}t ¡ \}}| 	dd¡rN| 
d¡ n
| d¡ | 	d	d
¡sttjd tjd< |j||ƒf|Ž d S )Né©  r`  r£   )r˜  rç   )ZmeanÚsigmarv  ÚvertTrå   Úpatch_artistFr*  úboxplot.boxprops.linewidth)r]   r^   r_   r�   ZcbookZboxplot_statsZ	lognormalr#   r   Úgetr  rT  r¬   Zbxp)Ústats_kwargsÚtransform_statsÚ
bxp_kwargsZlogstatsr(   r   r    r    r!   Ú_bxp_test_helperh  s    ÿÿ
ÿr_  zbxp_baseline.pngr.  )r�  r‘   c                   C   s
   t ƒ  d S r×   ©r_  r    r    r    r!   Útest_bxp_baselinez  s    ra  zbxp_rangewhis.pngc                   C   s   t tddgd�d� d S )Nr   rÇ   ©Zwhis©r\  ©r_  rÑ  r    r    r    r!   Útest_bxp_rangewhis�  s    re  zbxp_percentilewhis.pngc                   C   s   t tddgd�d� d S )NrÁ   é_   rb  rc  rd  r    r    r    r!   Útest_bxp_percentilewhisˆ  s    rg  zbxp_with_xlabels.pngc                  C   s   dd„ } t | d� d S )Nc                 S   s$   t | tdƒƒD ]\}}||d< q| S ©NZABCDr*   ©rm  r…  ©Ústatsrc  r*   r    r    r!   rê   “  s    
z(test_bxp_with_xlabels.<locals>.transform)r]  r`  ©rê   r    r    r!   Útest_bxp_with_xlabels�  s    rm  zbxp_horizontal.pngrÄ   )r9  r�  r‘   râ   c                   C   s   t tdd�d� d S )NF©rX  ©r^  rd  r    r    r    r!   Útest_bxp_horizontal›  s    rp  zbxp_with_ylabels.png)r�  r‘   râ   c                  C   s   dd„ } t | tdd�d� d S )Nc                 S   s$   t | tdƒƒD ]\}}||d< q| S rh  ri  rj  r    r    r!   rê   ©  s    
z(test_bxp_with_ylabels.<locals>.transformFrn  ©r]  r^  rd  rl  r    r    r!   Útest_bxp_with_ylabels¤  s    rr  zbxp_patchartist.png)r9  r�  r‘   c                   C   s   t tdd�d� d S )NT)rY  ro  rd  r    r    r    r!   Útest_bxp_patchartist±  s    rs  zbxp_custompatchartist.pngrÇ   c                   C   s    t tdtdddd�d�d� d S )NTrÂ  r¦   ú:)rë   rì   râ  )rY  Úboxpropsro  rd  r    r    r    r!   Útest_bxp_custompatchartist¹  s    þrv  zbxp_customoutlier.pngc                   C   s   t ttdddd�d�d� d S )Nrè   rŒ  rõ  ©rˆ   rk   Úmfc)Z
flierpropsro  rd  r    r    r    r!   Útest_bxp_customoutlierÃ  s    ÿry  zbxp_withmean_custompoint.pngc                   C   s    t tdtdddd�d�d� d S )NTrè   rŒ  r¦   rw  )Ú	showmeansZ	meanpropsro  rd  r    r    r    r!   Útest_bxp_showcustommeanÌ  s    þr{  zbxp_custombox.pngc                   C   s   t ttdddd�d�d� d S )Nr¦  r—  r‰   ©rˆ   r¥   rû   )ru  ro  rd  r    r    r    r!   Útest_bxp_custombox×  s    ÿr}  zbxp_custommedian.pngc                   C   s   t ttdddd�d�d� d S )Nr¦  r—  r‰   r|  )Zmedianpropsro  rd  r    r    r    r!   Útest_bxp_custommedianà  s    ÿr~  zbxp_customcap.pngc                   C   s   t ttdddd�d�d� d S )Nr¦  rõ  r‰   r|  )Zcappropsro  rd  r    r    r    r!   Útest_bxp_customcapé  s    ÿr  zbxp_customwhisker.pngc                   C   s   t ttdddd�d�d� d S )Nr¥  rÎ  r‰   r|  )Zwhiskerpropsro  rd  r    r    r    r!   Útest_bxp_customwhiskerò  s    ÿr€  zbxp_withnotch.pngc                   C   s   t tdd�d� d S )NT)Zshownotchesro  rd  r    r    r    r!   Útest_bxp_shownotchesû  s    r�  zbxp_nocaps.pngc                   C   s   t tdd�d� d S )NF)Zshowcapsro  rd  r    r    r    r!   Útest_bxp_nocaps  s    r‚  zbxp_nobox.pngc                   C   s   t tdd�d� d S )NF)Zshowboxro  rd  r    r    r    r!   Útest_bxp_nobox  s    rƒ  zbxp_no_flier_stats.pngc                  C   s   dd„ } t | tdd�d� d S )Nc                 S   s   | D ]}|  dd ¡ q| S )NÚfliers)r3  )rk  rc  r    r    r!   rê     s    z*test_bxp_no_flier_stats.<locals>.transformF)Z
showfliersrq  rd  rl  r    r    r!   Útest_bxp_no_flier_stats  s    ÿr…  zbxp_withmean_point.pngc                   C   s   t tddd�d� d S )NTF©rz  Zmeanlinero  rd  r    r    r    r!   Útest_bxp_showmean!  s    r‡  zbxp_withmean_line.pngc                   C   s   t tddd�d� d S )NTr†  ro  rd  r    r    r    r!   Útest_bxp_showmeanasline)  s    rˆ  zbxp_scalarwidth.pngc                   C   s   t tdd�d� d S )NrØ  r=  ro  rd  r    r    r    r!   Útest_bxp_scalarwidth1  s    r‰  zbxp_customwidths.pngc                   C   s   t tddddgd�d� d S )NrÄ   rØ  gÍÌÌÌÌÌä?g333333ë?r=  ro  rd  r    r    r    r!   Útest_bxp_customwidths9  s    rŠ  zbxp_custompositions.pngc                   C   s   t tddddgd�d� d S )Nr2   rÁ   rQ  r¹  r3  ro  rd  r    r    r    r!   Útest_bxp_custompositionsA  s    r‹  c                	   C   s,   t  t¡� ttdgd�d� W 5 Q R X d S )Nr2   r=  ro  ©rŠ   r‹   r*  r_  rÑ  r    r    r    r!   Útest_bxp_bad_widthsI  s    r�  c                	   C   s.   t  t¡� ttddgd�d� W 5 Q R X d S )Nr3   r‰   r3  ro  rŒ  r    r    r    r!   Útest_bxp_bad_positionsN  s    rŽ  zbxp_custom_capwidths.pngc                   C   s   t tddddgd�d� d S )NrS  rÄ   rž   r£   r<  ro  rd  r    r    r    r!   Útest_bxp_custom_capwidthsS  s    r�  zbxp_custom_capwidth.pngc                   C   s   t tdd�d� d S )Nrå  r<  ro  rd  r    r    r    r!   Útest_bxp_custom_capwidthZ  s    r�  c                	   C   s,   t  t¡� ttdgd�d� W 5 Q R X d S )Nr2   r<  ro  rŒ  r    r    r    r!   Útest_bxp_bad_capwidthsa  s    r‘  r7  g{®Gázô?)râ   r‘   c                  C   sŒ   t j d¡ t  ddd¡} t  d| dg¡} t ¡ \}}|j| | gddd	� | d
¡ d| | gi}t ¡ \}}|jddd|d� | d
¡ d S )NrV  r¸  r¹  éŒ   éçÿÿÿrÉ  é'  r2   ©Ú	bootstrapÚnotch©rÁ  r–   r,   )r–  r—  r[  ©	r]   r^   r_   rÎ   Úhstackr#   r   r7  ro  )r,   r(   r   r[  r    r    r!   Útest_boxplotf  s    
r›  zboxplot_custom_capwidths.pngc                  C   sF   t  ddd¡} t  d| dg¡} t ¡ \}}|j| | gdddgd	� d S )
Nr¸  r¹  r’  r“  rÉ  r2   rU  rÅ   )r—  r:  )r]   rÎ   rš  r#   r   r7  rû  r    r    r!   Útest_boxplot_custom_capwidthsy  s    rœ  zboxplot_sym2.pngc                  C   s~   t j d¡ t  ddd¡} t  d| dg¡} t dd¡\}\}}|j| | gd	d
d� | d¡ |j| | gd	dd� | d¡ d S )NrV  r¸  r¹  r’  r“  rÉ  r2   r3   r”  ú^)r–  rS  r˜  rõ  r™  )r,   r(   rÕ   rÜ   r    r    r!   Útest_boxplot_sym2„  s    
rž  zboxplot_sym.pngc                  C   sJ   t  ddd¡} t  d| dg¡} t ¡ \}}|j| | gdd� | d¡ d S )	Nr¸  r¹  r’  r“  rÉ  rë  ©rS  r˜  )r]   rÎ   rš  r#   r   r7  ro  rû  r    r    r!   Útest_boxplot_sym”  s
    r   z$boxplot_autorange_false_whiskers.pngz#boxplot_autorange_true_whiskers.pngc                  C   s€   t j d¡ t  d¡} t  d| dg¡} t ¡ \}}|j| | gddd� | d¡ t ¡ \}}|j| | gddd	d
� | d¡ d S )NrV  r’  r   r3   r”  r2   r•  )r  rÁ   T)r–  r—  Z	autorange)	r]   r^   r_   rw   rš  r#   r   r7  ro  )r,   r>  rÕ   r?  rÜ   r    r    r!   Útest_boxplot_autorange_whiskers¡  s    

r¡  c              	   C   sF   t  ddd¡}t  d|dg¡}t |¡� |  ||g¡ W 5 Q R X | S )Nr¸  r¹  r’  r“  rÉ  )r]   rÎ   rš  rN   r
   r7  )r   Úrc_dictr,   r    r    r!   Ú_rc_test_bxp_helper´  s
    r£  Zboxplot_rc_parameters)r�  r9  râ   r‘   c                  C   sÆ   t j d¡ t d¡\} }dddgdddd	ddd
dddd
ddd
ddd
dœ}dddgddœ}ddddddddd
ddddœ}|||g}t||ƒD ]\}}t||ƒ qŒtjj	dd„ |d  
¡ D ƒksÂt‚d S )NrV  r‰   TrÁ   rf  r”  r—  r†   rõ  r¦  rÃ   r¨  r6   rD  )zboxplot.notchúboxplot.whiskerszboxplot.bootstrapzboxplot.flierprops.colorúboxplot.flierprops.markerz"boxplot.flierprops.markerfacecolorz"boxplot.flierprops.markeredgecolorzboxplot.flierprops.markersizezboxplot.flierprops.linestylezboxplot.flierprops.linewidthzboxplot.boxprops.colorrZ  zboxplot.boxprops.linestylezboxplot.capprops.colorzboxplot.capprops.linewidthzboxplot.capprops.linestylezboxplot.medianprops.colorzboxplot.medianprops.linewidthzboxplot.medianprops.linestyleFr   rÇ   )zboxplot.verticalr¤  zboxplot.patchartistú-.)r¤  zboxplot.showcapszboxplot.showboxzboxplot.showflierszboxplot.showmeanszboxplot.meanlinezboxplot.meanprops.colorzboxplot.meanprops.linewidthzboxplot.meanprops.linestylezboxplot.whiskerprops.colorzboxplot.whiskerprops.linewidthzboxplot.whiskerprops.linestylec                 S   s   g | ]}t |ƒ‘qS r    )r<  r-  r    r    r!   rœ   ú  s     z.test_boxplot_rc_parameters.<locals>.<listcomp>r2   )r]   r^   r_   r#   r   rm  r£  rN   rò   ró   Zget_childrenr&   )r(   r   Zrc_axis0Zrc_axis1Zrc_axis2Ú	dict_listrA  Zrc_axisr    r    r!   Útest_boxplot_rc_parameters¼  sZ    éýò
ÿr¨  zboxplot_with_CIarray.pngc                  C   sv   t j d¡ t  ddd¡} t  d| dg¡} t ¡ \}}t  ddgd	d
gg¡}|j| | gdd dg|dd� | 	d¡ d S )NrV  r¸  r¹  r’  r“  rÉ  r]  rõ  r^  ç      @r”  r£   r2   )r–  ÚusermediansÚconf_intervalsr—  r˜  )
r]   r^   r_   rÎ   rš  r#   r   rþ   r7  ro  )r,   r(   r   ZCIsr    r    r!   Útest_boxplot_with_CIarrayý  s     ÿr¬  zboxplot_no_inverted_whisker.pngc               	   C   s\   t jddddddddgt jd	�} t ¡ }| | ¡ | d
¡ |jjddd� |j	 d¡ d S )Nr‰   i(#  rØ  éX   i^  i@ ix  iÀ  rF  rå   FÚminor©Úwhich)
r]   rþ   re  r#   r  r7  r  rT   rÒ  rQ   )r,   rÕ   r    r    r!   Útest_boxplot_no_weird_whisker  s    ÿ

r±  c               	   C   sŠ   t  ddd¡} t  d| dg¡} t ¡ \}}t t¡� |j| ddgd� W 5 Q R X t t¡�$ |j| | gddgddggd� W 5 Q R X d S )	Nr¸  r¹  r’  r“  rÉ  r2   r3   )rª  ©	r]   rÎ   rš  r#   r   rŠ   r‹   r*  r7  rû  r    r    r!   Útest_boxplot_bad_medians  s    r³  c               	   C   sŽ   t  ddd¡} t  d| dg¡} t ¡ \}}t t¡� |j| | gddggd� W 5 Q R X t t¡�" |j| | gddgdggd� W 5 Q R X d S )	Nr¸  r¹  r’  r“  rÉ  r2   r3   )r«  r²  rû  r    r    r!   Útest_boxplot_bad_ci%  s    "r´  c                  C   sZ   t  d¡} t ¡ \}}| | ¡d d  ¡ dks4t‚|j| dd�d d  ¡ dksVt‚d S )Nrr   Úboxesr   r3   ©rx  )r]   rb   r#   r   r7  r•  r&   )r,   rÍ  r   r    r    r!   Útest_boxplot_zorder/  s    
r·  c                  C   s¦   dt jd< dt jd< dt jd< t  ¡ \} }t d¡}d|d	< |j|d
d�}dD ]"}|| D ]}| ¡ dksZt‚qZqN|d d  ¡ dksŠt‚|d d  ¡ dks¢t‚d S )Nrc  r³  r†   r¥  r�  zboxplot.meanprops.markerrÇ   rØ  rp   T)rz  )ZwhiskersZcapsrµ  Zmediansr±   r„  r   Zmeans)r#   r¬   r   r]   rb   r7  Ú
get_markerr&   )r(   r   Z	test_dataZ
bxp_handleZ	bxp_linesZ	each_liner    r    r!   Útest_boxplot_marker_behavior6  s    



r¹  z&boxplot_mod_artists_after_plotting.pngc                  C   sR   dddddddg} t  ¡ \}}|j| dd�}|D ]}|| D ]}| d	¡ q<q0d S )
Nrƒ  rß  rÁ  ç¸…ëQ¸¾?gìQ¸…ëá?gìQ¸…ëá¿r†   rŸ  r¦   )r#   r   r7  rÕ  )r,   r(   r   ÚbpÚkeyrç  r    r    r!   Ú&test_boxplot_mod_artist_after_plottingH  s    r½  zviolinplot_vert_baseline.pngc                  C   sp   t j d¡ dd„ tdƒD ƒ} t ¡ }|j| tdƒdddd� d| i} t ¡ \}}|jdtdƒddd| d� d S )	Niºe°c                 S   s   g | ]}t jjd d�‘qS ©rÇ   ru  ©r]   r^   r`   ©r™   rv  r    r    r!   rœ   X  s     z1test_vert_violinplot_baseline.<locals>.<listcomp>rç   r   ©r4  rz  ÚshowextremaÚshowmediansrŒ  )r4  rz  rÂ  rÃ  r[  )r]   r^   r_   r­   r#   r  Ú
violinplotr   )r[  r   r(   r    r    r!   Útest_vert_violinplot_baselineS  s    ÿ ÿrÅ  zviolinplot_vert_showmeans.pngc                  C   sB   t  ¡ } tj d¡ dd„ tdƒD ƒ}| j|tdƒdddd� d S )Niw5¢+c                 S   s   g | ]}t jjd d�‘qS r¾  r¿  rÀ  r    r    r!   rœ   i  s     z2test_vert_violinplot_showmeans.<locals>.<listcomp>rç   r2   r   rÁ  ©r#   r  r]   r^   r_   r­   rÄ  ©r   r[  r    r    r!   Útest_vert_violinplot_showmeansd  s    ÿrÈ  zviolinplot_vert_showextrema.pngc                  C   sB   t  ¡ } tj d¡ dd„ tdƒD ƒ}| j|tdƒdddd� d S )Ni‰c                 S   s   g | ]}t jjd d�‘qS r¾  r¿  rÀ  r    r    r!   rœ   s  s     z4test_vert_violinplot_showextrema.<locals>.<listcomp>rç   r   r2   rÁ  rÆ  rÇ  r    r    r!   Ú test_vert_violinplot_showextreman  s    ÿrÉ  zviolinplot_vert_showmedians.pngc                  C   sB   t  ¡ } tj d¡ dd„ tdƒD ƒ}| j|tdƒdddd� d S )Nib}&c                 S   s   g | ]}t jjd d�‘qS r¾  r¿  rÀ  r    r    r!   rœ   }  s     z4test_vert_violinplot_showmedians.<locals>.<listcomp>rç   r   r2   rÁ  rÆ  rÇ  r    r    r!   Ú test_vert_violinplot_showmediansx  s    ÿrÊ  zviolinplot_vert_showall.pngc                  C   s\   t  ¡ } tj d¡ dd„ tdƒD ƒ}| j|tdƒdddddgdd	gd
dgddggd� d S )Ni–Oßc                 S   s   g | ]}t jjd d�‘qS r¾  r¿  rÀ  r    r    r!   rœ   ‡  s     z0test_vert_violinplot_showall.<locals>.<listcomp>rç   r2   rÄ   çÍÌÌÌÌÌì?rÅ   rx  rÆ   ræ  rE  rå  )r4  rz  rÂ  rÃ  Ú	quantilesrÆ  rÇ  r    r    r!   Útest_vert_violinplot_showall‚  s    þrÍ  z#violinplot_vert_custompoints_10.pngc                  C   sD   t  ¡ } tj d¡ dd„ tdƒD ƒ}| j|tdƒddddd� d S )Ni«ú$c                 S   s   g | ]}t jjd d�‘qS r¾  r¿  rÀ  r    r    r!   rœ   ’  s     z8test_vert_violinplot_custompoints_10.<locals>.<listcomp>rç   r   rr   ©r4  rz  rÂ  rÃ  ÚpointsrÆ  rÇ  r    r    r!   Ú$test_vert_violinplot_custompoints_10�  s     ÿrÐ  z$violinplot_vert_custompoints_200.pngc                  C   sD   t  ¡ } tj d¡ dd„ tdƒD ƒ}| j|tdƒddddd� d S )NiYqVc                 S   s   g | ]}t jjd d�‘qS r¾  r¿  rÀ  r    r    r!   rœ   œ  s     z9test_vert_violinplot_custompoints_200.<locals>.<listcomp>rç   r   rí  rÎ  rÆ  rÇ  r    r    r!   Ú%test_vert_violinplot_custompoints_200—  s     ÿrÑ  zviolinplot_horiz_baseline.pngc                  C   sD   t  ¡ } tj d¡ dd„ tdƒD ƒ}| j|tdƒddddd� d S )Niÿ\dc                 S   s   g | ]}t jjd d�‘qS r¾  r¿  rÀ  r    r    r!   rœ   ¦  s     z2test_horiz_violinplot_baseline.<locals>.<listcomp>rç   Fr   ©r4  rX  rz  rÂ  rÃ  rÆ  rÇ  r    r    r!   Útest_horiz_violinplot_baseline¡  s     ÿrÓ  z violinplot_horiz_showmedians.pngc                  C   sD   t  ¡ } tj d¡ dd„ tdƒD ƒ}| j|tdƒddddd� d S )	Niãlo/c                 S   s   g | ]}t jjd d�‘qS r¾  r¿  rÀ  r    r    r!   rœ   °  s     z5test_horiz_violinplot_showmedians.<locals>.<listcomp>rç   Fr   r2   rÒ  rÆ  rÇ  r    r    r!   Ú!test_horiz_violinplot_showmedians«  s     ÿrÔ  zviolinplot_horiz_showmeans.pngc                  C   sD   t  ¡ } tj d¡ dd„ tdƒD ƒ}| j|tdƒddddd� d S )	Ni&õc                 S   s   g | ]}t jjd d�‘qS r¾  r¿  rÀ  r    r    r!   rœ   º  s     z3test_horiz_violinplot_showmeans.<locals>.<listcomp>rç   Fr2   r   rÒ  rÆ  rÇ  r    r    r!   Útest_horiz_violinplot_showmeansµ  s     ÿrÕ  z violinplot_horiz_showextrema.pngc                  C   sD   t  ¡ } tj d¡ dd„ tdƒD ƒ}| j|tdƒddddd� d S )	NiŠe×!c                 S   s   g | ]}t jjd d�‘qS r¾  r¿  rÀ  r    r    r!   rœ   Ä  s     z5test_horiz_violinplot_showextrema.<locals>.<listcomp>rç   Fr   r2   rÒ  rÆ  rÇ  r    r    r!   Ú!test_horiz_violinplot_showextrema¿  s     ÿrÖ  zviolinplot_horiz_showall.pngc                  C   s^   t  ¡ } tj d¡ dd„ tdƒD ƒ}| j|tdƒddddddgd	d
gddgddggd� d S )Ni"Ûîc                 S   s   g | ]}t jjd d�‘qS r¾  r¿  rÀ  r    r    r!   rœ   Î  s     z1test_horiz_violinplot_showall.<locals>.<listcomp>rç   Fr2   rÄ   rË  rÅ   rx  rÆ   ræ  rE  rå  )r4  rX  rz  rÂ  rÃ  rÌ  rÆ  rÇ  r    r    r!   Útest_horiz_violinplot_showallÉ  s     þr×  z$violinplot_horiz_custompoints_10.pngc               	   C   sF   t  ¡ } tj d¡ dd„ tdƒD ƒ}| j|tdƒdddddd� d S )	Ni0c                 S   s   g | ]}t jjd d�‘qS r¾  r¿  rÀ  r    r    r!   rœ   Ù  s     z9test_horiz_violinplot_custompoints_10.<locals>.<listcomp>rç   Fr   rr   ©r4  rX  rz  rÂ  rÃ  rÏ  rÆ  rÇ  r    r    r!   Ú%test_horiz_violinplot_custompoints_10Ô  s      ÿrÙ  z%violinplot_horiz_custompoints_200.pngc               	   C   sF   t  ¡ } tj d¡ dd„ tdƒD ƒ}| j|tdƒdddddd� d S )	Ni<Ö9!c                 S   s   g | ]}t jjd d�‘qS r¾  r¿  rÀ  r    r    r!   rœ   ã  s     z:test_horiz_violinplot_custompoints_200.<locals>.<listcomp>rç   Fr   rí  rØ  rÆ  rÇ  r    r    r!   Ú&test_horiz_violinplot_custompoints_200Þ  s      ÿrÚ  c               	   C   sR   t  ¡ } tj d¡ dd„ tdƒD ƒ}t t¡� | j	|tdƒd� W 5 Q R X d S )NiÈ@ 3c                 S   s   g | ]}t jjd d�‘qS r¾  r¿  rÀ  r    r    r!   rœ   ì  s     z1test_violinplot_bad_positions.<locals>.<listcomp>rç   rÁ   r3  ©
r#   r  r]   r^   r_   r­   rŠ   r‹   r*  rÄ  rÇ  r    r    r!   Útest_violinplot_bad_positionsè  s
    rÜ  c               	   C   sZ   t  ¡ } tj d¡ dd„ tdƒD ƒ}t t¡�  | j	|tdƒdddgd� W 5 Q R X d S )	NiA#²c                 S   s   g | ]}t jjd d�‘qS r¾  r¿  rÀ  r    r    r!   rœ   õ  s     z.test_violinplot_bad_widths.<locals>.<listcomp>rç   r2   r3   r‰   )r4  r;  rÛ  rÇ  r    r    r!   Útest_violinplot_bad_widthsñ  s
    rÝ  c               	   C   sX   t  ¡ } tj d¡ tjjdd�g}t t¡�  | j	|ddgddggd� W 5 Q R X d S )	Ni¡Öl rÇ   ru  rÄ   rÅ   rž   ræ  ©rÌ  ©
r#   r  r]   r^   r_   r`   rŠ   r‹   r*  rÄ  rÇ  r    r    r!   Útest_violinplot_bad_quantilesú  s
    rà  c               	   C   s„   t  ¡ } tj d¡ tjjdd�g}t t¡� | j	|ddddggd� W 5 Q R X t t¡� | j	|d	ddd
ggd� W 5 Q R X d S )NiqÅð4rÇ   ru  rÄ   rÅ   rÆ   çÍÌÌÌÌÌð?rÞ  gš™™™™™©¿r_  rß  rÇ  r    r    r!   Ú$test_violinplot_outofrange_quantiles  s    "râ  c                 C   sZ   t j d¡ t jjdd�g}|  ¡ }|j|dddgd� | ¡ }|j|dddggd� d S )Né+•rÇ   ru  rÄ   rÆ   rË  rÞ  )r]   r^   r_   r`   r   rÄ  )r   r   r[  r   r    r    r!   Ú%test_violinplot_single_list_quantiles  s    rä  c              	   C   s”   t j d¡ |jt jjdd�ddddddd	gd
�}|jt jjdd�tdƒd
�}| t jjdd�¡}|  ¡  |||g¡ | ¡  |j|j|jg¡ d S )Nrã  r¹  ru  rÂ  rË  rQ  rÁ   rç   r‰   rU  Z	ABCDEFGHIrL  )	r]   r^   r_   rf  r`   r…  r   rÄ  r‡  )r   r   r8  Ús1Ús2Zs3r    r    r!   Útest_violinplot_pandas_series$  s    &rç  c                  C   sz   t  ¡ \} }| dd¡ | ¡ }tj d¡ tj ddd¡}tj ddd¡}|j||gddgdd	� | ¡ }t	||ƒ d S )
Nr   rç   rr   r‰   rÊ  r2   r3   F)r4  Zmanage_ticks)
r#   r   rn  r   r]   r^   r_   r`   r7  r   )rv  r   Zold_xlimr=  r  Únew_xlimr    r    r!   Útest_manage_xticks.  s    ré  c                  C   s�   t  ¡ \} }|jtj d¡dgd� |jtj d¡dgd� | j ¡  | ¡ dksVt	‚t
| ¡ ƒddgksnt	‚dd„ | ¡ D ƒdd	gksŒt	‚d S )
NrÇ   r‰   r3  rÁ   )r  rA  c                 S   s   g | ]}|  ¡ ‘qS r    ©rC  r-  r    r    r!   rœ   A  s     z+test_boxplot_not_single.<locals>.<listcomp>rÌ   Ú5)r#   r   r7  r]   r^   r“   rF  rØ   r   r&   r…  Ú
get_xticksr˜  r'   r    r    r!   Útest_boxplot_not_single:  s    
rí  c                  C   s@   t  ddgddg¡ tj ddi¡ t ¡ } t j| ddd� d S )Nr   r2   z	font.sizeéP   Úraw)r‹  Úformat)r#   r}   rN   r¬   ÚupdateÚioÚBytesIOÚsavefig©r—  r    r    r!   Útest_tick_space_size_0D  s    rö  Zerrorbar_basicZerrorbar_mixedc            
   	   C   s¬  t jdddt jd�} t  |  ¡}ddt  | ¡  }d| }t ¡ }| ¡ }|j| |ddd� | 	d¡ tj
d	d	d
d�\}}|d }|j| ||dd� | 	d¡ |jdd� |d }|j| ||ddd� | 	d¡ |d }|j| ||d	| g|d	| gdd� | 	d¡ |d }| d¡ t  d|| ¡}|| }|j| ||d	| g|ddd	d� | 	d¡ | dd¡ | d¡ | |d œ}	t ¡ }| ¡ }|jd!d"dd|	d#� | 	d¡ d S )$NrÄ   rç   rž   rF  rÅ   rE  r­  z&Simplest errorbars, 0.2 in x, 0.4 in yr3   T)r|  r}  rH  r�  r†   ©r¯  r¿   zVert. symmetric©Znbinsr|  )r®  r¿   rÙ  zHor. symmetric w/ alpharT  z--o©r¯  r®  r¿   zH, V asymmetricrÇ  rå   rU  rõ  )r¯  r®  r¿   ÚecolorZcapthickzMixed sym., log yr“  zVariable errorbarsrà   r,   r-   ©r®  r¯  r[  )r]   rb   Z
longdoublerO  r  r#   r®   r  r«  r/   r   Úlocator_paramsr  Úmaximumro  Zsuptitle)
r,   r-   r¯  r®  r(   r   r<  ZylowerZ
yerr_lowerr[  r    r    r!   Útest_errorbarM  sH    


$

  ÿ


rþ  Zmixed_errorbar_polar_capsc                  C   s  t  ¡ } t jddd�}dddg}dgd }|j||dd	d
d� tjd d tjd g}ddg}|j||dtj dd
d� dtj d d dtj d d dtj d g}dgd }ddd	gd	ddgg}dddgdddgg}	|j||||	d
d� dg}
dg}|j|
|dd	d
d� dS )zÝ
    Mix several polar errorbar use cases in a single test figure.

    It is advisable to position individual points off the grid. If there are
    problems with reproducibility of this test, consider removing grid.
    rA  ró  rÍ  r2   r3   r‰   rË  çffffffÖ?rÅ   r†   ©r®  r¯  r¿   rÄ   gÍÌÌÌÌÌü?ry  rx  rƒ  rç   rÁ   rd  rÆ   rž   çÍÌÌÌÌÌ @çÍÌÌÌÌÌ@rr   N)r#   r®   r  r«  r]   rÐ   )r(   r   Zth_symZr_symZth_longZr_longZth_asymZr_asymr®  r¯  Zth_overZr_overr    r    r!   Útest_mixed_errorbar_polar_caps„  s     	

0
r  c                  C   s¸   t  ¡ \} }t d¡}d| }|j||d d�\}}}|j|d| d d�\}}}| |d| ¡\}t | ¡ ¡t d¡ks|t	‚t | ¡ ¡t d¡ks˜t	‚t | ¡ ¡t d¡ks´t	‚d S )Nrr   r3   rN  rç   r  rK  rL  )
r#   r   r]   rb   r«  r}   r+  Úto_rgbaÚ	get_colorr&   )rÓ  r   r,   r-   rÈ  rv  rÉ  Zln1r    r    r!   Útest_errorbar_colorcycle§  s    
r  c              
      sŠ   t  ddd¡‰ ‡ fdd„tdƒD ƒ}|  ¡ }| ¡ }t|dddd	gƒD ]>\}}|jˆ ||d
 dddd� |jˆ ||d
 dd|dd� qFd S )NrÄ   rç   rž   c                    s   g | ]}t  ˆ  | ¡‘qS r    )r]   rO  )r™   rü  ©r,   r    r!   rœ   ¹  s     z.test_errorbar_cycle_ecolor.<locals>.<listcomp>r  rK  rL  r)  rØ  r¥  r†   r<  )r¯  rˆ   rk   rú  )r¯  rˆ   rk   r¥   rú  )r]   rb   r­   r   rm  r«  )r   r   r-   ZaxtZaxrÚyir¥   r    r  r!   Útest_errorbar_cycle_ecolor¶  s     ÿ  ÿr	  c               	   C   sÖ   t  ¡ } |  ¡ }t ddd¡}t | ¡}ddt |¡  }t |d| f¡j}d| }t	 
t¡� |j|||dd� W 5 Q R X t	 
t¡� |j|||dd� W 5 Q R X t	 
t¡� |j||||dd	� W 5 Q R X d S )
NrÄ   rç   rž   rÅ   r3   r†   r÷  )r®  r¿   rù  )r#   r®   r  r]   rb   rO  r  Úvstackr£  rŠ   r‹   r*  r«  )r(   r   r,   r-   Zyerr1r¯  r®  r    r    r!   Útest_errorbar_shapeÅ  s    r  Zerrorbar_limitsc                  C   s`  t  ddd¡} t  |  ¡}d}d}d}t ¡ \}}|j| ||||dd� t  | ¡}d|d	d
dg< |j| |d ||||dd� t  | ¡}d|dddg< |j| |d ||||dd� |j| |d dd|||||dd�
 d}t  | d¡}d|ddg< |}	|}
t  | ¡}t  | ¡}d|dg< d|dg< |j| |d dd|||	|
||ddddd� | d ¡ | 	d!¡ d S )"Nrž   rA  rÄ   rÅ   Údottedr¤   )r®  r¯  râ  r¥   Tr2   rÁ   rÂ  r¦   )r®  r¯  Úuplimsrâ  r¥   r3   rç   rË  r£   r–  )r®  r¯  Úlolimsrâ  r¥   r�   r†   Úmagenta)rk   rã  r®  r¯  r  r  râ  r¥   rÆ   r‰   rQ  r  rè   r   Úcyan)rk   rã  r®  r¯  ÚxlolimsÚxuplimsr  r  râ  rú  Úcapsizer¥   )r   rA  zErrorbar upper and lower limits)
r]   rb   rO  r#   r   r«  Z
zeros_likeZ	full_likern  r/   )r,   r-   r®  r¯  râ  r(   r   r  r  r  r  r    r    r!   Útest_errorbar_limits×  sX    
ÿ
ÿ   ÿ



     ý
r  c                  C   sd   t  d¡} t  d¡}tj| |dddd�\}}}|d ks:t‚|D ] }t  | ¡ t d¡k¡s>t‚q>d S )NrÁ   r2   rè   r   r  )	r]   rb   r#   r«  r&   rƒ  r  r+  r  )r,   r-   Úplotlinerv  ZbarlinesZerrbarr    r    r!   Útest_errorbar_nonefmt  s    

r  c                  C   s`   t  d¡} t  d¡}tj| |ddddddddd	d
d�\}}}| ¡ dksLt‚| ¡ dks\t‚d S )NrÁ   r2   ÚNonerc  rY   z	steps-midÚroundrŸ  r   Zbevel)
r®  r¯  râ  rk   r÷  r¤  Zdash_capstyleZdash_joinstyler£  r¢  )r]   rb   r#   r«  Zget_fillstyler&   Zget_drawstyle)r,   r-   r  rv  r    r    r!   Ú"test_errorbar_line_specific_kwargs  s    

 úr  c              	   C   s$  |  ¡ }|jdddgdddgdddd	d
� |jdddgdddgdddddd� |jdddgdddgdddddd� | dd¡ tdddgdddgd	ddgdddgd�}tjd|d� |   ¡ }|jdddgdddgdd� |jdddgdddgddd� |jdddgdddgddd � | dd¡ d S )!Nr3   rç   rr   r   r2   rž   r¦  rc  rD  )r,   r-   r¯  râ  rk   rx  r‰   z	tab:greenrt  r-   )r,   r-   r¯  r¥   râ  rk   rx  rÁ   rQ  ztab:bluer¦  r†   r6   )r,   r-   r¯  r¿   râ  rk   rx  rL  r—  rõ  r¨  )râ  rk   rx  r¥   r  )Z
prop_cycle©r,   r-   r¯  )r,   r-   r¯  r¥   )r,   r-   r¯  r¿   )r   r«  rn  r	   r#   Úrc)r   r   r   Z_cycler    r    r!   Útest_errorbar_with_prop_cycle"  s6      ÿ  ÿ  ÿ ÿr  c               	   C   sæ   t  ddd¡} | d|   }|d }t ¡  ¡ }tjtdd�� |j| ||dd� W 5 Q R X tjtdd�� |j| ||d	d� W 5 Q R X tjtd
d�� |j| ||ddgd� W 5 Q R X tjtdd�� |j| ||dd� W 5 Q R X d S )Nr   r2   rÈ   rQ  znot a tuple of two integersr  ©r2   r3   r‰   )Ú
errorevery)r  r‰   znot a valid NumPy fancy indexFTznot a recognized valueZfoobar)	r]   rÎ   r#   r®   r   rŠ   r‹   r*  r«  )r,   r-   r¯  r   r    r    r!   Útest_errorbar_every_invalid7  s     r  c               	   C   s  t  ¡  ¡ } tjtdd��, | jdgdgdgdggdgdggd� W 5 Q R X tjtdd��" | jdgdgdgdggd� W 5 Q R X tjtdd��" | jdgdgdgdggd	� W 5 Q R X tjtdd��6 t d
¡}dd„ |D ƒ}| j||t	j
dd�d	� W 5 Q R X d S )Nz''xerr' must not contain negative valuesr  r   rN  r2   )r,   r-   r®  r¯  )r,   r-   r®  z''yerr' must not contain negative valuesr  rÁ   c                 S   s"   g | ]}t   d d|d d ¡‘qS )rB  rÂ  r3   r2   ©rš  r  r    r    r!   rœ   W  s     z/test_xerr_yerr_not_negative.<locals>.<listcomp>r(  r‡  )r#   r®   r   rŠ   r‹   r*  r«  r]   rb   rš  rŠ  )r   r,   r-   r    r    r!   Útest_xerr_yerr_not_negativeH  s,    ÿ0ÿ&ÿ&ÿ

þr!  c           	   
   C   s>  t  ddd¡}|d|  }|d }| ¡ }|  ¡ }tdddddgƒD ]p\}}|d7 }|j||||d	fd	|d
� |j|||dd� |j||d d	… ||d d	… ||d d	… d	|dd� qD|j||d |dd	dd� |j|dd d	… |dd d	… d ddd� |j||d |d	dd� |j||d |tdd dƒtdd dƒd	ddd� |j|dd d… |dd d… d dddd� |j|dd d… |dd d… d |dd d… d	ddd� |j||d |dddgd dddgd d	ddd� |j|dd d… |dd d… d dddd� |j|dd d… |dd d… d |dd d… d	ddd� d S )Nr   r2   rÈ   rQ  Zrgbkr3   r¹  rà  rç   )r  r  r6   r  )r6   rx  rè   )r  r6   r¿   rÄ   )r2   rç   r†   )rÐ  r  r¿   r¶  )r  r¿   rÅ   r‰   r  )r  rÐ  r  r6   r¿   FTrÁ   rK  )r]   rÎ   r   rm  r«  r}   rä  )	r   r   r,   r-   r¯  rf   re   r¥   Úshiftr    r    r!   Útest_errorbar_every]  sX     ÿ(  ÿ*
  þ,,  ÿ  þ,,  ÿr#  Ú
elinewidthc                 C   s(   t jdddgdddgdddg| d� d S )Nr2   r3   r‰   )r¯  r$  )r#   r«  )r$  r    r    r!   Útest_errorbar_linewidth_type‰  s    r%  c                 C   sŒ   |   ¡ }tdƒ}t ddtjtjdg¡}t ddtjtjdg¡}| |||¡ |  ¡ }| ddgddgddg¡ |jdgdgdgdd	� d S )
NrÁ   r2   r3   r‰   rç   rQ  r   r  ©r¿   )r”   r­   r]   rþ   r  r«  )r   r   r   ÚxsÚysÚesr    r    r!   Útest_errorbar_nan�  s    r*  Zhist_stacked_stepfilledc                  C   sj   t  ddd¡} t  ddd¡}t ¡ \}}|j| |fddd	� d
| |fi}t ¡ \}}|jd
dd|d� d S )Nr2   r‰   rÊ  r   rr   rW  rl  Tr~  r,   )rn  r  r[  ©r]   rÎ   r#   r   ri  )Úd1Úd2r(   r   r[  r    r    r!   Útest_hist_stacked_stepfilledœ  s    r.  Zhist_offsetc                  C   sH   t  ddd¡} t  ddd¡}t ¡ \}}|j| dd� |j|d	d� d S )
Nr   rr   rW  r2   r‰   rÊ  rÁ   r€  rÈ   r+  ©r,  r-  r(   r   r    r    r!   Útest_hist_offsetª  s
    r0  zhist_step.pngc                  C   sD   t  ddd¡} t ¡ \}}|j| dd� | dd¡ | dd	¡ d S )
Nr2   r‰   rÊ  rk  rm  r   rr   rp   rÁ   )r]   rÎ   r#   r   ri  ro  rn  ©r,  r(   r   r    r    r!   Útest_hist_step´  s
    r2  zhist_step_horiz.pngc                  C   s@   t  ddd¡} t  ddd¡}t ¡ \}}|j| |fddd	� d S )
Nr   rr   rW  r2   r‰   rÊ  rk  rJ   )rn  rL   r+  r/  r    r    r!   Útest_hist_step_horiz¾  s    r3  Zhist_stacked_weightsc                  C   sb   t  ddd¡} t  ddd¡}t  ddd¡}t  d	d
d¡}t ¡ \}}|j| |f||fddd� d S )Nr   rr   rW  r2   r‰   rÊ  rU  r©  r&  rÃ   rl  T)Úweightsrn  r  r+  )r,  r-  Zw1Zw2r(   r   r    r    r!   Útest_hist_stacked_weightedÇ  s    r5  Úuse_line_collectionzw/ line collectionzw/o line collectionzstem.pngc              
   C   s†   t  ddt j d¡}t ¡ \}}| rB|j|t  |¡ddddd� n8tjt	d	d
��$ |j|t  |¡dddddd� W 5 Q R X | 
¡  d S )NrÄ   r3   rÇ   úC2-.zk+úC1-.ú )ÚlinefmtÚ	markerfmtÚbasefmtr*   Ú
deprecatedr  F)r:  r;  r<  r*   r6  )r]   rÎ   rÐ   r#   r   Ústemr  rŠ   r-  r   rB   ©r6  r,   r(   r   r    r    r!   Ú	test_stemÒ  s$       ÿ   þr@  c                  C   sò   dd„ } t  ¡ \}}dddg}dddg}| | |¡d	dd
g|fd� | | ||¡||fd� | |j||dd�||fd� | | ||d¡||fd� | |j||ddd�||fd� | |j|dd�d	dd
g|fd� | | |d¡d	dd
g|fd� dS )z5Test that stem() correctly identifies x and y values.c                 S   s8   t t| j ¡ ƒ\}}||d ks$t‚||d ks4t‚d S ©Nr   r2   )Úmapr…  Ú
markerliner¶  r&   )Ústem_containerÚexpectedr,   r-   r    r    r!   Ú_assert_equalè  s    z%test_stem_args.<locals>._assert_equalr2   r‰   rÁ   rÂ  rË  r¹  r   r3   )rE  rü   ©r:  zb--)r:  r<  N©r#   r   r>  ©rF  r(   r   r,   r-   r    r    r!   Útest_stem_argsæ  s    

 rJ  c                  C   sš  ddd„} t  ¡ \}}dddg}ddd	g}| | ||¡d
dd� | |j||dd�d
dd� | |j||dd�ddd� | | ||d¡dddd� | | ||d¡dddd� | |j||ddd�dddd� | |j||ddd�dddd� | |j||ddd�dddd� | |j||ddd�dddd� | |j||ddd�dddd� | |j||dd�dddd� | |j||ddd�dddd� | |j||ddd�dddd� dS )zATest that stem(..., markerfmt=...) produces the intended markers.Nc                 S   sl   |dk	rt  | j ¡ |¡st‚|dk	r<t  | j ¡ |¡s<t‚|dk	rV| j ¡ |ksVt‚| j ¡ dksht‚dS )zl
        Check that the given StemContainer has the properties listed as
        keyword-arguments.
        Nr  )r+  r  Z	stemlinesr  r&   rC  r¸  Úget_linestyle)rD  Ú	linecolorÚmarkercolorrk   r    r    r!   rF  þ  s    þþz*test_stem_markerfmt.<locals>._assert_equalr2   r‰   rÁ   rÂ  rË  r¹  r  r†   )rM  rk   r,   )r;  rø  r¨  )rL  rM  rk   rõ  Zgxr9  r  r±   rG  )r:  r;  )NNNrH  rI  r    r    r!   Útest_stem_markerfmtü  sŠ      ÿ


  þ  þ  þ  þ  þ  þ  þ  þ  þ  þrN  c                  C   s@   t  dd¡\} }tj d¡tj d¡g}ddg}| ||¡ d S )Nr2   z2013-9-28 11:00:00z2013-9-28 12:00:00rÇ   rí  )r#   r   ÚdateutilÚparserÚparser>  )r(   r   r'  r(  r    r    r!   Útest_stem_dates=  s    

ÿrR  zstem_orientation.pngc              
   C   s~   t  ddt j d¡}t ¡ \}}| rB|j|t  |¡ddddd� n8tjt	d	d
��$ |j|t  |¡dddddd� W 5 Q R X d S )NrÄ   r3   rW  r7  Zkxr8  rJ   )r:  r;  r<  rL   r=  r  F)r:  r;  r<  r6  rL   )
r]   rÎ   rÐ   r#   r   r>  r  rŠ   r-  r   r?  r    r    r!   Útest_stem_orientationE  s"      þ  ýrS  Zhist_stacked_stepfilled_alphac                  C   sB   t  ddd¡} t  ddd¡}t ¡ \}}|j| |fddd	d
� d S )Nr2   r‰   rÊ  r   rr   rW  rl  Trž   )rn  r  rÙ  r+  r/  r    r    r!   Ú"test_hist_stacked_stepfilled_alphaX  s    rT  Zhist_stacked_stepc                  C   s@   t  ddd¡} t  ddd¡}t ¡ \}}|j| |fddd	� d S )
Nr2   r‰   rÊ  r   rr   rW  rk  Tr~  r+  r/  r    r    r!   Útest_hist_stacked_stepa  s    rU  Zhist_stacked_normedc                  C   s@   t  ddd¡} t  ddd¡}t ¡ \}}|j| |fddd� d S )	Nr2   r‰   rÊ  r   rr   rW  T)r  rˆ  r+  r/  r    r    r!   Útest_hist_stacked_densityj  s    rV  zhist_step_bottom.pngc                  C   s4   t  ddd¡} t ¡ \}}|j| t  d¡dd� d S )Nr2   r‰   rÊ  rr   rl  )rH   rn  )r]   rÎ   r#   r   ri  rb   r1  r    r    r!   Útest_hist_step_bottoms  s    rW  c                  C   s˜   ddddg} ddddddg}t j|| dd�\}}\}ddgddgddgddgddgddgddgddgddgddgddgddgddgg}t| ¡ |ƒ d S )Nr   r2   r3   r‰   rl  ©rë  rn  ©r#   ri  r   Úget_xy©rë  r[  rv  Úpolygonr]  r    r    r!   Útest_hist_stepfilled_geometry{  s    þ*     ÿr]  c               	   C   sz   ddddg} ddddddg}t j|| dd�\}}\}ddgddgddgddgddgddgddgddgg}t| ¡ |ƒ d S )Nr   r2   r3   r‰   rk  rX  rY  r[  r    r    r!   Útest_hist_step_geometry†  s    þ4r^  c                  C   s    ddddg} ddddddg}t j|| dddgdd�\}}\}ddgddgddgddgddgdd	gdd	gddgddgddgddgddgddgg}t| ¡ |ƒ d S )
Nr   r2   r3   r‰   r�   rl  ©rë  rH   rn  rÁ   r  rY  r[  r    r    r!   Ú$test_hist_stepfilled_bottom_geometry�  s     ý*     ÿr`  c               	   C   s‚   ddddg} ddddddg}t j|| dddgdd�\}}\}ddgddgddgddgddgdd	gdd	gddgg}t| ¡ |ƒ d S )
Nr   r2   r3   r‰   r�   rk  r_  rÁ   r  rY  r[  r    r    r!   Útest_hist_step_bottom_geometryœ  s    ý4ra  c                  C   s*  ddddg} ddddddg}dddg}t j||g| ddd�\}}}t|ƒdksRt‚|d \}ddgddgddgddgddgddgddgddgddgddgddgddgddgg}t| ¡ |ƒ |d \}ddgddgddgddgddgddgddgddgddgddgddgddgddgg}t| ¡ |ƒ d S )	Nr   r2   r3   r‰   Trl  ©rë  r  rn  rç   ©r#   ri  r  r&   r   rZ  ©rë  Zdata_1Zdata_2rv  rò   r\  r]  r    r    r!   Ú%test_hist_stacked_stepfilled_geometry§  s:    

ý
*     ÿ
*     ÿre  c               	   C   sî   ddddg} ddddddg}dddg}t j||g| ddd�\}}}t|ƒdksRt‚|d \}ddgddgddgddgddgddgddgddgg}t| ¡ |ƒ |d \}ddgddgddgddgddgddgddgddgg}t| ¡ |ƒ d S )	Nr   r2   r3   r‰   Trk  rb  rç   rc  rd  r    r    r!   Útest_hist_stacked_step_geometry½  s    

ý
4
4rf  c                  C   s2  ddddg} ddddddg}dddg}t j||g| ddddgdd�\}}}t|ƒdksZt‚|d \}ddgddgddgdd	gdd	gdd
gdd
gddgddgddgddgddgddgg}t| ¡ |ƒ |d \}ddgddgddgddgddgddgddgdd
gdd
gdd	gdd	gddgddgg}t| ¡ |ƒ d S )Nr   r2   r3   r‰   Tr�   rl  ©rë  r  rH   rn  rÁ   r  rç   rQ  r©  rc  rd  r    r    r!   Ú,test_hist_stacked_stepfilled_bottom_geometryÑ  s<    

ü
*     ÿ
*     ÿrh  c               	   C   sö   ddddg} ddddddg}dddg}t j||g| ddddgdd�\}}}t|ƒdksZt‚|d \}ddgddgddgdd	gdd	gdd
gdd
gddgg}t| ¡ |ƒ |d \}ddgddgddgddgddgddgddgdd
gg}t| ¡ |ƒ d S )Nr   r2   r3   r‰   Tr�   rk  rg  rÁ   r  rç   rQ  r©  rc  rd  r    r    r!   Ú&test_hist_stacked_step_bottom_geometryè  s     

ü
4
4ri  Zhist_stacked_barc                  C   sâ   dddddddddddd	gdd
ddddgdddddddgddddddddddddgddddddddddddddgddddddddddddgg} ddddddg}dd d!d"d#g}t  ¡ \}}|j| dd$d%||d&� |jd'd(d)d*� d S )+NrÇ   rí  é@  iÂ  rî  rÊ  rH  é6  rG  é   rW  rL  i¤  rC  r’  rØ  é´   rŒ  rð  rÁ   rr   i+  r–   rï  )gXÛ÷xnâ?r£   rS  )rS  r£   g `¢pÖ?)rS  r£   g˜©­ÇŸõä?)rS  g¤Ë¢³`å?r£   )g¢CÒ?rS  r£   )g æõKÍêå?rS  r£   r¦   rL  z yellowr  r<  rp  Úmid)rë  rn  rÿ  r¥   r*   zupper right)r£   r£   r2   )r:   Zbbox_to_anchorr}  )r#   r   ri  rB   )rŒ  r~  Úlabelsr(   r   r    r    r!   Útest_hist_stacked_barý  s&     ü  þÿrp  c                  C   sD   t  ddg¡} tjddgddggdd| d� |  ¡ ddgks@t‚d S )Nrr   rÊ  r   r2   r3   rp  )rn  rH   )r]   rþ   r#   ri  Útolistr&   rõ  r    r    r!   Ú%test_hist_barstacked_bottom_unchanged  s    rr  c                  C   s,   t  ¡ \} }|jg tdƒtdƒgdd� d S )Nrr   rk  rm  )r#   r   ri  r­   r'   r    r    r!   Útest_hist_emptydata  s    rs  c                  C   sî   t  ¡ \} }|jddgdd�\}}}|d  ¡ dks8t‚|jddgdgd�\}}}|d  ¡ dksft‚|jddgd d�\}}}|d  ¡ dks’t‚|jddgdd�\}}}|d  ¡ dks¾t‚|jddgdd�\}}}|d  ¡ dksêt‚d S )Nr   r2   rÑ  rþ  r]  Z00)r#   r   ri  rR   r&   )r(   r   rv  ra  r    r    r!   Útest_hist_labels  s    rt  Ztransparent_markersc                  C   s:   t j d¡ t j d¡} t ¡ \}}|j| dddd� d S )Nr   rW  rÅ  rè   rÇ   )rx  rq   ©r]   r^   r_   r#   r   r}   r‰  r    r    r!   Útest_transparent_markers)  s    rv  Zrgba_markersc               	   C   sÜ   t jdd�\} }ddg}ddg}d dg}tdd	d
�}t|ƒD ]~\}}t|ƒD ]l\}}	t|ƒD ]Z\}
}|| j|d |
d df||	|dœ|—Ž || j|d |
d df|	|dœ|—Ž q\qLq<|D ]}| ddddg¡ qÀd S )Nr3   ró  r  )r2   r   r   rž   rù   )r   r   r2   rž   rÅ   rÇ   rÊ  )rã  rù  r2   r†   )rx  rú  rÙ  r‰   r,   )rú  rÙ  rp   rç   r   rÁ   )r#   r   rÑ  r:  r}   rA  )r(   r<  ZrcolorsZbcolorsÚalphasÚkwr÷   rÙ  rP  ZrcolorrD  Zbcolorr   r    r    r!   Útest_rgba_markers2  s     ÿÿ.ry  Zmollweide_gridc                  C   s    t  ¡ } | jdd�}| ¡  d S )NÚ	mollweiderÍ  )r#   r®   r”   rÒ  r'   r    r    r!   Útest_mollweide_gridC  s    r{  c                  C   sœ   t  ¡ } | jdd�}t tj tjd¡}t tj d tjd d¡}t ||¡\}}t | ¡ | ¡ f¡j	}|j
 |¡}|j
 ¡  |¡}tj ||d¡ d S )Nrz  rÍ  r¹  rÃ   rm  r‰   )r#   r®   r”   r]   rÎ   rÐ   rÐ  r
  r§  r£  ÚtransProjectionrê   Úinvertedr©   r   )r(   r   ZlonZlatÚllr]  Zll2r    r    r!   Ú&test_mollweide_forward_inverse_closureL  s    r  c                  C   sz   t  ¡ } | jdd�}t ddd¡}t ||¡\}}t | ¡ | ¡ f¡j}|j	 
¡  |¡}|j	 |¡}tj ||d¡ d S )Nrz  rÍ  r   r2   éô  r‰   )r#   r®   r”   r]   rÎ   rÐ  r
  r§  r£  r|  r}  rê   r©   r   )r(   r   r,   r-   r]  r~  Úxy2r    r    r!   Ú&test_mollweide_inverse_forward_closureb  s    r‚  Ú
test_alphac               	   C   sò   t j d¡ t j d¡} t ¡ \}}|j| ddddgddddgddd� |j| d	 dddddgddddgdddd
� |j| d ddddgdddgdddd
� |j| d dddddgddddgddd� |j| d dddddgdddgddd� d S )Nr   rW  z-Dr2   rž   rÊ  rr   )r¥   rx  rq   rû   r3   )r¥   rx  rq   rû   rÙ  rç   rQ  rË  ru  r‰  r    r    r!   rƒ  w  s2     ÿ  þ þ  ÿ ÿÚ	eventplotc                  C   sr  t j d¡ t j ddg¡ ¡ } t j ddg¡ ¡ }| | }t|ƒ}dddggt| ƒ }dddgdddgdddgdddgdddgdddgg}|| }dt  dt| ƒ¡d	  }d
dddddg}| ¡ | }	d	gt| ƒ }
ddddddg}|
| }t ¡ }| ¡ }|j	|||	|d�}t|ƒ}||k�s&t
‚|||	|dœ}t ¡ }| ¡ }|j	dddd|d�}t|ƒ}||k�snt
‚d S )Nr   rh   rÊ  rQ  r2   ræ  r_  rg  ç…ëQ¸Õ?iñÿÿÿrW  r�   rr   rÁ   r3   r‰   )r~  ÚlineoffsetsÚlinelengths)r³   r6   Úlor~  r³   r6   rˆ  r~  )r~  r†  r‡  r[  )r]   r^   r_   rq  r  rb   r#   r®   r”   r„  r&   )r¼  Údata2r[  Znum_datasetsZcolors1Zcolors2r~  Zlineoffsets1Zlineoffsets2r†  Zlinelengths1Zlinelengths2r‡  r(   ÚaxobjZcollsZnum_collectionsr    r    r!   Útest_eventplot•  sH    û
ÿ
 ÿr‹  ztest_eventplot_defaults.pngc                  C   sZ   t j d¡ t j ddg¡ ¡ } t j ddg¡ ¡ }| | }t ¡ }| ¡ }| |¡ dS )zf
    test that eventplot produces the correct output given the default params
    (see bug #3728)
    r   rh   rÊ  rQ  N)r]   r^   r_   rq  r#   r®   r”   r„  )r¼  r‰  r[  r(   rŠ  r    r    r!   Útest_eventplot_defaultsÁ  s    rŒ  r~  )rí  )z
tab:orangeztab:pinkztab:cyanZbLacK)r–  )r   r2   r   N)r2   r   r2   rž   c                 C   s¤   dgdgdgdgg}dd„ | D ƒ}t |ƒdkr6|d }t t |¡t |ƒdf¡}t ¡ \}}t | ƒdkrp| d } |j|| d�}t||ƒD ]\}}t	| 
¡ |ƒ qˆd	S )
zBTest the *colors* parameter of eventplot. Inspired by issue #8193.r   r2   r3   r‰   c                 S   s   g | ]}|d k	r|nd‘qS )Nr  r    ©r™   r6   r    r    r!   rœ   Ü  s     z)test_eventplot_colors.<locals>.<listcomp>rç   ©r~  N)r  r]   Zbroadcast_tor+  Zto_rgba_arrayr#   r   r„  rm  r   r  )r~  r[  rE  r(   r   r!  r  r¥   r    r    r!   Útest_eventplot_colorsÒ  s    r�  c               	   C   s  t  ¡ \} }|jdddgddddggdd	�}|d  ¡ dks@t‚|d  ¡ dksTt‚|jdddgddddggd
dgd	�}|d  ¡ d
ksŒt‚|d  ¡ dks t‚tjtdd��, |jdddgddddggd
ddgd	� W 5 Q R X tjtdd�� |jdddgd
dgd	� W 5 Q R X d S )Nr   r3   rç   r2   r‰   rÁ   r¹  ræ  r»  rž   zalpha and positions are unequalr  rË  )r#   r   r„  Ú	get_alphar&   rŠ   r‹   r*  )r(   r   r!  r    r    r!   Útest_eventplot_alphaì  s     $0r‘  z!test_eventplot_problem_kwargs.pngc              	   C   s¢   t j d¡ t j dg¡ ¡ }t j dg¡ ¡ }||g}t ¡ }| ¡ }|j|ddgddgdd	gd	dgd
dgddgd� t| ƒdksˆt	‚t
dd„ | D ƒƒsžt	‚dS )zß
    test that 'singular' versions of LineCollection props raise an
    MatplotlibDeprecationWarning rather than overriding the 'plural' versions
    (e.g., to prevent 'color' from overriding 'colors', see issue #4297)
    r   rÊ  rr   r¨  r—  r6   rÎ  r3   r2   r‡   ZdashedÚdashdotr  )r~  r¥   r/  rí   rß  rˆ   r‰   c                 s   s   | ]}t |jtƒV  qd S r×   )Ú
issubclassÚcategoryr   )r™   Zwir    r    r!   r‚    s   ÿz0test_eventplot_problem_kwargs.<locals>.<genexpr>N)r]   r^   r_   rq  r#   r®   r”   r„  r  r&   rƒ  )Zrecwarnr¼  r‰  r[  r(   rŠ  r    r    r!   Útest_eventplot_problem_kwargs   s$    úÿr•  c                  C   s.   t  dd¡\} }|jg gdgd� t  ¡  d S )Nr2   )rS  rS  rS  rS  rŽ  ©r#   r   r„  rØ   r'   r    r    r!   Útest_empty_eventplot  s    r—  r[  rL   ÚverticalrJ   c                 C   s>   |dkri nd|i}t  dd¡\}}|j| f|Ž t  ¡  dS )z#Introduced when fixing issue #6412.NrL   r2   r–  )r[  rL   Úoptsr(   r   r    r    r!   Útest_eventplot_orientation#  s    rš  c                 C   s‚   t   ddd¡t   ddd¡t   ddd¡g}t   ddd¡t   ddd¡g}| ¡ }|j|dd� |j|dd� |  ¡ }| ||g¡ d S )	NrB  r2   r3   r‰   rÈ   rw  r   )r†  )rš  r   r„  )r   r   Zts_1Zts_2r   r    r    r!   Útest_eventplot_units_list-  s    ÿr›  zmarker_styles.pngc               	   C   sŒ   t  ¡ \} }ttjjjdd„ d�}| d¡ d
|•}t|ƒD ]J\}}|j|d d t	 
d¡d  t	 d¡d | d|d|d  |d	� q<d S )Nc                 S   s   t t| ƒƒt | ƒ S r×   )rç  r<  r  r    r    r!   r�  D  r‘  z$test_marker_styles.<locals>.<lambda>)r¼  rè   r3   rÁ   rr   r±   )rˆ   rk   rq   r*   )rè   )r#   r   ÚsortedrN   ÚmarkersrÌ  r  r:  r}   r]   rb   rw   )r(   r   r�  r-   rk   r    r    r!   Útest_marker_styles<  s    
ÿ
. 
 ÿrž  zrc_markerfill.pngc                  C   sR   t  ¡ \} }t d¡}tdddgƒD ](\}\}}|tjd< |j|| |d� q$d S )Nr¹  )r8   rc  )rH   r†   )rè   r�  zmarkers.fillstyler¤  )r#   r   r]   rb   r:  rN   r¬   r}   )r(   r   r,   Úidxr‘   rk   r    r    r!   Útest_markers_fillstyle_rcparamsL  s    
ÿ
r   zvertex_markers.pngc                  C   sv   t tdƒƒ} d}ddddg}t ¡ \}}|j| d|dd	� |j| d d d
… d|dd	� | d
dg¡ | d
dg¡ d S )Nrr   )©rp   rp   r¾  rÇ  r¿  r¡  r¾  rÇ  r¿  r±   rD  rw  rp   r—  )r…  r­   r#   r   r}   rn  ro  )r[  Zmarker_as_tupleZmarker_as_listr(   r   r    r    r!   Útest_vertex_markersV  s    r¢  Zvline_hline_zorderZerrorbar_zorderÚx86_64c                  C   s  t tdƒƒ} t ¡ }| ¡ }|j| ddd� |jddddd� |jddddd� |jdd	ddd� |jd
dddd� | d¡ t ¡ }| ¡ }t tdƒƒ} t	 
d¡}t tdƒƒ}|j| ||dddd� tdƒD ]*}|j|dd|d� |j| dd|d� qÎ| d¡ d S )Nrr   rÁ   )rû   rx  r2   r–  )r¥   rû   rx  r¦   r¹  rÎ  r3   rD  r‰   zaxvline and axhline zorder testr¨  )r¯  rx  rû   r¥   )rû   r¥   rx  zerrorbar zorder test)r…  r­   r#   r®   r  r}   rd   Úaxvliner/   r]   r¥  r«  )r,   r(   r   r-   r¯  rP  r    r    r!   Útest_eb_line_zorderb  s&    

r¥  c                 C   s„   |   ¡ }|jddd� | ddgddgd¡ |jddd	d
� |  ¡ }|jddd� | ddgddgd¡ |jddgddgd	d
� d S )N)rÄ   rr   )rX  r2   rÃ  rÆ   rå  z.-)r2   rX  )rr   rU  rD  rN  r2   rr   rX  rU  )r   r~   rJ  Úaxliner   r    r    r!   Útest_axline_loglog€  s    r§  c                 C   sô   |   ¡ }|jddd� | dd¡ |jdddd� |jdd	d
d� |jdddd� |jdddd� |jdtdƒdd� |  ¡ }|jddd� | ddgddg¡ |jddd� |jdd
d� |jddd� |jddgddgdd� |jddd� d S )Nr¿  rÃ  r�  rÇ  rT  rK  r©  )r   rž   ©r2   rž   rL  )gffffffæ¿rN  r   r)  )Úsloper¥   )r2   rN  rN  ZC4)rN  r2   Úinfr  rp   r2   rž   )r   r~   r¦  rI  r}   rd   r¤  r   r    r    r!   Útest_axline�  s     r«  c                 C   sÚ   |   ¡ }|jddd� |jdd|jd� |jddd|jd� |jd	d
d|jd� |jddd|jd� |  ¡ }|jddd� | ddgddg¡ |jd
dgdd
gdd� |jddgd
d
gdd� |jd
d
gddgdd� d S )Nr¿  rÃ  r�  r2   ©r©  rê   r¨  rK  ©r©  r¥   rê   ©rž   rž   r   rL  )rž   r   )rž   r2   r)  )r¥   rê   rp   r©  )r   r~   r¦  rõ   r}   r   r    r    r!   Útest_axline_transaxes¤  s    r¯  c                 C   sÔ   |   ¡ }|jddd� |jdd|jd� |jddd|jd	� |jdd
d|jd	� |jddd� |  dd¡ |  ¡ }|jddd� | dd¡ | d
dgd
dg¡ |jd
dgd
dgdd� |jd
dgddgdd� d S )Nr¿  rÃ  r�  r2   r¬  r®  r3   rK  r­  r   rL  )r   rÁ   rI  r‰   rÁ   rr   r©  )r   r~   r¦  rõ   Úset_size_inchesr}   r   r    r    r!   Útest_axline_transaxes_panzoomµ  s    r±  c               	   C   sð   t  ¡ \} }t t¡� | d¡ W 5 Q R X t t¡� |jdddd� W 5 Q R X | d¡ t t¡� |jddd� W 5 Q R X | d¡ | d¡ t t¡� |jddd� W 5 Q R X | d¡ t t¡� | dd¡ t  	¡  W 5 Q R X dS )z3Exactly one of *xy2* and *slope* must be specified.r�  rÇ  r2   )r©  rå   rS  N)
r#   r   rŠ   r‹   rŒ   r¦  rT  r  r*  rØ   r'   r    r    r!   Útest_axline_argsÉ  s     



r²  Zvlines_basicZvlines_with_nanZvlines_maskedc                  C   sÚ  dddddg} dddddg}t  ¡ \}}|j| d|d	dd
� ddddddg}ddddtjdg}t jddd�\}\}}}	|j|d|d	dd
� ddddddg}
tjdddddg}|j|
d|dddd� ddddddg}tjddddtjg}|	j|d|ddd
� ||||	fD ]}| dd¡ �q| ¡ | ¡ k�s0t‚| ¡ | ¡ k�sFt‚| ¡ |	 ¡ k�s\t‚t  ¡ \}}tj 	ddddddgd¡}tj 	ddddddgd¡}tj 	ddddddgd¡}|j|||ddd
� | dd¡ d S ©Nr3   r‰   rç   rÁ   r¹  iúÿÿÿrË  r   rõ  ©r~  rí   rQ  )rç   rË  )r|  rÎ  r¨  r¦  )r~  rí   rˆ   rD  rr   rg  r2   rp   rÆ  r—  rÈ   rw  é   rJ  )
r#   r   rc   r]   r  rn  r€   r&   r   Úmasked_equal)r9  r=  r>  rÕ   r  r  r?  rÜ   rÝ   r¡  Úx3rJ  Úx4Úy4r   Úfig3Úax5Zx5Zymin5Zymax5r    r    r!   Útest_vlinesÝ  s2    r¼  c               	   C   sN   t  ¡ \} }t ddi¡�* | ddd¡}tj | ¡ d¡s@t‚W 5 Q R X d S ©Nzlines.colorr–  rž   r   r2   )	r#   r   r�   r
   rc   r~  r  r  r&   ©r(   r   r¦  r    r    r!   Útest_vlines_default  s    r¿  Zhlines_basicZhlines_with_nanZhlines_maskedc                  C   sÚ  dddddg} dddddg}t  ¡ \}}|j| d|d	dd
� ddddddg}ddddtjdg}t jddd�\}\}}}	|j|d|d	dd
� ddddddg}
tjdddddg}|j|
d|dddd� ddddddg}tjddddtjg}|	j|d|ddd
� ||||	fD ]}| dd¡ �q| ¡ | ¡ k�s0t‚| ¡ | ¡ k�sFt‚| ¡ |	 ¡ k�s\t‚t  ¡ \}}tj 	ddddddgd¡}tj 	ddddddgd¡}tj 	ddddddgd¡}|j|||ddd
� | dd¡ d S r³  )
r#   r   Úhlinesr]   r  ro  r   r&   r   r¶  )r=  r9  r>  rÕ   r  r  r?  rÜ   rÝ   r¡  rJ  r·  r¹  r¸  r   rº  r»  Zy5Zxmin5Zxmax5r    r    r!   Útest_hlines  s2    rÁ  c               	   C   sN   t  ¡ \} }t ddi¡�* | ddd¡}tj | ¡ d¡s@t‚W 5 Q R X d S r½  )	r#   r   r�   r
   rÀ  r~  r  r  r&   r¾  r    r    r!   Útest_hlines_default4  s    rÂ  rÁ   rç   c                 C   s¢   dddddg}|   ddd¡j|dd|d	d
� |   ddd¡j|dd|d	d
� dddd	g}ddddg}|  ddd¡j|dd|d	d
� |  ddd¡j|dd|d	d
� d S )Nr–  r¦   r¤   rX  rL  r3   r2   r   rÁ   r´  r‰   )r”   rc   rÀ  )r   r   r[  Ztest_colorsZ	expect_xyZexpect_colorr    r    r!   Útest_lines_with_colors;  s&     ÿ ÿ ÿ ÿrÃ  Zstep_linestylec               	   C   sV  t  d¡ } }t dd¡\}}| ¡ }ddddg}t||ƒD ]h\}}|j| |d|dd	� |j| |d
 d|dd	� |j| |d d|dd	� | ddg¡ | ddg¡ q<| ||d
 |d dœ}t dd¡\}}| ¡ }ddddg}t||ƒD ]f\}}|jddd|d|d� |jddd|d|d� |jddd|d|d� | ddg¡ | ddg¡ qêd S )Nrr   r3   r¥  r¦  r¦  rt  rÁ   Úpre)rû   rˆ   r?  r2   rn  r¯  rp   r¹  )rÓ  ÚY0ÚY1ÚY2rÓ  rÅ  )rû   rˆ   r?  r[  rÆ  rÇ  )	r]   rb   r#   r   r§  rm  rk  rn  ro  )r,   r-   r(   Úax_lstZ	ln_stylesr   râ  r[  r    r    r!   Útest_step_linestyleM  s(    rÉ  Zmixed_collectionc                  C   sä   t  ¡ \} }tjddddd�}tjj|gdd�}| ddgd	d	gg¡ | d
dg¡ tjj|gdd�}| ddgddgg¡ | d
dg¡ | 	ddddgddddgg¡ |j
 d¡ | |¡ | |¡ | dd¡ | dd¡ d S )N)rË  rË  rç   rè   r¦   ©Úradiusrë   rì   T)Zmatch_originalr   rK  r2   rÁ   r™  iàÿÿÿiðÿÿÿrÄ   r£   rž   rí  rw  )r#   r   r|  ÚCircler�   r!  ZPatchCollectionZset_offsetsZset_linewidthsZset_edgecolorsrÚ   rÕ  r0  rn  ro  )r(   r   r6   rˆ  r‰  r    r    r!   Útest_mixed_collectionk  s    

rÍ  c                  C   s:   t  t d¡t d¡d¡} |  ¡  |  ¡  ¡ dks6t‚d S )NrÁ   r2   )rÁ   r2   r   r   )	r#   r  r]   Zint32Zint64rÓ   Zget_subplotspecZget_geometryr&   r  r    r    r!   Útest_subplot_key_hash…  s    rÎ  zspecgram_freqs.pngzspecgram_freqs_linear.pngzspecgram_noise.pngzspecgram_noise_linear.pngçìQ¸…ë±?)r9  râ   r‘   c                  C   sŠ  dt jd< d} d}|d |d |d g|d |d	 |d
 gg}td| t |¡ ƒ}t d| d| ¡}t t dtj tj	 
||¡ ¡jdd�¡}td| d ƒ}tj d¡ t tj | ¡tj | ¡g¡}dddg}||f||ffD ]ž\}	}
|
d }tdt t |
¡¡ ƒ}tt ¡  d¡|ƒD ] \}}|j|	|
||||d� �q"tt ¡  d¡|ƒD ]*\}}|j|	|
||||dt j ¡ d� �qXqædS )z)Test axes.specgram in default (psd) mode.rm   r  rä  r“  rç   rÁ   rL  çÍÌÌÌÌÌ@çffffff@çÍÌÌÌÌÌ'@rr   r   r2   r3   r‘  r?  ÚonesidedÚtwosidedr‰   )ÚNFFTÚFsÚnoverlapÚpad_toÚsidesrS  )rÕ  rÖ  r×  rØ  rÙ  rä   r)  N)rN   r¬   Úintr]   rk  rb   rh  rÏ   rÐ   ÚmultiplyÚouterrû  r^   r_   rù  r“   ÚceilÚlog2rm  r#   r®   r   Úspecgramr~  ÚLogNorm)rü  rÖ  ÚfstimsÚ
NFFT_freqsr,   Úy_freqsÚ
NFFT_noiseÚy_noiseÚ	all_sidesr-   rÕ  r×  rØ  r   rÙ  r    r    r!   Útest_specgram‹  s8    
,$ÿ
 ÿ
  þrç  zspecgram_magnitude_freqs.pngz#specgram_magnitude_freqs_linear.pngzspecgram_magnitude_noise.pngz#specgram_magnitude_noise_linear.pngc                  C   s¢  dt jd< d} d}|d |d |d g|d |d	 |d
 gg}td| t |¡ ƒ}t d| d| ¡}t dtj tj 	||¡ ¡j
dd�}d|dd…df< t |¡}td| d ƒ}tj d¡ t tj | ¡tj | ¡g¡}dddg}	||f||ffD ]¢\}}
|
d }tdt t |
¡¡ ƒ}tt ¡  d¡|	ƒD ]"\}}|j||
||||dd� �q6tt ¡  d¡|	ƒD ],\}}|j||
||||ddt j ¡ d�	 �qnqúdS )z%Test axes.specgram in magnitude mode.rm   r  rä  r“  rç   rÁ   rL  rÐ  rÑ  rÒ  rÇ   r   r2   r3   r‘  Nrp   rr   r?  rÓ  rÔ  r‰   Z	magnitude©rÕ  rÖ  r×  rØ  rÙ  rZ   rS  )rÕ  rÖ  r×  rØ  rÙ  rZ   rä   r)  )rN   r¬   rÚ  r]   rk  rb   rÏ   rÐ   rÛ  rÜ  rû  rš  r^   r_   rh  rù  r“   rÝ  rÞ  rm  r#   r®   r   rß  r~  rà  )rü  rÖ  rá  râ  r,   r-   rã  rä  rå  ræ  rÕ  r×  rØ  r   rÙ  r    r    r!   Útest_specgram_magnitude¯  s<    
,&

  ÿ
   þré  zspecgram_angle_freqs.pngzspecgram_phase_freqs.pngzspecgram_angle_noise.pngzspecgram_phase_noise.pngc                  C   sœ  dt jd< d} d}|d |d |d g|d |d	 |d
 gg}td| t |¡ ƒ}t d| d| ¡}t dtj tj 	||¡ ¡j
dd�}d|dd…df< t |¡}td| d ƒ}tj d¡ t tj | ¡tj | ¡g¡}dddg}	||f||ffD ]œ\}}
|
d }tdt t |
¡¡ ƒ}dD ]n}tt ¡  d¡|	ƒD ]R\}}|j||
|||||d� t t¡�  |j||
|||||dd� W 5 Q R X �q>�q&qúdS )z,Test axes.specgram in angle and phase modes.rm   r  rä  r“  rç   rÁ   rL  rÐ  rÑ  rÒ  rr   r   r2   r3   r‘  Nrp   r?  rÓ  rÔ  )rÃ  Zphaser‰   rè  ÚdB)rÕ  rÖ  r×  rØ  rÙ  rZ   rä   )rN   r¬   rÚ  r]   rk  rb   rÏ   rÐ   rÛ  rÜ  rû  rš  r^   r_   rh  rù  r“   rÝ  rÞ  rm  r#   r®   r   rß  rŠ   r‹   r*  )rü  rÖ  rá  râ  r,   r-   rã  rä  rå  ræ  rÕ  r×  rØ  rZ   r   rÙ  r    r    r!   Útest_specgram_angleÔ  s<    
,&

  ÿ  þrë  c                  C   sF   t jt d¡ddd�\} }}}| ¡ \}}}}|dkr>|dksBt‚dS )z;Test axes.specgram when Fs is None, should not throw error.rð  NrS  )rÖ  rä   rh   é`   )r#   rß  r]   rw   Z
get_extentr&   )ÚspecÚfreqsrb  rH  r[   r\   Zfreq0Zfreq1r    r    r!   Útest_specgram_fs_noneú  s    rï  c                 C   sH   t  d¡}t  |¡}dtjd< | ¡  |¡ dtjd< |  ¡  |¡ dS )zCTest specgram ignores image.origin rcParam and uses origin 'upper'.r€  Úupperzimage.originrj   N)r]   rb   rÏ   r#   r¬   r   rß  )r   r   rb  Úsignalr    r    r!   Útest_specgram_origin_rcparam  s    



rò  c               	   C   s<   t  d¡} t  | ¡}t t¡� tj|dd� W 5 Q R X dS )z4Ensure passing origin as a kwarg raises a TypeError.r€  rj   rM  N)r]   rb   rÏ   rŠ   r‹   rŒ   r#   rß  )rb  rñ  r    r    r!   Útest_specgram_origin_kwarg  s    

ró  zpsd_freqs.pngzcsd_freqs.pngzpsd_noise.pngzcsd_noise.pnggü©ñÒMb`?c               	   C   sâ  d} d}|d |d |d g|d |d |d gg}t d	| t |¡ ƒ}t d
| d| ¡}t dtj tj ||¡ ¡jdd�}t d	| d ƒ}tj	 
d
¡ tj	 | ¡tj	 | ¡g}ddidddœdddœg}||f||ffD ]ü\}	}
|
d }t dt t |
¡¡ ƒ}tt ¡  d¡|ƒD ]X\}}|jt |	¡f|
|||dœ|—Ž}t|ƒd| dd¡ k�sdt‚|jddd� �qtt ¡  d¡|ƒD ]P\}}|j|	|
|||dœ|—Ž}t|ƒd| dd¡ k�sÊt‚|jddd� �qŠqàd S )Nr”  ç      Y@rç   rÁ   rL  rÐ  rÑ  rÒ  rä  r   r2   r3   r‘  rÙ  r?  rÓ  F)rÙ  Úreturn_linerÔ  Tr‰   )rÕ  rÖ  r×  rØ  rõ  r±   ©ÚxlabelZylabel)rÚ  r]   rk  rb   rÏ   rÐ   rÛ  rÜ  rû  r^   r_   rù  r“   rÝ  rÞ  rm  r#   r®   r   Úpsdrh  r  r[  r&   r~   Úcsd)rü  rÖ  rá  râ  r,   Zys_freqsrä  Zys_noiseZ
all_kwargsr(  rÕ  r×  rØ  r   rq  Úretr    r    r!   Útest_psd_csd  sD    ,&þ ÿÿ
 ÿÿrû  z#magnitude_spectrum_freqs_linear.pngzmagnitude_spectrum_freqs_dB.pngzangle_spectrum_freqs.pngzphase_spectrum_freqs.pngz#magnitude_spectrum_noise_linear.pngzmagnitude_spectrum_noise_dB.pngzangle_spectrum_noise.pngzphase_spectrum_noise.pngc                  C   s  d} d}|d |d |d g}t d| t|ƒ ƒ}t dt t |¡¡ ƒ}t d| d	| ¡}t dtj t ||¡ ¡d
t d¡  j	d	d�}tj
 d¡ t tj
 | ¡tj
 | ¡g¡d }dddg}||dœ}	||fD �]0}
tt ¡  d¡|ƒD ]2\}}|j|
fd|i|	—Ž\}}}|jddd� qòtt ¡  d¡|ƒD ]:\}}|j|
fd|i|	ddi—Ž\}}}|jddd� �q:tt ¡  d¡|ƒD ]4\}}|j|
fd|i|	—Ž\}}}|jddd� �qŠtt ¡  d¡|ƒD ]4\}}|j|
fd|i|	—Ž\}}}|jddd� �qÔqØd S )Nr”  rô  rç   rÁ   rL  rä  r3   r   r2   rr   r‰   r‘  rž   r?  rÓ  rÔ  )rÖ  rØ  rÙ  r±   rö  rä   rê  )rÚ  rk  r]   rÝ  rÞ  rb   rÏ   rÐ   rÜ  rû  r^   r_   rš  rù  r“   rm  r#   r®   r   Zmagnitude_spectrumr~   Zangle_spectrumZphase_spectrum)rü  rÖ  Zfstims1rÕ  rØ  r,   rã  rå  ræ  rq  r-   r   rÙ  rí  rî  rd  r    r    r!   Útest_spectrum>  s8    *ÿ"

ÿrü  c               	   C   sr   t  ¡  d¡} | D ]}|jjdd� qtjdd��6 | d  t d¡¡ | d  	t d¡t d¡¡ W 5 Q R X d S )	Nr3   T)r}  r
  r  r   rÁ   r2   )
r#   r®   r   rT   r~   r]   r  rø  r¥  rù  ©r<  r   r    r    r!   Útest_psd_csd_edge_casesh  s    rþ  c                 C   sH   |   ¡ }| ¡ }| ¡ }| ¡  | ¡  |  ¡ }|j ¡  |j ¡  d S r×   )r”   rÓ   rÒ   r  rQ   Ztick_bottomrT   Z	tick_left)r   r   re   Zax_twinxZax_twinyrf   r    r    r!   Útest_twin_remover  s    
rÿ  ztwin_spines.pngc            	      C   sˆ  dd„ } t jdd�}|jdd� | ¡ }| ¡ }| ¡ }|jj d¡ | |ƒ |jj d¡ | 	d	d
dgd	d
dgd¡\}| 	d	d
dgd	ddgd¡\}| 	d	d
dgdddgd¡\}| 
d	d¡ | d	d¡ | d	d¡ | d
d¡ |jj | ¡ ¡ |jj | ¡ ¡ |jj | ¡ ¡ tddd�}|jf d| ¡ dœ|—Ž |jf d| ¡ dœ|—Ž |jf d| ¡ dœ|—Ž |jf ddi|—Ž d S )Nc                 S   s.   |   d¡ | j d¡ | jd d …  d¡ d S )NTF)Zset_frame_onrÚ   r   Úspinesr  r    r    r!   Úmake_patch_spines_invisible„  s    
z5test_twin_spines.<locals>.make_patch_spines_invisible)rç   r‰   rC  r_  )r<   )r  r;  Tr   r2   r3   zb-r‰   zr-rW  r–   rÈ   zg-rç   éA   r�   )rv  rh  r-   )rA  r~  rA  r,   )r#   r®   r”  r”   rÓ   r   r<   Úset_positionr   r}   rn  ro  rT   r*   rÕ  r  rÑ  Útick_params)	r  r(   ÚhostZpar1Zpar2rˆ  r‰  Zp3Ztkwr    r    r!   Útest_twin_spines�  s0    r  ztwin_spines_on_top.pngc                  C   sH  dt jd< dt jd< t ¡ } |  ddd¡}t ddddgd	d
ddgg¡}| ¡ }|j|d |d d dd� |j	|d |d d ddd� |j|d |d d dd� |j	|d |d d ddd� |d |d d dœ}t ¡ } |  ddd¡}| ¡ }|jddd|d� |j	dddd|d� |jddd|d� |j	dddd|d� d S )Ng      H@ré   r*  r2   rä  iL  i°  iâ  rk  i-  r¹  rï  r   g     @�@z#BEAED4r©  rx  )r¥   rÙ  z#7FC97Frž   )r÷   rP  r÷   rP  )r¥   r[  )r¥   rÙ  r[  )
rN   r¬   r#   r®   r”   r]   rþ   rÓ   r}   r  )r(   rÕ   r[  rÜ   r    r    r!   Útest_twin_spines_on_top®  s(    


ÿr  z(grid_which, major_visible, minor_visible)rv   TT)ÚmajorTF)r®  FTc                    sh   t j d| dœ¡ t ¡ \}}|j ¡  t‡ fdd„|jj	D ƒƒsFt
‚t‡fdd„|jjD ƒƒsdt
‚d S )NT)r´  zaxes.grid.whichc                 3   s   | ]}|j  ¡ ˆ kV  qd S r×   ©ÚgridlinerÙ   ©r™   Útick)Úmajor_visibler    r!   r‚  Ö  s   ÿz*test_rcparam_grid_minor.<locals>.<genexpr>c                 3   s   | ]}|j  ¡ ˆ kV  qd S r×   r	  r  )Úminor_visibler    r!   r‚  Ø  s   ÿ)r�   r¬   rñ  r#   r   rF  rØ   rƒ  rQ   Ú
majorTicksr&   Ú
minorTicks)Z
grid_whichr  r  r(   r   r    )r  r  r!   Útest_rcparam_grid_minorÍ  s    
ÿÿr  c                  C   s¸   t  ¡ \} }| ¡  | j ¡  |jjd j ¡ s4t	‚|jdd� | j ¡  |jjd j ¡ r`t	‚|jdd� | j ¡  |jjd j ¡ sŒt	‚| ¡  | j ¡  |jjd j ¡ r´t	‚d S )Nr   F©ÚvisibleT)
r#   r   rÒ  rF  rØ   rQ   r  r
  rÙ   r&   r'   r    r    r!   Ú	test_gridÜ  s    



r  c               	   C   s    t  ¡ \} }|jdddd� |jjd j ¡ r2t‚|jdd� |jjd j ¡ sTt‚t  	ddi¡�4 | 
¡  |jdddd� |jjd j ¡ s’t‚W 5 Q R X d S )	NTr  rr   )Úresetr°  Ú	labelsizer   r–  r©  r´  )r#   r   r  rQ   r  r
  rÙ   r&   rÒ  r
   r)  r'   r    r    r!   Útest_reset_gridì  s    r  c                 C   sn   || fD ]@}|  ¡ }| d¡ |jdddddddd	d
dddd� | ¡  q| jD ]}|j ¡  |j ¡  qPd S )NTÚinrr   rÁ   r  rg  r—  rK  rº  rL  rx  r‰   r¦  )Ú	directionÚlengthrh  r¥   Úpadr  Ú
labelcolorÚlabelrotationÚ
grid_colorÚ
grid_alphaÚgrid_linewidthÚgrid_linestyle)r”   rÒ  r  Údraw_without_renderingr  rQ   Zreset_ticksrT   )r   r   r(   r   r    r    r!   Útest_reset_ticksù  s*    
        ü


r#  c                  C   s>   t  ¡ } |  ¡ }| d¡ | ddddg¡ t| ¡ dƒ d S )Nrž   r[  r   rÅ   rÄ   )r[  rÅ   )r#   r®   r  r¤  r}   r   r€   r'   r    r    r!   Útest_vline_limit  s
    
r$  zfv, fh, args)r2   rÇ  c              	   C   s¸   t j d¡}tjtdd�� | ||ddœŽ W 5 Q R X tjtdd�� | |d|dœŽ W 5 Q R X tjtdd�� |||ddœŽ W 5 Q R X tjtdd�� ||d|dœŽ W 5 Q R X d S )	Nr2   z"ymin must be a single scalar valuer  ©ÚyminÚymaxz"ymax must be a single scalar valuez"xmin must be a single scalar value)r[   r\   z"xmax must be a single scalar value)rN   rR  Znum2daterŠ   r‹   r*  )ZfvÚfhÚargsZbad_limr    r    r!   Útest_axline_minmax  s    r*  c                  C   s†   t jddddd�\} }|d  dddgdddg¡ |d  ¡ \}}|d  ¡ \}}|dks^t‚|dksjt‚|dksvt‚|dks‚t‚d S )	Nr2   r3   T)r|  r}  rH  r
  r   r‰   rç   rQ  )r#   r   r}   r   r€   r&   )r(   r<  r  r9  r  r=  r    r    r!   Útest_empty_shared_subplots%  s    r+  c                  C   s”   dD ]Š} t jddd�\}}|d jd| dd� |d  ¡ dksBt‚|d  ¡ | ksVt‚t jddd�\}}|d jd| d� |d  ¡ d	kst‚qd S )
N©ÚboxÚdatalimr3   T)r|  rH  r   )Ú
adjustableÚsharer2   ©r/  r¢  )r#   r   Ú
set_aspectÚ
get_aspectr&   Zget_adjustable)r/  r(   r<  r    r    r!   Útest_shared_with_aspect_11  s    r4  c                  C   sš   t jdddd�\} }|d jddd� |d  ddgddg¡ |d  ddgddg¡ t  ¡  |d  ¡ |d  ¡ kszt‚|d  ¡ |d  ¡ ks–t‚d S )	Nr3   T)r|  rH  r
  r   )r0  r2   r‰   rç   )r#   r   r2  r}   rØ   r   r&   r€   rq  r    r    r!   Útest_shared_with_aspect_2>  s    r5  c            	      C   s  dD �]} t jddd�\}}|d jd| d� |d jd| d� |d  ddgd	d
g¡ |d  d	d
gddg¡ t  ¡  |d  ¡ |d  ¡ ks”t‚|d  ¡ |d  ¡ ks°t‚|jj	|jj
 }|D ]P}| ¡ }|j	|j
 }|jj	|jj
 }|| | }t|d
ƒt| ¡ d
ƒksÄt‚qÄqd S )Nr,  r3   T)r|  r
  r   r1  r2   rž   r‰   rç   )r#   r   r2  r}   rØ   r   r&   r€   Zbbox_inchesrÆ  rh  Úget_positionÚviewLimr  r3  )	r/  r(   r<  Z
fig_aspectr   rÍ   Ú
box_aspectZ
lim_aspectrE  r    r    r!   Útest_shared_with_aspect_3I  s     
r9  c               	   C   sJ   t jddddd�\} }|d  d¡ tjtdd�� |  ¡  W 5 Q R X d S )	Nr2   r3   T©rH  r
  r   rÄ  zset_aspect\(..., adjustable=r  )r#   r   rA  rŠ   r‹   ÚRuntimeErrorr"  )r(   r  r    r    r!   Útest_shared_aspect_error]  s    r<  zerr, args, kwargs, matchræ   z@axis\(\) takes from 0 to 1 positional arguments but 2 were given)r{  z4Unrecognized string 'foo' to axis; try 'on' or 'off'zthe first argument to axis*r{  z1axis\(\) got an unexpected keyword argument 'foo'c              	   C   s*   t j| |d�� tj||Ž W 5 Q R X d S ©Nr  )rŠ   r‹   r#   rA  )Úerrr)  rq  r  r    r    r!   Útest_axis_errorsd  s    r?  c               	   C   sº  t  ¡ } tjtdd�� |  d¡ W 5 Q R X tjtdd�� |  d¡ W 5 Q R X tjtdd�� | jddd� W 5 Q R X tjtdd�� |  	d¡ W 5 Q R X tjtdd�� | j
d	d
� W 5 Q R X tjtdd�� | jddd	d� W 5 Q R X tjtdd�� | jddd	d� W 5 Q R X tjtdd�� | jdd	d� W 5 Q R X tjtdd�� | jdd	d� W 5 Q R X tjtdd�� | jdd	d� W 5 Q R X tjtdd�� | jdd	d� W 5 Q R X d S )Nzunknown value for which: 'foo'r  r{  z!Cannot supply both positional andr  rÑ  zargument must be amongzscilimits must be a sequencer2   )Z	scilimitszSpecifying 'loc' is disallowedrI   )r:   r,   r8   )r:   r-   zCannot pass both 'left'r   )rI   r[   zCannot pass both 'right')r<   r\   zCannot pass both 'bottom')rH   r&  zCannot pass both 'top')r8   r'  )r#   r  rŠ   r‹   r*  Zget_xaxis_transformZget_yaxis_transformrŒ   Zset_prop_cycleZ
set_anchorZticklabel_formatr$   r%   rn  ro  r  r    r    r!   Útest_axis_method_errorsv  s.    r@  c                 C   sH   t  ¡ \}}t|d | ¡ƒƒ }| d¡ | d¡ t|jj|jjƒ d S )Nztwin{}rÁ   r3   )r#   r   rî   rð  r2  r   ÚbboxÚextents)rß   r(   r   rö   r    r    r!   Útest_twin_with_aspect�  s    

ÿrC  c                  C   sÞ   d} d}d}d}t j ¡ }| ¡ }| | |¡ | ¡ | ks>t‚| ¡ |ksNt‚| ||¡\}| ¡ |kslt‚| ¡ |ks|t‚| d¡ | ¡ |ks–t‚| ¡ |ks¦t‚|j	dd� | 
¡  | ¡ | ksÊt‚| ¡ |ksÚt‚d S )N)rS  r“  )ç      $ÀrY  )rD  rø  FT)Zvisible_only)rN   r®   r   r”   r}   r   r&   r€   r   Zrelimr¯   )r9  r=  r  r  r(   r   rd  r    r    r!   Útest_relim_visible_only›  s&    

rE  c                  C   s,   t  ¡ } |  ¡ }|jdd� |jdd� dS )z
    tests for issue #1172
    Zlarge)r  Úout©r  N)r#   r®   r  r  r'   r    r    r!   Útest_text_labelsize´  s    rH  zpie_default.pngc               	   C   sL   d} ddddg}dddd	g}d
}t jdd�\}}|j||| |dddd� d S )N©ÚFrogsZHogsÚDogsÚLogsrÈ   r–   rº  rr   ÚyellowgreenÚgoldÚlightskyblueÚ
lightcoral©r   rÄ   r   r   )rË  rQ  rC  ú%1.1f%%Tr˜  )Úexplodero  r~  ÚautopctÚshadowÚ
startangle)r#   r   Úpie)ro  Úsizesr~  rS  r>  rÕ   r    r    r!   Útest_pie_default¾  s      ÿrY  Zpie_linewidth_0)r   r‘   c                  C   sÆ   d} ddddg}dddd	g}d
}t j||| |dddddid� t  d¡ | |||dœ}t  ¡ }| ¡ }|jdddddddddi|d�	 | d¡ t  ¡  t jdddddddddi|d�	 t  d¡ d S )NrI  rÈ   r–   rº  rr   rM  rN  rO  rP  rQ  rR  Tr˜  rí   r   ©rS  ro  r~  rT  rU  rV  Ú
wedgepropsrÄ  )Úlrc  r6   Úexrc  r]  r\  r6   )rS  ro  r~  rT  rU  rV  r[  r[  )r#   rW  rA  r®   r  )ro  rX  r~  rS  r[  r(   r   r    r    r!   Útest_pie_linewidth_0Ê  s>      þ
   þ
   þr^  zpie_center_radius.pngc                  C   st   d} ddddg}dddd	g}d
}t j||| |dddddiddd�
 t jdddtddd�tddd�d� t  d¡ d S )NrI  rÈ   r–   rº  rr   rM  rN  rO  rP  rQ  rR  Tr˜  rí   r   ræ   r�   )	rS  ro  r~  rT  rU  rV  r[  rP   rË  zCenter point)r2   r  ú->Zarc3)Ú
arrowstyleZconnectionstyleÚsquareZ	lightgrey)Zboxstylerë   )r]  r_  r~  rA  rÄ  )r#   rW  ra  rÑ  rA  ©ro  rX  r~  rS  r    r    r!   Útest_pie_center_radiusë  s&        þ
ÿ
ýrc  zpie_linewidth_2.pngc               
   C   sL   d} ddddg}dddd	g}d
}t j||| |dddddid� t  d¡ d S )NrI  rÈ   r–   rº  rr   rM  rN  rO  rP  rQ  rR  Tr˜  rí   r3   rZ  rÄ  ©r#   rW  rA  rb  r    r    r!   Útest_pie_linewidth_2ÿ  s      þre  zpie_ccw_true.pngc               
   C   sH   d} ddddg}dddd	g}d
}t j||| |ddddd� t  d¡ d S )NrI  rÈ   r–   rº  rr   rM  rN  rO  rP  rQ  rR  Tr˜  )rS  ro  r~  rT  rU  rV  ZcounterclockrÄ  rd  rb  r    r    r!   Útest_pie_ccw_true  s      þrf  zpie_frame_grid.pngc                  C   s¨   d} ddddg}dddd	g}d
}t j||| |dddddiddd�
 t j|d d d… || |dddddiddd�
 t j||d d d… | |dddddiddd�
 t  d¡ d S )NrI  rÈ   r–   rº  rr   rM  rN  rO  rP  rQ  rR  Tr˜  rí   r   rÈ  )	rS  ro  r~  rT  rU  rV  r[  ÚframerP   rp   )rÁ   r3   )r‰   rÁ   rÄ  rd  rb  r    r    r!   Útest_pie_frame_grid  s:       ý   ý   ýrh  zpie_rotatelabels_true.pngc               
   C   sH   d} ddddg}dddd	g}d
}t j||| |ddddd� t  d¡ d S )N)ZHogwartsrJ  rK  rL  rÈ   r–   rº  rr   rM  rN  rO  rP  rQ  rR  Tr˜  )rS  ro  r~  rT  rU  rV  ÚrotatelabelsrÄ  rd  rb  r    r    r!   Útest_pie_rotatelabels_true8  s      þrj  zpie_no_label.pngc                  C   s^   d} ddddg}dddd	g}d
}t j||| |dddd dd�	 t  d¡ t  dd¡ t  ¡  d S )NrI  rÈ   r–   rº  rr   rM  rN  rO  rP  rQ  rR  Tr˜  )rS  ro  r~  rT  rU  rV  Zlabeldistanceri  rÄ  g333333ó¿r;  )r#   rW  rA  ru   rB   rb  r    r    r!   Útest_pie_nolabel_but_legendG  s       þ
rk  c                  C   sØ   dddg} dddg}t ddd	d
ddd�}t ¡ j| |d|d�\}}}||fD ]†}|D ]|}| ¡ |d kslt‚| ¡ |d ks€t‚| ¡ |d ks”t‚| ¡ |d ks¨t‚| 	¡ |d ks¼t‚| 
¡ |d ksTt‚qTqLd S )Nrl  é"   rº  zLong name 1zLong name 2zLong name 3rP   r8   r˜  Úanchorrg  r–  )ÚhorizontalalignmentÚverticalalignmentrÑ  Úrotation_moderv  r¥   ú%.2f)ro  rT  Ú	textpropsrn  ro  rÑ  rp  rv  r¥   )rÑ  r#   r  rW  Úget_har&   Úget_vaÚget_rotationZget_rotation_modeÚget_sizer  )r[  ro  rr  rv  ÚtextsrT  Ztxr    r    r!   Útest_pie_textpropsU  s(    

 üÿrx  c               	   C   s@   t  ¡ \} }t t¡�  |jdddgdddgd� W 5 Q R X d S )NrÁ   rW  r   rÄ   rÅ   )rS  )r#   r   rŠ   r‹   r*  rW  r'   r    r    r!   Útest_pie_get_negative_valuesk  s    ry  c                  C   sr   t  ¡ \} }dddg}|j|dd�}t|d d jd ƒdk sBt‚|j|d	d�}t|d d jd ƒdksnt‚d S )
NrÆ   rÄ   T)r,   Ú	normalizer   rp   g     €v@rX  F)r#   r   rW  r±  r½  r&   )r(   r   r,   Út1Út2r    r    r!   Útest_normalize_kwarg_pier  s    
r}  c                    sH   dddg}d‰ |   ¡ j|ˆ d� |  ¡  |¡\}}‡ fdd„|D ƒ d S )NrÆ   rÄ   rÕ  rX  c                    s   g | ]}|  ˆ ¡‘qS r    ©Z	set_hatch)r™   rg  rX  r    r!   rœ   �  s     z)test_pie_hatch_single.<locals>.<listcomp>)r   rW  )r   r   r,   Úwedgesrv  r    rX  r!   Útest_pie_hatch_single{  s
    
r€  c                 C   sP   dddg}dddg}|   ¡ j||d� |  ¡  |¡\}}dd„ t||ƒD ƒ d S )	NrÆ   rÄ   r>  rÕ  ri   rX  c                 S   s   g | ]\}}|  |¡‘qS r    r~  )r™   rg  Úhpr    r    r!   rœ   Š  s     z(test_pie_hatch_multi.<locals>.<listcomp>)r   rW  rm  )r   r   r,   r@  r  rv  r    r    r!   Útest_pie_hatch_multi„  s
    

r‚  zset_get_ticklabels.pngc                  C   s"  t  d¡\} }ddg}|d  t d¡¡ |d  |d ¡ |d  t d¡¡ |d  |d ¡ |d  tdƒ¡ |d  tdƒ¡ |d  	ddd	d
gddg  ¡ |d  
ddddgddg  ¡ |d  |d  ¡ ¡ |d  |d  ¡ ¡ |d  	|d  ¡ ¡ |d  
|d  ¡ ¡ d S )Nr3   r`   zset_x/yticklabelsr   rr   r2   r‚   r—  r6   rŒ  rQ  r±   Z11Z12Z13Z14)r#   r   r}   r]   rb   r/   Ú
set_xticksr­   Ú
set_yticksÚset_xticklabelsÚset_yticklabelsrì  Ú
get_yticksr˜  Úget_yticklabels)r(   r   r?   r    r    r!   Útest_set_get_ticklabels�  s      r‰  c               	   C   s@   t  ¡ \} }dddg}t t¡� |jj|dd� W 5 Q R X dS )z]
    When labels=None and any kwarg is passed, axis.set_ticks() raises a
    ValueError.
    r2   r3   r‰   rž   r»  N)r#   r   rŠ   r‹   r*  rQ   Ú	set_ticks)r(   r   Úticksr    r    r!   Ú0test_set_ticks_kwargs_raise_error_without_labels§  s    
rŒ  c                 C   s¸   |  ¡ }| ddddg¡ |jddddgd	d
� | dddg¡ |jddgdd� |jddgdd� |   ¡ }|jddddgddddgd	d
� | dddg¡ |jddgddgdd� dS )z˜
    Test that these two are identical::

        set_xticks(ticks); set_xticklabels(labels, **kwargs)
        set_xticks(ticks, labels, **kwargs)

    r2   r3   rç   rQ  r‚   r—  r6   rŒ  Úbold)Z
fontweightr‰   rÁ   T)r®  r^  r_  N)r   rƒ  r…  r„  r†  r   r    r    r!   Útest_set_ticks_with_labels²  s    	 rŽ  c               	   C   s
  t  ¡  ¡ } tjtdd�� |  ddgd¡ W 5 Q R X tjtdd�� t  t	 
d¡ d¡¡ W 5 Q R X tjtdd�� t  t	 
d¡ d	¡¡ W 5 Q R X tjtdd��$ t jt	 
d¡ d¡tdƒd
� W 5 Q R X tjtdd��$ t jt	 
d¡ d	¡tdƒd
� W 5 Q R X d S )Nzmust be a sequencer  r3   rÂ  r  z
must be 1Drç   r¿  r¾  ©ro  )r#   r®   r”   rŠ   r‹   rŒ   rƒ  r*  rÒ  r]   rb   ry   r­   r  r    r    r!   Útest_xticks_bad_argsÈ  s      (r�  c                  C   sŠ   t  ¡ \} }| t d¡¡ |j t d¡d ¡ |jdd� |j dd„ dD ƒ¡ t  	¡  dd„ |j 
¡ D ƒ}|d	d
dddgks†t‚d S )Nrr   rÄ   rÁ   rø  c                 S   s   g | ]}|‘qS r    r    r�  r    r    r!   rœ   Ü  s     z.test_subsampled_ticklabels.<locals>.<listcomp>Z
bcdefghijkc                 S   s   g | ]}|  ¡ ‘qS r    rê  r-  r    r    r!   rœ   Þ  s     r—  rŒ  rÓ  rý  rP  )r#   r   r}   r]   rb   rQ   rŠ  rü  Úset_ticklabelsrØ   Úget_ticklabelsr&   )r(   r   ro  r    r    r!   Útest_subsampled_ticklabelsÖ  s    r“  c               	   C   sX   t  ¡ \} }| t d¡¡ |j ddg¡ t t	¡� |j 
dddg¡ W 5 Q R X d S )Nrr   r�   r  r‚   r—  r6   )r#   r   r}   r]   rb   rQ   rŠ  rŠ   r‹   r*  r‘  r'   r    r    r!   Útest_mismatched_ticklabelsâ  s
    r”  c                  C   s<   t  ¡ \} }| ddgddg¡ | ddg¡ | g ¡ d S )Nr2   r3   )r#   r   r  rƒ  r…  r'   r    r    r!   Útest_empty_ticks_fixed_locê  s    r•  zretain_tick_visibility.pngc                  C   sJ   t  ¡ \} }t  dddgdddg¡ t j| ¡ dd� |jdd	dd
� d S )Nr   r2   r3   rp   rç   Fr  r-   rv   ©rA  r°  r  )r#   r   r}   Zsetprˆ  r  r'   r    r    r!   Útest_retain_tick_visibilityò  s    r—  c                  C   s€   t  ¡ \} }dd„ }|j t  |¡¡ | dddddg¡ | dd	¡ |jj 	¡  d
d„ |j 
¡ D ƒ}|dddddgks|t‚d S )Nc                 S   s   | dkrdS dS )Nr2   ú
unit valuer±   r    r²   r    r    r!   Úformatter_func   s    z.test_tick_label_update.<locals>.formatter_funcrp   r   r2   r3   r‰   rN  r  c                 S   s   g | ]}|  ¡ ‘qS r    rê  r  r    r    r!   rœ   	  s     z*test_tick_label_update.<locals>.<listcomp>r±   r˜  )r#   r   rQ   r·   r¹   rƒ  rn  r®   rF  rØ   r’  r&   )r(   r   r™  Z
tick_textsr    r    r!   Útest_tick_label_updateú  s    rš  zo_marker_path_snap.pngéH   c                  C   s~   t  ¡ \} }| d¡ tddƒD ]$}|jddgt d¡| d|d� q t ddd¡D ]$}|jd	d
gt d¡| d|d� qTd S )NrÄ   r2   rÈ   r3   r†   )rã  rr   rÉ  r‰   rç   )r#   r   r   r­   r}   r]   rw   rÎ   )r(   r   rã  r    r    r!   Útest_o_marker_path_snap  s    
"rœ  c                  C   sà  ddg} d}t | ƒd }t| ƒ}t| ƒ}t dd¡\}}| | ¡ | d¡ | ¡ dks\t‚| ¡ ||| d  ||| d  fksˆt‚| 	¡ ||| d  ||| d  fks´t‚t dd¡\}}| | ¡ | dd¡ | ¡ dksêt‚| ¡ ||| d  ||| d  fk�st‚| 	¡ ||| d  ||| d  fk�sFt‚t dd¡\}	}
|
 | ¡ |
jd	dd
� |
 ¡ dk�s€t‚|
 ¡ ||| d	  ||| d	  fk�s®t‚|
 	¡ ||| d  ||| d  fk�sÜt‚d S )Nr2   rr   rS  r£   rÇ  rž   r3   )rž   r3   çš™™™™™É¿rà   )r�  rž   )
r  rk  rn  r#   r   r}   r   r&   r   r€   )r[  r[   r\   r&  r'  r>  rÕ   r?  rÜ   rº  rÝ   r    r    r!   Útest_margins  sF    

ÿ
ÿ

ÿÿ
ÿÿrž  c                  C   sN   t j d¡ t ¡ \} }| ddgddg¡ |jddd� | ¡ dksJt‚d S )Nr?  r2   r3   rå   r   )rð  Zxmarginræ   )	r�   r‘   r’   r#   r   r}   r~   r   r&   r'   r    r    r!   Útest_set_margin_updates_limits<  s
    rŸ  )rp   z!margin must be greater than -0\.5r¾  rp   r-   z@Cannot pass both positional and keyword arguments for x and/or y)r2   r2   r2   z&Must pass a single positional argumentc              	   C   s:   t j| |d��" t ¡ }| ¡ }|j||Ž W 5 Q R X d S r=  )rŠ   r‹   r#   r®   r”   r   )r>  r)  rq  r  r(   r   r    r    r!   Útest_margins_errorsD  s    r   c                  C   s&   t  ¡ \} }| d¡ | dg¡ d S ©Nr2   )r#   r   ri  r'   r    r    r!   Útest_length_one_histV  s    
r¢  c                  C   s   t  ¡ } |  ¡ }| dd¡ | ¡ dks,t‚| ¡ dks<t‚|jdd� | ¡ dksXt‚| ¡ dksht‚|jdd� | ¡ dks„t‚| ¡ dks”t‚| dd¡ | ¡ dks°t‚| 	¡ dksÀt‚|jdd� | ¡ dksÜt‚| 	¡ dksìt‚|jdd� | ¡ dk�s
t‚| 	¡ dk�st‚d S )	NrÃ   rõ  )rÃ   rõ  rC  )rð  )rÃ   rC  )rj   )rõ  rC  )
r#   r®   r”   r1  Ú
get_xboundr&   r   r2  Ú
get_yboundr€   r'   r    r    r!   Útest_set_xy_bound\  s(    r¥  c                  C   s8   dgd } t  dd¡\}}| | | ¡ | t ¡ ¡ d S )Nrr   rÇ   r2   )r#   r   rè  rô  rò  ró  )Zmylistr(   r   r    r    r!   Útest_pathological_hexbint  s    
r¦  c                  C   s(   t  ¡ \} }|jddgddgd d� d S )Nr2   r3   r©  r·  r'   r    r    r!   Útest_color_None|  s    r§  c                  C   s6   t  ¡ \} }|jddgdd�d }d| ¡ ks2t‚d S )Nr   r2   rê  rN  )r#   r   r}   r  r&   ©r(   r   rd  r    r    r!   Útest_color_alias‚  s    r©  c                  C   s4   t  ¡ \} }|jtdƒgd tdƒd� | ¡  d S )NrÈ   rÁ   rÑ  )r#   r   ri  r­   rB   r'   r    r    r!   Útest_numerical_hist_label‰  s    rª  c                  C   sN   t  ¡ \} }d}d}| d¡d| d¡g}|jtdƒgd |d� | ¡  d S )Ns    å¾ˆæ¼‚äº®, rÃ¶mÃ¤n chÃ¤rÃ¡ctÃ¨rss   ×©×œ×•×�zutf-8zhi aardvarkrÈ   r‰   rÑ  )r#   r   Údecoderi  r­   rB   )r(   r   r‚   r—  ro  r    r    r!   Útest_unicode_hist_label�  s    þr¬  c                  C   sJ  t j d¡d } t ¡ \}}| | ¡ |j ¡  |jj 	¡ }|jj 
¡ dksPt‚|j ¡  |j ¡  |jj 	¡ }|d |d kr�|d |d ks”t‚|jj 
¡ dks¨t‚t ¡ \}}| | ¡ |j ¡  |jj 	¡ }|jj ¡ dksèt‚|j ¡  |j ¡  |jj 	¡ }|d |d k�r,|d |d k�s0t‚|jj ¡ dk�sFt‚d S )	Nrr   gæ^ 9^;rI   r   r2   r<   r8   rH   )r]   r^   r#   r   r}   rF  rØ   rT   Z
offsetTextr6  rS   r&   Z
tick_rightrQ   Zget_verticalalignmentr|   )r[  r(   r   ÚbeforeÚafterr    r    r!   Útest_move_offsetlabel�  s*    



$



(r¯  zrc_spines.pngc               	   C   s0   dddddœ} t  | ¡� t ¡  W 5 Q R X d S )NF)zaxes.spines.leftzaxes.spines.rightzaxes.spines.topzaxes.spines.bottom)rN   r
   r#   r   )r¢  r    r    r!   Útest_rc_spines·  s    ür°  zrc_grid.pngc               
   C   sl   t  ¡ } dddœ}dddœ}dddœ}|||g}t|dƒD ],\}}t |¡� |  dd|¡ W 5 Q R X q:d S )NTrv   )r´  zaxes.grid.axisr,   r-   r2   r‰   )r#   r®   r:  rN   r
   r”   )r(   Zrc_dict0Zrc_dict1Zrc_dict2r§  r÷   r¢  r    r    r!   Útest_rc_gridÂ  s    þþþ
r±  c               	   C   s¼   dddddœ} t j| d��˜ t  ¡ }| ddd¡}|j}|j}|jd rLt‚|jd sZt‚|jd rht‚|jd svt‚|jd s„t‚|jd r’t‚|jd s t‚|jd r®t‚W 5 Q R X d S )NFT)úxtick.bottomú	xtick.topú
ytick.leftúytick.right©r  r2   Útick1OnÚtick2On©	r#   r
   r®   r”   rQ   rT   Ú_major_tick_kwr&   Ú_minor_tick_kw©rŒ  r(   rÕ   ZxaxZyaxr    r    r!   Útest_rc_tickØ  s"     ÿr½  c               	   C   sÄ   dddddddddœ} t j| d��˜ t  ¡ }| ddd¡}|j}|j}|jd rTt‚|jd sbt‚|jd rpt‚|jd s~t‚|jd rŒt‚|jd sšt‚|jd r¨t‚|jd s¶t‚W 5 Q R X d S )NTF)r³  rµ  r²  r´  zxtick.minor.bottomzxtick.major.bottomzytick.major.leftzytick.minor.leftr¶  r2   r·  r¸  r¹  r¼  r    r    r!   Útest_rc_major_minor_tickì  s*       ür¾  c                  C   s¦   t  d¡} t  ddddg¡}t ¡ \}}| | |d¡ | d¡ | ¡ | ¡  }}t  	|¡t  	|¡ksjt
‚| ¡ dkszt
‚t|jd	d
�jdƒ t|jdd
�jdƒ d S )Nrç   r£   rõ  rT  r›  Úmora  r2   T)Úoriginal)ç      À?rÄ   rË  rË  F)g333333Ë?rÄ   g      ê?rË  )r]   rb   rþ   r#   r   r}   rA  r   r€   r©  r&   r3  r   r6  rB  )r,   r-   r(   r   rt   ru   r    r    r!   Útest_square_plot  s     

 ÿ ÿrÂ  c                	   C   s²   t  t¡� t d ¡ W 5 Q R X t  t¡� t d d ¡ W 5 Q R X t  t¡� t t d¡t d¡¡ W 5 Q R X t  t¡�. t t d¡ d¡t d¡ dd¡f¡ W 5 Q R X d S )NrÈ  r}  rÁ   r¾  rp   r2   )	rŠ   r‹   r*  r#   r}   r]   r¥  rb   ry   r    r    r    r!   Útest_bad_plot_args  s    "rÃ  zxy, clsr    ))r‰   r¹  )r3   rQ  rË  rw  )rç   rÁ   rg  )r‰   rç   c                 C   s,   t  ¡ \}}t|j| |fžŽ ƒ|ks(t‚d S r×   )r#   r   r<  Ú
pcolorfastr&   )r]  r[  Úclsr(   r   r    r    r!   Útest_pcolorfast  s    rÆ  c                  C   sª   t jddddd�\} }|d  d¡ |d  d¡ |jD ]$}| ¡ dksLt‚| ¡ dks8t‚q8|d  d¡ |d  d¡ |jD ]$}| ¡ dks”t‚| ¡ dks€t‚q€d S )Nr3   Tr:  r�  rå   rÇ  rS  )r#   r   rT  r  r;  Z
get_yscaler&   Z
get_xscale©r(   r<  r   r    r    r!   Útest_shared_scale0  s    

rÈ  c                	   C   sH   t  t¡� tjdd� W 5 Q R X t  t¡� tjdd� W 5 Q R X d S )NTrG  r	  )rŠ   r‹   rŒ   r#   r  r    r    r    r!   Útest_shared_boolB  s    rÉ  c                   C   s   t  t ddg¡¡ dS )z4Violin plot should handle point mass pdf gracefully.r   N)r#   rÄ  r]   rþ   r    r    r    r!   Útest_violin_point_massI  s    rÊ  c               
   C   sØ   t dt d¡gƒt dt d¡gƒ } t dddddddgdddddgdddddggt d¡t d¡d gƒ}t d|ƒ}t d|ƒ}t dg gƒt dg gƒ t dg d gƒ t dg d gƒ }| | }| | }| | | }||||•S )	Nr,   rÁ   r-   r>  r2   )r3   rÁ   r®  r¯  )r	   r]   rb   rw   )Zbase_xyZ
err_cyclerZxerr_cyZyerr_cyÚemptyZ	xerr_onlyZ	yerr_onlyZboth_errr    r    r!   Úgenerate_errorbar_inputsN  s*    $ÿú

ÿÿrÌ  rq  c                 C   s    t  ¡ }|jf | Ž}| ¡  d S r×   )r#   r  r«  r  )rq  r   Zebr    r    r!   Útest_errorbar_inputs_shotgund  s    rÍ  Zdash_offsetc                  C   sT   t  ¡ \} }t dd¡}t |¡}tdddƒD ] }|j||| |dfddd� q.d S )	Nr   rr   rÇ   r3   ©rr   rr   rÁ   rD  )râ  rû   r¥   )r#   r   r]   rÎ   Z	ones_liker­   r}   )r(   r   r,   r-   rP  r    r    r!   Útest_dash_offsetk  s
    
rÏ  c                  C   sž   t  ¡ \} }|jddd� |j ¡ }|d d| j ks:t‚|jddd� |j ¡ }|d dksbt‚|jdd d� |j ¡ }|d tjd d | j ksšt‚d S )	NÚaardvarkrø  ©r  r¾  g«ªªªªªÚ?rS  zaxes.titlepadrD  )	r#   r   r/   ZtitleOffsetTransZ
get_matrixr‹  r&   rN   r¬   )r(   r   rÎ  r    r    r!   Útest_title_padt  s    


rÒ  c               	   C   sÂ   t  ¡ \} }dt jd< | d¡ |jddd� |jddd� d|jdd�ksPt‚d|jdd�ksdt‚d|jdd�ksxt‚t t¡� |jdd� W 5 Q R X t t¡� |jddd� W 5 Q R X d S )	NrP   zaxes.titlelocationrÐ  rI   r9   r<   r{  Zfail)	r#   r   r¬   r/   Z	get_titler&   rŠ   r‹   r*  r'   r    r    r!   Útest_title_location_roundtrip„  s    

rÓ  rH  c                 C   s‚   t jdd| d�\}}|d jddd� |d jddd� | ¡  |d j ¡ \}}|d j ¡ \}}||  krxd	ks~n t‚d S )
Nr3   r2   rG  r   r^  iØÿÿÿrÑ  r_  r£   )r#   r   r/   r"  r+   r6  r&   )rH  r(   r<  r,   r=  r  r    r    r!   Útest_title_location_shared–  s    rÔ  z
loglog.pngc                  C   sN   t  ¡ \} }t dd¡}|j||d dd� |jddd� |jd	dd
d� d S )Nr2   rL  r‰   rÁ   rý   rÉ  r3   )r  rh  rÈ   r®  )r  rh  r°  )r#   r   r]   rb   rJ  r  )r(   r   r,   r    r    r!   Útest_loglog¡  s
    rÕ  ztest_loglog_nonpos.pngc                  C   sÒ   t  dd¡\} }t dd¡}|d }d|d< d|d< ttdd	d
gdd�|jƒD ]~\\}}}||kr”|r~|j||d d|d� qÌ|j||d dd� qN|j||d dd� |rº|jd|d� |rN|j	d|d� qNd S )Nr‰   r2   rL  g      Àr¹  r(  rç   r¡  rw  r±   r3   )r•  )rû   Únonpositiverý   rå   )rÖ  )
r#   r   r]   rb   rm  r   r;  rJ  rT  r  )r(   r<  r,   r-   ZmcyZmcxr   r    r    r!   Útest_loglog_nonposª  s"    ÿr×  c                  C   sœ  t  ¡ \} }| ddddg¡ | ¡ d dks2t‚t  ¡ \} }| ddddgddddg¡ | ¡ d dksnt‚t  ¡ \} }| ddddgddddg¡ | ¡ d dksªt‚t  ¡ \} }| t	 
d¡¡ | ¡ dksÖt‚| ¡ dksæt‚t  ¡ \} }| t	 
d¡¡ | ¡ dk�st‚| ¡ dk�s&t‚t  ¡ \} }| t	 d¡¡ | ¡ d dk�sXt‚t  ¡ \} }| t	 
d¡¡ | ¡ dk�s†t‚| ¡ dk�s˜t‚d S )	Nr   r2   r3   r‰   rÎ  rI  rr   )rN  g      #@)r#   r   r}   r¤  r&   r  r  r£  rb  r]   r¥  rÄ  ri  rb   r{   r'   r    r    r!   Útest_axes_marginsÀ  s0    rØ  )r1  c                 C   s    dd„ }dd„ }||dœ| j  S )Nc                 S   s<   |   ¡ }| ¡  |  dd¡ | j ¡ ƒ }|d dks8t‚d S ©Nr   rÈ   rp   r—  )rÓ   r  rn  rQ   Úget_major_locatorr&   ©r   rÜ   r¨  r    r    r!   Ú	_helper_xä  s
    z&shared_axis_remover.<locals>._helper_xc                 S   s<   |   ¡ }| ¡  |  dd¡ | j ¡ ƒ }|d dks8t‚d S rÙ  )rÒ   r  ro  rT   rÚ  r&   rÛ  r    r    r!   Ú	_helper_yë  s
    z&shared_axis_remover.<locals>._helper_yrà   )Úparam)ÚrequestrÜ  rÝ  r    r    r!   Úshared_axis_removerâ  s    rà  r  r   Úsubplots_sharedrÿ   c                 C   sŽ   | j dkrt ¡ }| ¡ }nj| j dkr4t ¡ \}}nR| j dkrbtjddddd�\}}|d d }n$| j dkr†t ¡ }| d	d	d
d
g¡}||fS )Nr  r   rá  r3   rƒ  r:  r   rÿ   rÄ   rx  )rÞ  r#   r®   r  r   rÿ   )rß  r(   r   rÈ  r    r    r!   Úshared_axes_generatorõ  s    




râ  c                 C   s   | \}}||ƒ d S r×   r    )râ  rà  r(   r   r    r    r!   Útest_remove_shared_axes  s    rã  c                  C   s`   t jddddd�\} }|d d }|d d  ¡ }| ¡  | dd¡ t|d d  ¡ |ƒ d S )Nr3   rƒ  r:  r   r2   rÁ   )r#   r   r   r  rn  r   )r(   rÈ  r   Z	orig_xlimr    r    r!   Útest_remove_shared_axes_relim  s    rä  c                  C   sà   t  ddd¡} t j | j| jf¡}tjddddd�\}\}}| dd	¡ | dd	¡ | 	| | |¡ | 	| | |¡ | 
¡ s€| 
¡ r„t‚| ¡ s”| ¡ r˜t‚| ¡ | ¡   kr´d
ksºn t‚| ¡ | ¡   krÖd
ksÜn t‚d S )Ni°ÿÿÿr˜  r.  r3   r2   Tr:  éüÿÿrä  )rå  rä  )r]   rb   r^   Zrandom_samplerv  r#   r   rn  ro  r   r  r&   r  r   r€   )r\  rb  r(   rÕ   rÜ   r    r    r!   Útest_shared_axes_autoscale  s    "ræ  c                  C   sˆ   t  ¡ \} }|j ¡ jdd� | dd¡ | d¡ | j ¡  t	|j ¡ ƒ ƒdksVt
‚| dd¡ | j ¡  t	|j ¡ ƒ ƒdks„t
‚d S )Nr¢  rø  r   rä  rÄ  r3   )r#   r   rT   rÚ  Z
set_paramsrn  r2  rF  rØ   r  r&   ro  r'   r    r    r!   Útest_adjust_numtick_aspect&  s    


rç  c                  C   sL   t  ¡  dd¡} | jD ]0}| ¡ •| ¡ •  kr@dddgksn t‚qd S )Nrç   r   rž   r2   )r#   r®   r   r;  rì  r‡  r&   rý  r    r    r!   Útest_auto_numticks2  s    
rè  c                  C   sv   t  ¡ \} }dtjd< | ddgddg¡ t | ¡ ¡t ddd	¡k 	¡ sNt
‚t | ¡ ¡t d
dd¡k 	¡ srt
‚d S )NZround_numbersúaxes.autolimit_modeg#B’¡œÇ;g     jø@ç¼‰Ø—²Òœ<rr   iæÿÿÿrJ  rç   rõ  r‰   )r#   r   r�   r¬   rJ  r]   Úlog10rì  rb   rƒ  r&   r‡  r'   r    r    r!   Útest_auto_numticks_log9  s
    
$rì  c                  C   s   t  ¡ \} }| g d¡ d S )N)rÄ   rž   )r#   r   r.  r'   r    r    r!   Útest_broken_barh_emptyC  s    rí  c                  C   s†   t  ¡ \} }t dddddd¡}| |tjdd�fgddg¡}| ¡ d jd t |¡ks^t	‚| ¡ d jd	 t |¡d
 ks‚t	‚dS )z9Check that timedelta works as x, dx pair for this method.r)  rL  rÂ  r   r2   r*  r3   r�  ©r3   r   gUUUUUU¥?N)
r#   r   rš  r.  rŠ  r"  Zverticesrœ  r�  r&   )r(   r   Zd0Úppr    r    r!   Útest_broken_barh_timedeltaH  s
     rð  c                 C   sD   | j ddd�}t d¡}tj dd¡}t ¡ \}}| |||¡ d S )Nz
2000-01-01rr   )r1  rÊ  rë  rÂ  )r5  r]   rb   r^   r“   r#   r   rP  )r8  ÚtimeÚdepthr[  r(   r   r    r    r!   Útest_pandas_pcolormeshQ  s
    
ró  c                 C   sj   t jdddd�}t  tt|ƒƒ¡}|  ||dœ¡}t ¡ }|t  |j	¡d dk  
¡ }|jdd	|d
� d S )Nz2005-02z2005-03r”  rF  )rR  r‡  r3   r2   rR  r‡  r¶  )r]   rb   rÏ   r­   r  rM  r#   r  rþ   rP  rÍ  r}   )r8  rR  r‡  rQ  r   Zwithout_zero_indexr    r    r!   Útest_pandas_indexing_datesZ  s    rô  c                 C   sP   | j tjjdd�ddddgddd	d
dgd�}t ¡ \}}|jdddd|d� d S )N)rÁ   rç   ru  r,   r-   ZxeZyer2   r3   r‰   rç   rÁ   )ÚcolumnsrP  rû  )rM  r]   r^   Úuniformr#   r   r«  rV  r    r    r!   Útest_pandas_errorbar_indexinge  s    
þr÷  c                 C   s>   |   dddgdddgdœ¡}t ¡ \}}| |j|d ¡ d S )	Nrç   rÁ   rQ  r¹  r2   r3   )ZXXÚYYrø  )rM  r#   r   r}   rP  rV  r    r    r!   Útest_pandas_index_shapem  s    rù  c                 C   sH   | j ddddddddddg
d�}|jdd … }t ¡ \}}| |¡ d S )Nr2   r3   r‰   rç   rÁ   r¶  )rf  Zilocr#   r   ri  )r8  Zser_1Zser_2r(   r   r    r    r!   Útest_pandas_indexing_hists  s     rú  c                 C   sh   |   tdƒtdƒdœ¡}t d¡\}}|j|j|d dkdf |j|d dkdf dd� |j ¡  d S )Nr3   rµ  r2   r‚   r—  rP   r  )rM  r­   r#   r   r  r:   rF  rØ   rV  r    r    r!   Útest_pandas_bar_align_centerz  s    þrû  c            	      C   sØ   t  ¡ j} | jdd�–}| jdd�–}| j| jdd�}| j| jdd�}||ksRt‚||ks^t‚| jdddd	d
� | jdd�–}| jdd�–}|  |¡}|  |¡}||ks¬t‚| j|ksºt‚||ksÆt‚| j|ksÔt‚d S )Nr  r¯  r®  T)Úreverser–   r–  rF  rv   )r  r  r  r°  )	r#   r  rT   Zget_tick_paramsZ_translate_tick_paramsrº  r»  r&   Úset_tick_params)	rA  Zinitial_major_style_translatedZinitial_minor_style_translatedZtranslated_major_kwZtranslated_minor_kwZnew_major_style_translatedZnew_minor_style_translatedZnew_major_styleZnew_minor_styler    r    r!   Útest_axis_get_tick_params‡  s2    
 ÿ ÿ ÿ

rþ  c                  C   s‚   t  ¡ } | jjdddd� | jjd jdks0t‚| jjd j ¡ dksJt‚| jjd j	 
¡ dksdt‚| jjd j	 ¡ dks~t‚d S )	Nr–   r–  rF  )r  r  r  r   rC  rD  rø  )r#   r  rT   rý  r  Ú_sizer&   Ú	tick1liner  rB  rv  )Zaxis_1r    r    r!   Ú.test_axis_set_tick_params_labelsize_labelcolor¢  s    
ÿr  c                  C   s�   t  ¡ } | jddddd� | j| jfD ]d}|jd j ¡ dksBt‚|jd j 	¡ dksZt‚|jd j 
¡ dksrt‚|jd j ¡ dks&t‚q&d S )Nr—  rÁ   rž   r’  )r  r   r  r!  r   r¦  )r#   r  r  rQ   rT   r  r
  r  r&   Zget_linewidthr�  rK  )r   rA  r    r    r!   Útest_axes_tick_params_gridlines¯  s    
ÿr  c                  C   s”   t  ¡ } | jdddd� | jdddd� | jjd j ¡ dksBt‚| jjd j ¡ dks\t‚| jj	d j ¡ dksvt‚| jj	d j ¡ dks�t‚d S )NFTr  )Z	labelleftZ
labelrightr°  r®  r   )
r#   r  r  rT   r  rB  rÙ   r&   Úlabel2r  r  r    r    r!   Ú test_axes_tick_params_ylabelside»  s    ÿÿr  c                  C   s”   t  ¡ } | jdddd� | jdddd� | jjd j ¡ dksBt‚| jjd j ¡ dks\t‚| jj	d j ¡ dksvt‚| jj	d j ¡ dks�t‚d S )NTFr  )ÚlabeltopÚlabelbottomr°  r®  r   )
r#   r  r  rQ   r  rB  rÙ   r&   r  r  r  r    r    r!   Ú test_axes_tick_params_xlabelsideÉ  s    ÿÿr  c                  C   s4   t  ¡  ¡ } | jtdƒd d�\}| ¡ dks0t‚d S )Nrh   r§  r¥  )r#   r®   r   r}   r­   rK  r&   )r   Úlnr    r    r!   Útest_none_kwargsÙ  s    r	  c                  C   s\   ddddg} t jtj| tjd�ddddgdd	�}t|j| ƒD ]\}}|jd |ks<t‚q<d S )
Nr   r2   r3   r‰   rF  rç   rÁ   rý  r  )	r#   r  r]   rþ   Zuint8rm  rò   r]  r&   )r'  r—  rÚ   r,   r    r    r!   Útest_bar_uint8ß  s    $r
  zdate_timezone_x.pngr£   c                  C   sj   dd„ t dƒD ƒ} tjdd� t ddd¡ tj| dgd dd	� t ddd¡ tj| dgd d
d	� d S )Nc              
   S   s(   g | ] }t j d dd|tj d¡d�‘qS ©éà  r3   é   úCanada/Eastern©r§   Útzinfo©rš  rO  ÚtzZgettzr˜   r    r    r!   rœ   é  s   þ
ÿz(test_date_timezone_x.<locals>.<listcomp>r‰   ©rÊ  rg  rC  r3   r2   r  )r  ÚUTC©r­   r#   r®   r  r»  ©Z
time_indexr    r    r!   Útest_date_timezone_xæ  s    þr  zdate_timezone_y.pngc                  C   sr   dd„ t dƒD ƒ} tjdd� t ddd¡ tjdgd | dd	d
d� t ddd¡ tjdgd | dd	d
d� d S )Nc              
   S   s(   g | ] }t j d dd|tj d¡d�‘qS r  r  r˜   r    r    r!   rœ   ú  s   þ
ÿz(test_date_timezone_y.<locals>.<listcomp>r‰   r  rC  r3   r2   r  FT)r  ZxdateÚydater  r  r  r    r    r!   Útest_date_timezone_y÷  s    þ   ÿr  zdate_timezone_x_and_y.pngc                     sn   t jj‰ ‡ fdd„tdƒD ƒ} tjdd� t ddd¡ tj| | dd	d
� t ddd¡ tj| | dd	d
� d S )Nc              	      s    g | ]}t j d dd|ˆ d�‘qS )r  r3   r  r  r   r˜   ©r  r    r!   rœ     s   ÿz.test_date_timezone_x_and_y.<locals>.<listcomp>r‰   r  rC  r3   r2   r  T)r  r  z
US/Eastern)rš  ÚtimezoneÚutcr­   r#   r®   r  r»  r  r    r  r!   Útest_date_timezone_x_and_y	  s    
ÿr  zaxisbelow.pngc                  C   sª   t  ¡ jdddd�} d}t| |ƒD ]‚\}}|jddddd� tjd	d
d�}| |¡ |jdddd� |j	ddddd� |j
d d …  d¡ | |¡ | ¡ |ks"t‚q"d S )Nr‰   T)r}  rH  r
  )Frd  TrI  rr   rÎ  rY  r\  r¨  r©  r6   r¥  )r¥   rˆ   rí   F)r8   rH   rI   r<   )r#   r®   r   rm  r}   r|  rÌ  r{  rÒ  r  r   r   Zset_axisbelowZget_axisbelowr&   )r<  Úsettingsr   ZsettingÚcircr    r    r!   Útest_axisbelow  s    
 ÿ
r   c            	      C   s€   t j d¡ t jdd�\} }| ¡ }| d¡}| d¡}| j ¡  | j 	¡ }| 
|¡j}| 
|¡j}|| }t |d¡s|t‚d S )Nr�   r›  )r‹  ÚXlabel2ÚTitler‰   )r#   r‘   r’   r   rÒ   r$   r/   rF  rØ   Úget_rendererÚget_window_extentr  r=  r]   Úiscloser&   )	r(   r   rÜ   Zxlabel2r+   ÚrendererZbbox_y0_titleZbbox_y1_xlabel2Zy_diffr    r    r!   Útest_titletwiny.  s    



r'  c                  C   sx   t  ¡ \} }| jdd� | ¡ }| d¡ | d¡ | d¡ d}|j |¡ | j 	¡ }| 
|¡ |j ¡ |kstt‚d S )Nrx  )r8   ZXlabelr!  r"  )rž   gÃõ(\�Âñ?)r#   r   r”  rÒ   r$   r/   r+   r  rF  r#  Z_update_title_positionr6  r&   )r(   r   rÜ   r³   r&  r    r    r!   Útest_titlesetpos=  s    




r(  c                  C   sP   d t jd< t ¡ \} }|j d¡ | d¡ | j ¡  |j	 
¡ d dksLt‚d S )Núaxes.titleyr8   ú
xlabel topr2   ç¤p=
×£ð?)r�   r¬   r#   r   rQ   r�   r/   rF  rØ   r+   r6  r&   r'   r    r    r!   Útest_title_xticks_topL  s    


r,  c                  C   sX   d t jd< t ¡ \} }|jdddddd� | d¡ | j ¡  |j 	¡ d dksTt
‚d S )Nr)  r,   T©rA  rH   r8   r  r  r*  r2   r+  )r�   r¬   r#   r   r  r/   rF  rØ   r+   r6  r&   r'   r    r    r!   Útest_title_xticks_top_bothV  s    
   ÿ

r.  zleft, center)rI   r±   )r±   rP   )rI   rP   zleft title movedzcenter title keptzboth titles alignedc                 C   s¸   d t jd< t ¡ \}}| d¡ |j| dd� | |¡ | ¡  | r`|s`|j ¡ d dks´t	‚nT| s€|r€|j
 ¡ d dks´t	‚n4|j ¡ d }|j
 ¡ d }|dks¨t	‚||ks´t	‚d S )Nr)  g   èvH7BrI   r9   r2   r£   )r�   r¬   r#   r   ro  r/   r"  Z_left_titler6  r&   r+   )rI   rP   r(   r   ZyleftrÅ  r    r    r!   Útest_title_above_offseta  s    


r/  c                  C   sd   d t jd< t ¡ } |  ddddg¡}|jdddddd� | d	¡}| j ¡  | 	¡ d
 dks`t
‚d S )Nr)  rÄ   rN  rx  rÅ   r,   Tr-  ÚBoor2   r£   )r�   r¬   r#   r®   rÿ   r  r/   rF  rØ   r6  r&   )r(   r   Úttr    r    r!   Útest_title_no_move_off_page  s    
   ÿ

r2  c                  C   sD   t  ¡ \} }| dddg¡ |jjdd� |j ¡  ¡ dks@t‚d S )Nç   @°ÎAç   €ûeÎAç   ÀF²ÎAr–  )r  )r#   r   r}   rT   rý  Úget_offset_textr  r&   r'   r    r    r!   Útest_offset_label_colorŒ  s    r7  c                  C   sb   t  ¡ \} }| dddg¡ |jjddd� |j ¡  ¡ s>t‚|jjdd� |j ¡  ¡ r^t‚d S )Nr3  r4  r5  FT)Zlabel1OnÚlabel2On)r8  )r#   r   r}   rT   rý  r6  rÙ   r&   r'   r    r    r!   Útest_offset_text_visible”  s    r9  c                  C   s6   t  ¡ \} }| dt ddg¡ d ¡ | j ¡  d S )Nr2   r   gê-�™—q=g„þäqÙ‰E)r#   r   r}   r]   rþ   rF  rØ   r'   r    r    r!   Útest_large_offset�  s    r:  c                  C   s^   t  ¡ \} }dd„ tdddƒD ƒ}t ddt|ƒ¡}t ddt|ƒ¡ }}| ||||¡ d S )Nc              	   S   s   g | ]}t   d ddd|¡‘qS ©r�  r¹  rÈ   rJ  r   r  r    r    r!   rœ   ¥  s     z#test_barb_units.<locals>.<listcomp>r   rŒ  rr   rÁ   rW  )r#   r   r­   r]   rÎ   r  Zbarbs©r(   r   rR  r-   ÚuÚvr    r    r!   Útest_barb_units£  s
    r?  c                  C   s^   t  ¡ \} }dd„ tdddƒD ƒ}t ddt|ƒ¡}t ddt|ƒ¡ }}| ||||¡ d S )Nc              	   S   s   g | ]}t   d ddd|¡‘qS r;  r   r  r    r    r!   rœ   ­  s     z%test_quiver_units.<locals>.<listcomp>r   rŒ  rr   rÁ   rW  )r#   r   r­   r]   rÎ   r  Zquiverr<  r    r    r!   Útest_quiver_units«  s
    r@  c                  C   sn   t j} t ¡ \}}tdƒD ]N}| tdƒ¡\}| tdƒtdƒ¡}|D ] }| | ¡ ƒ| | ¡ ƒksFt	‚qFqd S )NrÁ   r‰   )
r+  Úto_rgbr#   r   r­   r}   r  r  r!  r&   )rA  r(   r   rP  r  ZbrsÚbrr    r    r!   Útest_bar_color_cycle³  s    rC  c                  C   s  t  dd¡\} \}}| ddgddg¡ | ddgddg¡ |jjddd� |jjddd� |jdd�D ]}| ¡ dksht‚qh|j	dd�D ]}| ¡ dksŠt‚qŠ|j
d	d
d� |j
ddd� |jdd�D ]}| ¡ d
ksÈt‚qÈ|j	dd�D ]}| ¡ dksêt‚qêd S )Nr2   r3   r   rv   rË   )r°  rÑ  r˜  r¯  r,   é5   )rA  r  r-   rÉ   )rA  rÑ  r  )r#   r   r}   rQ   rý  rT   r˜  ru  r&   rˆ  r  )rÍ  r   rÜ   Útextr    r    r!   Útest_tick_param_label_rotation½  s    rF  c            	      C   sˆ  t  ¡ \} }tdƒD ]D}| tdƒtdƒ¡}t d |¡¡}t| ¡  	¡ ƒt|ƒkst
‚qtddƒD ]D}| tdƒtdƒ¡}t d |¡¡}t| ¡  	¡ ƒt|ƒksdt
‚qdt d¡}dD ]<}|jtdƒtdƒf|diŽ}t| ¡  	¡ ƒt|ƒks¸t
‚q¸t d¡}tddgdd�D ]r\}}|jtdƒtdƒf|diŽ}t d |¡¡}t| ¡  	¡ ƒt|ƒk�sbt
‚t| ¡  	¡ ƒt|ƒk�st
‚�qd S )	Nr‰   zC{}rQ  rD  )rë   Z
facecolorsr¥   rì   rf  )Ústart)r#   r   r­   r  r+  r  rð  Útupler  Zsqueezer&   r8  r:  r  )	r(   r   rP  ÚccÚtargetÚalZedge_targetÚelZface_targetr    r    r!   Útest_fillbetween_cycleÐ  s&    

rM  c                  C   sœ   dt jd< t  ¡ \} }d}| |¡ | ddgddg¡ | ¡ \}}|j ¡ }| ||g¡\}}| ddg¡\}}	|	| | }
t	||
 ||
 g||	gƒ d S )Nr[  ré  r&  rr   rÇ   )
r#   r¬   r   Zset_xmarginrK  r   rQ   r#  rê   r   )r(   r   ÚmarginZxlim0Zxlim1rê   Zxlim0tZxlim1tZx0tZx1trì  r    r    r!   Útest_log_marginsì  s    


rO  c               	   C   sœ   d} t  | ¡t  | ¡ }}t  | d ¡}t ¡ \}}t t¡� |j|||d� W 5 Q R X tjdd�� |j||dd� W 5 Q R X |j||dg|  d� d S )NrÁ   r2   rN  r  r  )rž   rž   rž   )	r]   rb   r#   r   rŠ   r‹   r*  r4   r-  )r  r,   r-   r~  r(   r   r    r    r!   Útest_color_length_mismatchú  s    rP  c                   C   s   t jdgdd� t  ¡  d S )Nr£   ÚLabelrÑ  )r#   r„  rB   r    r    r    r!   Útest_eventplot_legend  s    rR  c                  C   st   t  ¡ \} }| tdƒd¡ |jddtdƒdd� |jddgddgdd�\}}| ¡ | ¡   krjdkspn t‚d S )Nrç   r2   r   )rI   rÆ  )rÄ   rÅ   rÆ   rE  r  )r#   r   r  r­   r  r"  r&   )r(   r   Zrect1Úrect2r    r    r!   Útest_bar_broadcast_args  s
    rT  c                	   C   s    t  ddgddg¡ t t¡� t  tj¡ W 5 Q R X t t¡� t  tj¡ W 5 Q R X t t¡� t  	tj¡ W 5 Q R X t t¡� t  	tj¡ W 5 Q R X d S rA  )
r#   r}   rŠ   r‹   r*  rt   r]   r  rª  ru   r    r    r    r!   Útest_invalid_axis_limits  s    rU  rð  rR  rå   rö  c                 C   s:   t  ¡ }| ddddg¡ | | ¡ | |¡ | ¡  d S )Nr2   r3   r‰   rç   )r#   r  r}   rT  r  r5  )rð  rö  r   r    r    r!   Útest_minorticks_on#  s
    

rV  c                  C   sv   t  ¡ \} }| dd¡ | ¡ }| ddgddg¡ t  ¡ \}}| dd¡ | ddgddg¡ t|jj|jjƒ d S )Nr2   r3   r   rž   )r#   r   rÛ  rÓ   r}   r   r7  Z	intervalx)r(   r   Zxtwinr?  rÜ   r    r    r!   Útest_twinx_knows_limits-  s    rW  c                   C   s   t jddgddgddd� d S )Nr   r2   r¦  )râ  rû   )r#   r}   r    r    r    r!   Útest_zero_linewidth<  s    rX  c                  C   s<   t  ¡ \} }|jg g g dd� |jg g g dd� | ¡  d S )Nzempty y)r®  r*   zempty x)r¯  r*   )r#   r   r«  rB   r'   r    r    r!   Útest_empty_errorbar_legendA  s    rY  c                 C   s\   t  ddd¡}dd„ |D ƒ}dd„ |D ƒ}dd„ |D ƒ}|  ¡  ||¡ | ¡  ||¡ d S )Nr(  rr   rÆ   c                 S   s0   g | ](}d |d  d|d   d|  d ‘qS )gÍÌÌÌÌÌ@r‰   r  r3   g\�Âõ(\@ç      @r    r˜   r    r    r!   rœ   K  s     z%test_plot_decimal.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ‘qS r    r   r  r    r    r!   rœ   L  s     c                 S   s   g | ]}t |ƒ‘qS r    r   r  r    r    r!   rœ   M  s     )r]   rb   r   r}   )r   r   r  r  r,   r-   r    r    r!   Útest_plot_decimalH  s    r[  c                 C   s0   |   ¡ jddddd� |  ¡ jddddd� d S )Nr   r†   rè   rž   )rx  rÙ  rg  )r   r}   )r   r   r    r    r!   Útest_markerfacecolor_none_alphaU  s    r\  c                  C   sn   dt jd< dt jd< t  ¡ \} }| | j ¡ ¡}| d¡ | | j ¡ ¡}|j|jk sZt‚|j	|j	k sjt‚dS )z5Test that tick padding gets turned off if axis is offrF  zxtick.directionzytick.directionÚoffN)
r#   r¬   r   Úget_tightbboxrF  r#  rA  r  r&   r  ©r(   r   ÚbbÚbb2r    r    r!   Útest_tick_padding_tightbbox[  s    


rb  c                  C   s0  d\} }t jtdd| |ƒtdd|  | ƒf \}}t  |¡d t  d||  ¡t  |¡  }t ¡ \}}| |||dd…dd…f ¡ | d¡ | 	¡  dd	g}d
dg}|d |d |d |d  |d |d  g}	|j
|	d�\}
}|dksðt‚|j ¡  t  ddgd	dgg¡}t  |
 ¡  ¡ |k¡�s,t‚dS )z:
    Ensure that inset_ax argument is indeed optional
    ©r&  r&  r2   rÁ   rr   Nrp   r£   r�   ç333333@r3   r  r   )ÚboundsrÃ   )r]   Úmgridrä  rÏ   r  r#   r   rP  r2  Úapply_aspectÚindicate_insetr&   rF  rØ   rþ   rƒ  Úget_bboxÚ
get_points)ÚdxÚdyr-   r,   rœ  r(   r   rt   ru   r%  ÚrecÚ
connectorsÚxxr    r    r!   Ú
test_insetg  s&    ÿ
*
,

ÿrp  c                  C   s‚  d\} }t jtdd| |ƒtdd|  | ƒf \}}t  |¡d t  d||  ¡t  |¡  }t ¡ \}}| |||d d…d d…f ¡ | d¡ | 	¡  | 
ddddg¡}| |||d d…d d…f ¡ | d	d
g¡ | ddg¡ | | ¡ ¡ | |¡\}}	t|	ƒdk�st‚|j ¡  t  d	dgd
dgg¡}
t  | ¡  ¡ |
k¡�sNt‚t  ddgddgg¡}
t jj| ¡  ¡ |
dd� d S )Nrc  r2   rÁ   rr   rp   r£   ræ  rÿ  r�   rd  r3   r  rç   rÃ   g=
×£p=ä?gKXc'æ?gö(\�Âõê?gèÚÐí?g-Cëâ6?©Zrtol)r]   rf  rä  rÏ   r  r#   r   rP  r2  rg  Ú
inset_axesrn  ro  r3  Zindicate_inset_zoomr  r&   rF  rØ   rþ   rƒ  ri  rj  r©   r   r6  )rk  rl  r-   r,   rœ  r(   r   Zaxin1rm  rn  ro  r    r    r!   Útest_zoom_inset„  s:    ÿ
*


ÿ
ÿ
  ÿrs  zinset_polar.pngc                  C   sh   t  ¡ \} }|jddddgdd�}t|tƒs0t‚t ddd¡}dtj | }| 	||¡ | 	||¡ d S )	Nrž   rÄ   rÞ  Trò  r   r3   rU  )
r#   r   rr  rº   r   r&   r]   rb   rÐ   r}   )rv  r   Úaxinsr¨  rs  r    r    r!   Útest_inset_polar¥  s    ru  c                  C   s4   t  ¡ \} }|jddddgdd�}t|tƒs0t‚d S )NrÅ   rÆ   ÚhammerrÍ  )r#   r   rr  rº   r   r&   ©rv  r   rt  r    r    r!   Útest_inset_projection²  s    rx  c                  C   s8   t  ¡ \} }|jddddgtjd�}t|tjƒs4t‚d S )NrÅ   rÆ   )r/  )r#   r   rr  ÚAAr   rº   r&   rw  r    r    r!   Útest_inset_subclass¸  s    rz  Ú
x_invertedÚ
y_invertedc                 C   s  t  dd¡\}\}}t d¡}| ||d¡ | r8| ¡  |rD| ¡  | ddddg|¡\}}|\}}	}
}| rpdnd}|r|dnd}||
jd |jd   dks t	‚||jd |	jd   dksÀt	‚||	jd |jd   dksàt	‚||jd |
jd   dk�st	‚d	S )
zR
    Test that the inset lines are correctly located with inverted data axes.
    r2   r3   rr   r†   rÁ   rç   rp   r   N)
r#   r   r]   rb   r}   r  r  rh  r�  r&   )r{  r|  r(   rÕ   rÜ   r,   r%  re  Z
lower_leftZ
upper_leftZlower_rightZupper_rightZsign_xZsign_yr    r    r!   Útest_indicate_inset_inverted¾  s    
   r}  c                  C   s²   t  ¡ \} }| d¡ |jddddgdd� t | ¡ jd¡sBt‚| d¡ |jddddgdd� t | ¡ jd¡sxt‚| d¡ |jddddgd	d� t | ¡ jd¡s®t‚d S )
Nrõ  rÄ   rE  rv   r¯  rÃ   rÀ  rƒ  Úactive)	r#   r   r2  r  r]   rµ  r6  rh  r&   r'   r    r    r!   Útest_set_positionØ  s    


r  c                  C   sd   t  ¡ \} }|jj | j ¡ ¡}| ddd dd¡ |jj | j ¡ ¡}tj	j
| ¡ | ¡ dd� d S )N)rj  rj  r€  r€  r  Fg�íµ ÷Æ°>rq  )r#   r   r   rH   r$  rF  r#  Ú_set_view_from_bboxr]   r©   r   rj  r_  r    r    r!   Ú!test_spines_properbbox_after_zoomå  s      ÿr�  c                  C   sV  t  ¡ \} }d}d}| |¡ |j|d |d d� | d¡ tjj|| ¡ dd� tjj|| 	¡ dd� | d	¡ d
}d}| ¡ }| 	¡ }tj |d |d  d¡ tj |d |d  d¡ tjj||dd� tj ||¡ | d¡ | ¡ }| 	¡ }tj |d |d  d¡ tj |d |d  d¡ tjj||dd� tjj||dd� d S )N©rN  rž   )rp   r3   r   r2   r%  )rí  rí  r£   rê  ©Zatol)rí  rí  rÃ   )gB!„BØ¿gøÞ{ï½÷¾?)g      Ú¿g     €ñ?rž   r�   )rí  rí  rž   r‰   )
r#   r   rn  ro  r€  r]   r©   r   r   r€   )r(   r   rt   ru   rè  Znew_ylimZres_xlimZres_ylimr    r    r!   Útest_limits_after_scroll_zoomï  s0    



r„  c                  C   sH   t  ¡ \} }t| ƒ | tjdd¡ | j ¡ }tj 	| 
|¡jd¡ d S )Nr2   r0  ið  )r#   r   r   rE  r]   r¤  rF  r#  r©   r   r^  rh  )r(   r   r&  r    r    r!   Útest_gettightbbox_ignore_nan  s
    
r…  c              	   C   sj   t ddƒ}| jtjjdd�|d�}| jtjjdd�|d�}| jddddddddg|d�}t |||¡ d S )Nrr   rJ  rË  ru  rU  r2   r   )r­   rf  r]   r^   rö  r#   r4   )r8  r5  r,   r-   r6   r    r    r!   Ú"test_scatter_series_non_zero_index  s
    
r†  c                   C   s"   t  g g ¡ t jg g g g d� d S )N)rc  r6   )r#   r4   r    r    r    r!   Útest_scatter_empty_data$  s    r‡  zannotate_across_transforms.pngc               	   C   s¤   t  ddd¡} t  |  ¡t  | ¡ }tjdd�\}}| | |¡ | ddddg¡}| d	¡ |j	 
d
¡ |j 
d
¡ |jd| d |d f|jd|jtdd�d� d S )Nr   rr   rí  )g…ëQ¸@r‰   rC  rE  rž   rÆ   rÅ   Fr±   rØ  rT  r_  )r`  )r]  r^  r_  r`  r~  )r]   rÎ   rO  rÏ   r#   r   r}   rr  r2  rQ   r   rT   ra  Z	transDatarõ   rÑ  )r,   r-   r(   r   rt  r    r    r!   Útest_annotate_across_transforms*  s    
 þrˆ  zsecondary_xy.pngc                  C   s®   t jddddd�\} }dd„ }t|ƒD ]‚\}}| t dd¡t dd¡¡ |d	krZ|j}n|j}|d
||fd� |ddd„ dd„ fd� |ddd„ dd„ fd� |dƒ q&d S )Nr2   r3   r   T)rÎ  rÏ  c              
   S   s,   t jdd�� d|  W  5 Q R £ S Q R X d S ©Nr
  r  r2   ©r]   r  r  r    r    r!   Úinvert?  s    z!test_secondary_xy.<locals>.invertrL  r   rÅ   ©Z	functionsrE  c                 S   s   d|  S ©Nr3   r    r  r    r    r!   r�  K  r‘  z#test_secondary_xy.<locals>.<lambda>c                 S   s   | d S r�  r    r  r    r    r!   r�  K  r‘  rå  c                 S   s   | d S r�  r    r  r    r    r!   r�  L  r‘  c                 S   s   | d S )Nrž   r    r  r    r    r!   r�  L  r‘  rx  )r#   r   r:  r}   r]   rb   Úsecondary_xaxisÚsecondary_yaxis)r(   r<  r‹  Únnr   Úsecaxr    r    r!   Útest_secondary_xy;  s    r’  c               	   C   s”   t  ¡ \} }| t dd¡t dd¡¡ t t¡� |jddd„ d� W 5 Q R X t t¡� | d¡ W 5 Q R X t t¡� | 	d¡ W 5 Q R X d S )	Nr3   rL  rÅ   c                 S   s   d|  S r¡  r    r  r    r    r!   r�  T  r‘  z%test_secondary_fail.<locals>.<lambda>rŒ  r<   rH   )
r#   r   r}   r]   rb   rŠ   r‹   r*  rŽ  r�  r'   r    r    r!   Útest_secondary_failP  s    r“  c                  C   sv   t jdd�\} }| t dd¡t dd¡¡ dd„ }|jd||fd� | j ¡  |  d	¡ t	| 
¡ jd
dddgƒ d S )Nr   rC  r3   rL  c              
   S   s,   t jdd�� d|  W  5 Q R £ S Q R X d S r‰  rŠ  r  r    r    r!   r‹  _  s    z%test_secondary_resize.<locals>.invertr8   rŒ  )r¹  rç   rÁ  rÄ   rË  )r#   r   r}   r]   rb   rŽ  rF  rØ   r°  r   r6  rB  )r(   r   r‹  r    r    r!   Útest_secondary_resize[  s    

r”  c                  C   sÎ   t jdd�\} }| t dd¡t dd¡¡ dd„ }|jd||fd�}t|j ¡ t	j
ƒs\t‚| ¡  t|j ¡ t	jƒszt‚| d	¡ t  ¡  t|j ¡ t	jƒs¢t‚| d
¡ t  ¡  t|j ¡ t	j
ƒsÊt‚d S )Nr   rC  r3   rL  c              
   S   s,   t jdd�� d|  W  5 Q R £ S Q R X d S r‰  rŠ  r  r    r    r!   r‹  m  s    z'test_secondary_minorloc.<locals>.invertr8   rŒ  rå   rS  )r#   r   r}   r]   rb   rŽ  rº   Z_axisZget_minor_locatorr¸   ZNullLocatorr&   r5  ZAutoMinorLocatorrT  rØ   Z
LogLocator)r(   r   r‹  r‘  r    r    r!   Útest_secondary_minorloci  s*    
ÿ
ÿ

ÿ

ÿr•  c                  C   sT   t  ¡ \} }| d¡ | d¡}|j t ¡ ¡ | j 	¡  t
|j ¡ tjƒsPt‚d S )Nrå   r8   )r#   r   rT  rŽ  rQ   r·   r¸   ZScalarFormatterrF  rØ   rº   r»   r&   ©r(   r   r‘  r    r    r!   Útest_secondary_formatter�  s    


 ÿr—  c                  C   s*   t  ¡ \} }| d¡}t|ƒdks&t‚d S )Nr8   z<SecondaryAxis: >)r#   r   rŽ  r0   r&   r–  r    r    r!   Útest_secondary_repr‹  s    
r˜  zaxis_options.pngc               	   C   s²   t  dd¡\} }tdƒD ]”\}}|d|f  dd¡ |d|f  |¡ |d|f  tjddd	d
d�¡ |d|f  dd¡ |d|f  |¡ |d|f  tjddd	d
d�¡ qd S )Nr3   r‰   )ZscaledrB  Úimager   ræ   )r2   gš™™™™™	@)r�   r�   rž   rè   rD  rÊ  r2   )r2   g      @)r2   r¢   )r�   r`  rØ  )r#   r   r:  r}   rA  rñ   r|  rÌ  )r(   r  r÷   Úoptionr    r    r!   Útest_axis_options‘  s     ÿ ÿr›  c                 C   sh  | j  ¡  | j  ¡ }g }t|j|jgƒD ]P\}}| |¡}|rntj|j	|j
f|j|jdddddd�}|  |¡ ||g7 }q(g }tddd	d
gƒD ]R\}}	|j|	  |¡}tj|j	|j
f|j|jdddddd�}
|  |
¡ ||g7 }qŽ| ¡ }tj|j	|j
f|j|jdddddd�}|  |¡ |}| |¡}tj|j	|j
f|j|jdddddd�}|  |¡ |}||||fS )zS
    Helper for the tests below that test the extents of various axes elements
    ræ  r-   rè   Nr‰   )rh  rÆ  rí   rì   rë   rê   rx  rH   r8   rI   r<   r¦   r�   r  r3   r–  r2   )rF  rØ   r#  r:  rQ   rT   r^  r|  r}  r  r  rh  rÆ  rñ   r   r$  )r(   r   r&  Úbbaxisr�  Zaxxr`  ZaxisrÚbbspinesr‚   ZspinerrS  Úbbaxra  Úbbtbr    r    r!   Úcolor_boxes£  sx    



     ý

     ý

     ý


     ý
r   c               	   C   sz  t ddiƒ�> tjddd�\} }| j ¡  t | ¡ t| |ƒ\}}}}W 5 Q R X dddd	gd
dddgg}t|ƒD ]*\}}tj	j
|| Ž }	t|j|	jdd� qpddddgddddgddddgddddgg}t|ƒD ]*\}}tj	j
|| Ž }	t|j|	jdd� qÐddddg}tj	j
|Ž }	t|j|	jdd� ddddg}tj	j
|Ž }	t|j|	jdd� | ¡  | j¡j}
t|
| ¡ jdd� d S )Nú_internal.classic_modeFrí  ©rQ  rQ  ©r‹  rÎ  g     Ø^@gŒã8ŽãøR@g     ºŽ@g     €@@gŽã8Žã`U@gþÿÿÿÿÿX@g     °J@g     �@r3   )Údecimalç     Àb@ç-²�ïÿ]@ç     �@çF¶óýÔ8&@ç     à�@rS  çNÑ‘\þÿ]@ç      Ž@ç½R–!Ž³�@çþÿÿÿÿÿ]@gÔ+eâ`U@gb„ðhãøR@g{®Gáè�@g{®GáÈ�@)r
   r#   r   rF  rØ   r  r   r:  r$  ÚBboxÚfrom_boundsr   re  r6  ZtransformedÚtransFigurer$  )r(   r   rœ  r�  rž  rŸ  rJ  r�  r—  ÚtargetbbZaxbbr    r    r!   Útest_normal_axesÑ  s6    



þ



ür²  c            
   	   C   s*  t ddiƒ�B tjddd�\} }| j ¡  |jg g d� t| |ƒ\}}}}W 5 Q R X t|ƒD ]\}}|d ks\t‚q\ddd	d
gddd	dgddd
dgddd
dgg}t|ƒD ]*\}}t	j
j|| Ž }	t|j|	jdd� q¦ddd	dg}t	j
j|Ž }	t|j|	jdd� ddd	dg}t	j
j|Ž }	t|j|	jdd� d S )Nr¡  Frí  r¢  r£  ©ZxticklabelsZyticklabelsr¥  r¦  r§  r¨  r©  rS  rª  r«  r¬  rU  rƒ  r­  ç      ^@)r
   r#   r   rF  rØ   r~   r   r:  r&   r$  r®  r¯  r   re  )
r(   r   rœ  r�  rž  rŸ  r�  r—  rJ  r±  r    r    r!   Útest_nodecoratorø  s*    




ürµ  c            
   	   C   s  t ddiƒ�P tjddd�\} }|jg g d� |jj d¡ | j ¡  t	| |ƒ\}}}}W 5 Q R X dd	d
dgddd
dgddddgddddgg}t
||ƒD ]&\}}tjj|Ž }	t|j|	jdd� q˜ddd
dg}tjj|Ž }	t|j|	jdd� dd	d
dg}tjj|Ž }	t|j|	jdd� d S )Nr¡  Frí  r¢  r£  r³  )r  r[  r¥  g      8@r§  g£s~Šã8&@r©  rS  rª  r¨  r«  r¬  rU  rƒ  r­  g     €�@)r
   r#   r   r~   r   rH   r  rF  rØ   r   rm  r$  r®  r¯  r   re  )
r(   r   rœ  r�  rž  rŸ  ÚtargetsrJ  Zbbspiner±  r    r    r!   Útest_displaced_spine  s(    




ür·  c               
   C   sô   ddddgddddggddddgd	d
ddggddddgddddggg} t dddgƒD ]š\}}tddiƒ�€ tjddd�\}}|j|d� |j ¡  t||ƒ\}}}}t ddgƒD ]2\}	}
tj	j
| | |	 Ž }t||
 j|jdd� q°W 5 Q R X qTdS )zG
    Switch the tickdirs and make sure the bboxes switch with them
    r¥  r´  r§  çÔ+eâ8&@r¨  r«  g†ZÓ¼ã8[@ç�ã8Žã8&@gœÄ °r\a@rC  gÅqÇqœ\@gä8Žã8b@r¦  r  rF  Zinoutr¡  Frí  r¢  r£  rG  r   r3   rU  rƒ  N)r:  r
   r#   r   r  rF  rØ   r   r$  r®  r¯  r   re  )r¶  ZdnumÚdirsr(   r   rœ  r�  rž  rŸ  r�  rÂ   r±  r    r    r!   Útest_tickdirs1  s.    

ÿ

ÿ

ÿü
  ÿr»  c            	   	   C   sl  t ddiƒ��T tjddd�\} }| j ¡  |jddd� t| |ƒ\}}}}t| |ƒ\}}}}d	d
ddgddddgg}tdƒD ].}tj	j
|| Ž }t||d  j|jdd� q~tjddd�\} }| j ¡  |jddd� | ¡  |jdddd� | j ¡  t| |ƒ\}}}}d	dddgddddgg}tdƒD ]0}tj	j
|| Ž }t||d  j|jdd� �q,W 5 Q R X d S )Nr¡  Frí  r¢  r£  rv   rF  )r°  r  r¥  gŒã8Žã8[@r§  r¹  gC­iÞq\a@rª  r¸  r«  r3   rU  rƒ  r®  r–   r–  gPUUUUUB@gVUUUUÕT@g‘z6«ªP@r´  goð…ÉTÕT@)r
   r#   r   rF  rØ   r  r   r­   r$  r®  r¯  r   re  r5  )	r(   r   rœ  r�  rž  rŸ  r¶  rü  r±  r    r    r!   Útest_minor_accountedforG  sB    


ÿ  ÿ



ÿ  ÿr¼  c                 C   sR   |   d¡ d¡ |  d¡ d¡ |   d¡}| d¡ | d¡ |  d¡ d¡ d S )Nr  Fr]  r  TÚon)r”   rA  r   r    r    r!   Útest_axis_bool_argumentsf  s    


r¾  c                  C   sr   t  ¡ \} }d}d}d}d}| ||||g¡}t|ƒ||||fksFt‚||f| ¡ ksZt‚||f| ¡ ksnt‚d S )NrÁ   rr   rÈ   rÊ  ©r#   r   rA  rH  r&   r   r€   ©r(   r   r[   r\   r&  r'  rç  r    r    r!   Útest_axis_extent_argr  s    rÁ  c                  C   sr   t  ¡ \} }d}d}d}d}|j||||d�}t|ƒ||||fksFt‚||f| ¡ ksZt‚||f| ¡ ksnt‚d S )NrÁ   rr   rÈ   rÊ  )r[   r\   r&  r'  r¿  rÀ  r    r    r!   Útest_axis_extent_arg2‚  s    rÂ  c                  C   sJ   t jdddgddddggdd�\} }} |d	 dks6t‚|d
 dksFt‚d S )Nr2   r3   r‰   rç   rÁ   rQ  r¢  rê  r   rp   )r#   ri  r&   ©rv  rë  r    r    r!   Útest_hist_auto_bins“  s    &rÄ  c            
   	   C   s€   t  d¡\} \}}dddg}|tjg }| |¡\}}}tjdd�� | |¡\}}	}W 5 Q R X tj ||¡ tj ||	¡ d S )Nr3   r2   r‰   r
  rŸ  )r#   r   r]   r  ri  r  r©   r   )
r(   rÕ   rÜ   r[  Znan_datarë  r³  rv  ZnanbinsZnanedgesr    r    r!   Útest_hist_nan_data™  s    
rÅ  c                  C   sD   t jtj d¡dddd�\} }} |d dks0t‚|d dks@t‚d S )	Nrr   r¢  r|  T)r­   rˆ  r   rp   r2   )r#   ri  r]   r^   r“   r&   rÃ  r    r    r!   Útest_hist_range_and_density§  s     ÿrÆ  c            
      C   s|   t  ¡ \} }dddg}|j|||ddd�}|jj\}}}|jD ]8}|D ]}|j|jksFt‚qF|D ]}	|	j|jks`t‚q`q>d S )Nr2   r3   r‰   rÁ   )r,   rÆ  r¯  r  rx  )r#   r   r  r«  r¦  rò   rx  r&   )
r(   r   r,   ZbarcontZ	data_lineZcaplinesZbarlinecolsr  ZcaplineZ
barlinecolr    r    r!   Útest_bar_errbar_zorder®  s    

rÇ  c                  C   sR   t  ¡ \} }| ¡  | ddg¡ | ¡ dks2t‚| dg¡ | ¡ dksNt‚d S )NrÆ   ræ  rT  rp   r¾  )r#   r   r  rƒ  r   r&   r'   r    r    r!   Útest_set_ticks_inverted½  s    rÈ  c                  C   sv   t jdd�} |  ¡ }| ddgddg¡ |jddddd	d
d� | d¡ | j | ¡ ¡}|j	|j
 t d¡ksrt‚d S )NrÎ  rC  rE  rå  rå   rF  Úlogit)çF]tÑE·?gœî£'^P?r2   r-  ©rð  rt   rö  ru   rs   r/  r   r3   )r#   r®   r”   r}   r~   r   r°  Ztransform_bboxr6  rÆ  rh  rŠ   Úapproxr&   )r(   r   r³   r    r    r!   Ú$test_aspect_nonlinear_adjustable_boxÆ  s      þ
rÍ  c                  C   sˆ   t jdd�} |  ddddg¡}| ddgddg¡ |jddd	d
ddd� | d¡ | ¡  | ¡ t 	ddg¡kstt
‚| ¡ d
ks„t
‚d S )NrÎ  rC  rÄ   rx  rE  rå  rå   )r2   rÇ   rÉ  )gûÙbeøF„?rÊ  r2   r.  rË  r   gS[Ú:XL	@g'ò�InŸ?@)r#   r®   rÿ   r}   r~   r   rg  r   rŠ   rÌ  r&   r€   r'   r    r    r!   Ú(test_aspect_nonlinear_adjustable_datalimÓ  s      þ
rÎ  c                  C   sÀ   t  ¡ \} }| ¡ }| ddg¡ | d¡ | ¡ dks<t‚t  ¡ \}}| d¡ | ddgddg¡ |jd	d
d� | j	 
¡  |j	 
¡  | ¡ }| ¡ }| ¡ }t|j|jƒ t|j|jƒ d S )Nrg  iX  r2   r£   r   r3   rQ  rË  rÄ  r-  r1  )r#   r   rÓ   r}   Úset_box_aspectZget_box_aspectr&   r   r2  rF  rØ   r6  r   rB  )r>  rÕ   Zaxtwinr?  rÜ   Úbb1Zbbtra  r    r    r!   Útest_box_aspectâ  s     



rÑ  c                  C   sš   t  ¡ \} }| ddddg¡ | j ¡  | d¡ t  ¡ \}}| d¡ |j ¡  | ddddg¡ | j ¡  |j ¡  | ¡ }| ¡ }t|j|jƒ d S )NrÄ   rË  rÅ   r£   )	r#   r   r  rF  rØ   rÏ  r6  r   rB  )r>  rÕ   r?  rÜ   rÐ  ra  r    r    r!   Útest_box_aspect_custom_positioný  s    





rÒ  c                  C   sn   t jddtdd�dd�\} }| j ¡  | j ¡ }g }|jD ] }| |¡}| |j	|j
g¡ q:t||d ƒ d S )Nr3   r‰   r2   )r8  T)rÏ  rÏ  r   )r#   r   rÑ  rF  rØ   r#  r;  r$  rÛ  rh  rÆ  r   )r(   r<  r&  rX  r   r`  r    r    r!   Útest_bbox_aspect_axes_init  s    ÿ




rÓ  c               	   C   s¦   t  ¡ \} }tjtdd�� | d¡ W 5 Q R X tjtdd�� | d¡ W 5 Q R X tjtdd�� | tj¡ W 5 Q R X tjtdd�� | tj ¡ W 5 Q R X d S )Nzmust be finite and positiver  rp   r   )r#   r   rŠ   r‹   r*  r2  r]   rª  r'   r    r    r!   Útest_set_aspect_negative#  s    rÔ  c                  C   s6   t  dd¡\} }| dddg¡ | j ¡  | ¡  d S r¶  )r#   r   r}   rF  rØ   Zredraw_in_framer'   r    r    r!   Útest_redraw_in_frame/  s    
rÕ  c                  C   sB   t  ¡ \} }| j d¡d k	s t‚| d¡ | j d¡d ks>t‚d S )N)rí  rí  F)r#   r   rF  Zinaxesr&   r   r'   r    r    r!   Útest_invisible_axes_events6  s    
rÖ  c                  C   s<   dt jd< t  ¡ } | j ¡ }|D ]}|j ¡ dks t‚q d S ©Nr=  zlines.markeredgecolor)r#   r¬   r  rQ   Úget_major_ticksr   Úget_markeredgecolorr&   ©r   r‹  r  r    r    r!   Ú"test_xtickcolor_is_not_markercolor>  s
    

rÛ  c                  C   s<   dt jd< t  ¡ } | j ¡ }|D ]}|j ¡ dks t‚q d S r×  )r#   r¬   r  rT   rØ  r   rÙ  r&   rÚ  r    r    r!   Ú"test_ytickcolor_is_not_markercolorF  s
    

rÜ  rA  r¢  )TFNc           
      C   s¬   t  ¡ \}}t d¡}t ddd¡}| ||¡ t|d| › d�ƒ}t|d| › d�ƒ}t|d| › d�ƒ}|d krt|ƒ n|}	|d	|d
� |	|ƒ ks’t‚|j 	¡  t
|ƒ d	ƒ d S )NrÇ   r[  rÄ   Zget_autoscaleZ_onrã   ZlimÚget_r‚  )r¢  )r#   r   r]   rb   rÎ   r4   rî   r&   rF  rØ   r   )
rA  r¢  r(   r   r,   r-   rD  Zset_limZget_limZ	post_autor    r    r!   Útest_unautoscaleN  s    

rÞ  c                 C   s`   | j dd� dtjd gddg¡\}d| ¡ _|j dd� t dtjd d¡t ddd¡¡ d S )Nró  rÍ  r   r3   r2   rÇ   ée   )r”   r}   r]   rÐ   Úget_pathZ_interpolation_stepsrÎ   )r   r   r\  r    r    r!   Ú)test_polar_interpolation_steps_variable_rb  s    $
 ÿrá  c                  C   s6   t  ¡ \} }| dd¡ | j ¡  | ¡ dks2t‚d S )Nr   g•Ö&è.>)r   gƒ”õæò	>)r#   r   r  rF  rØ   r€   r&   r'   r    r    r!   Útest_autoscale_tiny_stickyj  s    
râ  c                  C   sX   dt jd< dt jd< t  ¡ } | j ¡ }|D ](}|j ¡ dks@t‚|j ¡ dks*t‚q*d S )NrÂ  zxtick.colorr¤   zxtick.labelcolor)	r#   r¬   r  rQ   rØ  r   r  r&   rB  rÚ  r    r    r!   Ú&test_xtickcolor_is_not_xticklabelcolorr  s    


rã  c                  C   sX   dt jd< dt jd< t  ¡ } | j ¡ }|D ](}|j ¡ dks@t‚|j ¡ dks*t‚q*d S )NrÂ  zytick.colorr¤   zytick.labelcolor)	r#   r¬   r  rT   rØ  r   r  r&   rB  rÚ  r    r    r!   Ú&test_ytickcolor_is_not_yticklabelcolor|  s    


rä  rv  c                 C   s   g | ]}|d k	r|‘qS r×   r    )r™   rv  r    r    r!   rœ   †  s    ÿrœ   c                 C   st   | t jd< | t jd< t ¡ \}}|j ¡  tddg|j|jgƒD ].\}}| 	¡ D ]}|j
 ¡ | |¡ksPt‚qPq@d S )Nzxtick.labelsizezytick.labelsizer,   r-   )r�   r¬   r#   r   rF  rØ   rm  rQ   rT   rØ  rB  rv  Z_get_tick_label_sizer&   )rv  r(   r   ÚnamerA  r  r    r    r!   Útest_relative_ticklabel_sizes†  s    


ræ  c                  C   sd   t  ¡ } | jdddd�\}}| ddddgddddg¡ | dd¡ | ¡ }t |d	d
g¡s`t‚d S )Nr3   r2   rƒ  rG  r‰   rç   r  rÁ   rž   rZ  )	r#   r®   r   r4   rá  r   r]   rµ  r&   )r(   rÕ   rÜ   rt   r    r    r!   Útest_multiplot_autoscale”  s    rç  c                  C   s\   t  ¡ } |  d¡}| jddddg|d�}| ¡ }| jdd� | ¡  ¡ | ¡ k ¡ sXt‚d S )Nr�  rå  rÆ   rG  r   ©rI   )	r#   r®   r”   rÿ   r6  r”  rj  rƒ  r&   )r(   r  rÕ   Zinit_posr    r    r!   Ú$test_sharing_does_not_link_positions�  s    
ré  c              	   C   s”  t  dddg¡}|  d¡}|d jddgddg| d¡d	� tjd
d��( |d jddgddg| d¡d	� W 5 Q R X |d jddgddg| d¡d	� |d j	t  
d¡| d¡d� |d jt  
d¡t  
d¡| d¡d� | d¡}|d jddgddg| d¡d	� |d jddgddg| d¡d	� |d jddgddg| d¡d	� |d j	t  
d¡| d¡d� |d jt  
d¡t  
d¡| d¡d� d S )NrÄ   rÅ   rÆ   rÁ   r   r2   r3   rp   rN  r  r  r‰   rr   r©  rç   r¾  )r]   rþ   r   r}   ry   rŠ   r-  r4   rk  ri  rb   r  )r   r   r¥   r<  r    r    r!   Útest_2dcolor_plot¦  s    
","&
"""rê  c                 C   s~   t  ddt j d¡}t  |¡}|jddddd�}|jD ]}| ||¡ q6| jddddd�}|jD ]}| ¡  | ||¡ q`d S )NrS  r3   rU  Tr:  )r]   rb   rÐ   rÏ   r   r;  r}   r)  )r   r   r,   r-   r<  r   r    r    r!   Útest_shared_axes_clearº  s    


rë  c                  C   sª   t jddddd�\} }|jD ]}| ddgd¡ q|d  dddd	g¡ |jD ]}| ¡ |d  ¡ ksNt‚qN|d  dddd
g¡ |jD ]}| ¡ |d  ¡ ksˆt‚qˆd S )Nr3   rƒ  r:  r   zo-r�  rN  r2   r�   r  )	r#   r   r;  r}   rƒ  r   r&   r„  r€   rÇ  r    r    r!   Útest_shared_axes_retickÉ  s    


rì  r?   rI   rP   r<   c                 C   sD   t ƒ }| ¡ }|jdd| d� |j d¡ |j ¡  ¡ | ks@t‚d S )NÚtestr2   r>   r<   )r   r   r%   rT   Zset_label_positionrR   rs  r&   )r?   r(   r   r    r    r!   Útest_ylabel_ha_with_positionØ  s
    rî  c                  C   sÀ   t  ¡ } ddgddg }}|  ||¡}|  |¡}|d j|d |d fksNt‚|d  ¡ dksbt‚|d  ¡ dksvt‚|d j|d |d fks”t‚|d  ¡ dks¨t‚|d  ¡ dks¼t‚d S )	Nr2   r3   r‰   éüÿÿÿr   rP   rH   r8   ©r#   r  r  Ú	bar_labelr]  r&   rs  rt  ©r   r'  Zheightsr$  ro  r    r    r!   Ú test_bar_label_location_verticalá  s    
ró  c                  C   sÈ   t  ¡ } |  ¡  ddgddg }}|  ||¡}|  |¡}|d j|d |d fksVt‚|d  ¡ dksjt‚|d  ¡ dks~t‚|d j|d |d fksœt‚|d  ¡ dks°t‚|d  ¡ dksÄt‚d S )	Nr2   r3   r‰   rï  r   rP   r8   rH   )	r#   r  r  r  rñ  r]  r&   rs  rt  rò  r    r    r!   Ú*test_bar_label_location_vertical_yinvertedî  s    
rô  c                  C   sÀ   t  ¡ } ddgddg }}|  ||¡}|  |¡}|d j|d |d fksNt‚|d  ¡ dksbt‚|d  ¡ dksvt‚|d j|d |d fks”t‚|d  ¡ dks¨t‚|d  ¡ dks¼t‚d S ©	Nr2   r3   r‰   rï  r   rI   rP   r<   ©r#   r  r  rñ  r]  r&   rs  rt  ©r   r(  r;  r$  ro  r    r    r!   Ú"test_bar_label_location_horizontalü  s    
rø  c                  C   sÈ   t  ¡ } |  ¡  ddgddg }}|  ||¡}|  |¡}|d j|d |d fksVt‚|d  ¡ dksjt‚|d  ¡ dks~t‚|d j|d |d fksœt‚|d  ¡ dks°t‚|d  ¡ dksÄt‚d S rõ  )	r#   r  r  r  rñ  r]  r&   rs  rt  r÷  r    r    r!   Ú,test_bar_label_location_horizontal_yinverted	  s    
rù  c                  C   sÈ   t  ¡ } |  ¡  ddgddg }}|  ||¡}|  |¡}|d j|d |d fksVt‚|d  ¡ dksjt‚|d  ¡ dks~t‚|d j|d |d fksœt‚|d  ¡ dks°t‚|d  ¡ dksÄt‚d S ©	Nr2   r3   r‰   rï  r   r<   rP   rI   )	r#   r  r  r  rñ  r]  r&   rs  rt  r÷  r    r    r!   Ú,test_bar_label_location_horizontal_xinverted  s    
rû  c                  C   sÐ   t  ¡ } |  ¡  |  ¡  ddgddg }}|  ||¡}|  |¡}|d j|d |d fks^t‚|d  ¡ dksrt‚|d  	¡ dks†t‚|d j|d |d fks¤t‚|d  ¡ dks¸t‚|d  	¡ dksÌt‚d S rú  )
r#   r  r  r  r  rñ  r]  r&   rs  rt  r÷  r    r    r!   Ú-test_bar_label_location_horizontal_xyinverted%  s    
rü  c                  C   s¬   t  ¡ } ddgddg }}|  ||¡}| j|dd�}|d jdksFt‚|d  ¡ dksZt‚|d  ¡ dksnt‚|d jdks€t‚|d  ¡ dks”t‚|d  ¡ dks¨t‚d S )	Nr2   r3   r‰   rï  rP   ©Z
label_typer   r®  rö  r÷  r    r    r!   Útest_bar_label_location_center4  s    rþ  z%test_centered_bar_label_nonlinear.svgc                  C   sT   t  ¡ \} }| dddgdddg¡}| d¡ | dd ¡ |j|d	d
� | ¡  d S )Nr6   r—  r‚   rä  iˆ  iX  rå   r2   rP   rý  )r#   r   r  rT  rn  rñ  rs  )rv  r   rb  r    r    r!   Ú!test_centered_bar_label_nonlinearA  s    
rÿ  c                  C   sÌ   t  ¡ } ddgddg }}| j||dd�}|  |¡}|d j|d |d d fksVt‚|d  ¡ dksjt‚|d  ¡ dks~t‚|d j|d |d d fks t‚|d  ¡ dks´t‚|d  ¡ d	ksÈt‚d S )
Nr2   r3   r‰   rï  ©r¯  r   rP   rH   r8   rð  rò  r    r    r!   Ú!test_bar_label_location_errorbarsK  s    
""r  r¿   rq  z{:.2f}c                 C   sV   t  ¡ }| ddgddg¡}|j|| d�}|d  ¡ dks>t‚|d  ¡ dksRt‚d S )	Nr2   r3   r‰   rï  r&  r   z3.00z-4.00©r#   r  r  rñ  rC  r&   )r¿   r   r$  ro  r    r    r!   Útest_bar_label_fmtX  s
    r  c               	   C   sH   t  ¡ } |  ddgddg¡}tjtdd�� | j|dd�}W 5 Q R X d S )	Nr2   r3   r‰   rï  zstr or callabler  rr   r&  )r#   r  r  rŠ   r‹   rŒ   rñ  )r   r$  rv  r    r    r!   Útest_bar_label_fmt_errorc  s    r  c                  C   sZ   t  ¡ } |  ddgddg¡}| j|ddgd�}|d  ¡ dksBt‚|d  ¡ dksVt‚d S )	Nr2   r3   r‰   rï  r^  r_  r�  r   r  )r   r$  ro  r    r    r!   Útest_bar_label_labelsj  s
    r  c                  C   sl   t  ¡ } |  ddgtjdg¡}|  |¡}dd„ |D ƒddgksBt‚|d jd	ksTt‚|d  ¡ d
ksht‚d S )Nr3   r‰   r2   c                 S   s   g | ]}|  ¡ ‘qS r    rê  ©r™   r\  r    r    r!   rœ   v  s     z,test_bar_label_nan_ydata.<locals>.<listcomp>r±   Ú1r   rî  rH   )	r#   r  r  r]   r  rñ  r&   r]  rt  ©r   ra  ro  r    r    r!   Útest_bar_label_nan_ydatar  s    
r	  c                  C   st   t  ¡ } |  ¡  |  ddgtjdg¡}|  |¡}dd„ |D ƒddgksJt‚|d jd	ks\t‚|d  	¡ d
kspt‚d S )Nr3   r‰   r2   c                 S   s   g | ]}|  ¡ ‘qS r    rê  r  r    r    r!   rœ   €  s     z5test_bar_label_nan_ydata_inverted.<locals>.<listcomp>r±   r  r   rî  rH   )
r#   r  r  r  r]   r  rñ  r&   r]  rt  r  r    r    r!   Ú!test_bar_label_nan_ydata_inverted{  s    
r
  c                  C   sJ  t  ¡ \} }|jdddgtjddgdddgd�}| |¡}dd	„ |D ƒd
ddgksVt‚t | ¡ d¡sjt‚t  ¡ \} }|jdddgdddgdtjdgd�}| |¡}dd	„ |D ƒdddgksÀt‚t | ¡ d¡sÔt‚t  ¡ \} }|jdddgtjddgtjtjdgd�}| |¡}dd	„ |D ƒd
ddgk�s0t‚t | ¡ d¡�sFt‚d S )Nr2   r3   r‰   rÅ   rE  rå  r   c                 S   s   g | ]}|  ¡ ‘qS r    rê  r  r    r    r!   rœ   ‰  s     z&test_nan_barlabels.<locals>.<listcomp>r±   r  Ú2)rS  rõ  r   c                 S   s   g | ]}|  ¡ ‘qS r    rê  r  r    r    r!   rœ   �  s     rþ  )rN  rõ  c                 S   s   g | ]}|  ¡ ‘qS r    rê  r  r    r    r!   rœ   •  s     )	r#   r   r  r]   r  rñ  r&   rµ  r€   )r(   r   ra  ro  r    r    r!   Útest_nan_barlabels…  s    $
$
(
r  c               	   C   sr   t  ¡ \} }| tjdddddd�¡ dt dtj d	 ¡d
  }tj 	t 
d|d  d|d f¡|jjd¡ d S )N)r   rp   rá  rŒ  rC  rÄ   r,  gffffffþ?rÈ   rm  r3   gÍÌÌÌÌÌà¿r&  rw  )r#   r   r{  r|  ZWedger]   rÏ   rÐ   r©   Zassert_array_almost_equal_nulprþ   ZdataLimre  )r(   r   Zbotr    r    r!   Útest_patch_bounds™  s      ÿr  c                	   C   s8   t jtdd��  tjdgdgddddd� W 5 Q R X d S )	Nz!You passed a edgecolor/edgecolorsr  r   rÕ  r€  r¨  r—  )rk   rc  rë   rì   )rŠ   r-  rª  r#   r4   r    r    r    r!   Ú test_warn_ignored_scatter_kwargs¡  s    ÿr  c               	      s(  t  ¡ \} ‰ ‡ fdd„tdƒD ƒ}ˆ  t d¡t d¡¡}ˆ  t d¡¡}ˆ  t	 
ddd¡¡}ˆ  ddd¡}tˆ jƒ|gks€t‚tˆ jƒ|gks”t‚tˆ jƒ|ks¦t‚tˆ jƒ|gksºt‚ˆ jrÄt‚tˆ jƒ|gksØt‚ˆ jd |d ksît‚ˆ jd	 |d	 k�st‚tjtd
d�� ˆ jt|ƒd   W 5 Q R X ˆ jdddg |d•k�sPt‚dddgˆ j d|•k�snt‚ˆ jd |d˜k�s†t‚dˆ j d|˜k�sžt‚| ¡  ˆ j�r²t‚| ¡  ˆ j�rÆt‚| ¡  ˆ j�rÚt‚ˆ j�ræt‚| ¡  ˆ j�rút‚ˆ jD ]}| ¡  �q tˆ jƒdk�s$t‚d S )Nc              	      s&   g | ]}ˆ   t ||d  ¡¡d ‘qS )rÁ   r   )r}   r]   rb   r  r  r    r!   rœ   ª  s     z(test_artist_sublists.<locals>.<listcomp>rQ  rÁ   )rÁ   rÁ   r�  r   r{  rp   zout of ranger  r2   r3   r‰   r  )r2   r3   r‰   )r2   r3   r‰   )r2   r3   r‰   )r2   r3   r‰   )r#   r   r­   r4   r]   rb   r{   r¥  r{  r|  r}  rE  r…  r!  r&   Zimagesr¦  rò   Ztablesrw  rŠ   r‹   Ú
IndexErrorr  r  )r(   r¦  rÅ  rH  rÚ   rE  r  r    r  r!   Útest_artist_sublists¨  s@    

r  c                  C   sh   t  d¡} t  d¡}t ¡ \}}| | |¡}t|ƒdks<t‚t ¡ \}}| g g ¡}t|ƒdksdt‚d S )Nrr   )rr   r   r   r2   )r]   rw   r#   r   r}   r  r&   )r,   r-   rv  r   rd  r    r    r!   Útest_empty_line_plotsÖ  s    

r  z
fmt, match))rÓ  z?'f' is not a valid format string \(unrecognized character 'f'\))zo+z9'o\+' is not a valid format string \(two marker symbols\))z:-z;':-' is not a valid format string \(two linestyle symbols\))Zrkz7'rk' is not a valid format string \(two color symbols\))z:o-rz=':o-r' is not a valid format string \(two linestyle symbols\)Ústringc              	   C   sV   t  ¡ \}}|d k	r | dd¡}tjtd| d d�� |jd| |d� W 5 Q R X d S )NÚnotzneither a data key norz\Az\Zr  r  r¶  )r#   r   ÚreplacerŠ   r‹   r*  r}   )r¿   r  r[  r(   r   r    r    r!   Útest_plot_format_errorsä  s
    	r  c                  C   s~  t  ¡ \} }| dddgd¡}|d  ¡ dks2t‚|d  ¡ dksFt‚t  ¡ \} }| dddgd¡}|d  ¡ dksxt‚t  ¡ \} }| ddgddgdd¡}| j ¡  |d  ¡ dksºt‚| ¡ d  	¡ dksÒt‚t  ¡ \} }| ddgddgdd¡}| j ¡  |d  ¡ dk�st‚| ¡ d  	¡ dk�s0t‚t  ¡ \} }| dddgd	¡}|d  ¡ d
k�sdt‚|d  ¡ dk�szt‚d S )Nr2   r3   r‰   z1.0r   )r£   r£   r£   r£   r  r  Zk3rÌ   rD  )
r#   r   r}   r  r&   r¸  rF  rØ   rˆ  rC  r¨  r    r    r!   Útest_plot_formatô  s*    

r  c                  C   sâ   t  ¡ \} }|jddddid� | ¡ }| j ¡  | ¡ d  ¡ dksJt‚| 	¡ d  ¡ dksbt‚t  ¡ \} }|jdddddid� | ¡ }| j ¡  | ¡ d  ¡ dks®t‚| 
¡ d  ¡ dksÆt‚| 	¡ d  ¡ dksÞt‚d S )Nr‚   r—  rŒ  r3   r¶  r   r6   )r#   r   r}   rB   rF  rØ   Z	get_textsrC  r&   rˆ  r˜  )r(   r   Úlegr    r    r!   Útest_automatic_legend   s    

r  c                	   C   s  t jtdd�� tjdddgdd� W 5 Q R X t jtdd��6 tjdddgdddgdddgdddgd	d
gd� W 5 Q R X t jtdd�� t dddgdg¡ W 5 Q R X t jtdd�� t t d¡¡ W 5 Q R X t jtdd�� tjddddddid� W 5 Q R X d S )Nz"plot\(\) got an unexpected keywordr  r2   r3   r‰   r  zplot\(\) with multiple groupsrç   r  r  rÑ  zx and y must have same firstzx and y can be no greater than)r3   r3   r3   zUsing arbitrary long args withr‚   r—  r6   rŒ  r¶  )rŠ   r‹   rŒ   r#   r}   r*  r]   rw   r    r    r    r!   Útest_plot_errors   s    :r  c               	   C   s²   t  ¡  ¡ } t| jtdƒtdƒtdƒd�t| jddgddggƒt| jddgddggƒt| jddgddggƒt| j	ddgddggƒfD ](}d}||d�j
}|j|jf|ks„t‚q„d S )Nr‰   rN  r   r2   r3   )r¹  rË  )Úclim)r#   r®   r”   r   r4   r­   r{   rb  rP  rÄ  r)  r  r  r&   )r   Zplot_methodr  r)  r    r    r!   Ú	test_clim*   s    ûr  c                  C   s€   ddgddgddgddgg} t jjt jjt jjt jjg}t  | |¡}t ¡ \}}| t 	|¡¡ | 
¡  | ¡ d dks|t‚d S )Nrp   r   r2   rN  )Úmpathrð   rô   ZCURVE3Z	CLOSEPOLYr#   r   r{  r|  ró   r  r€   r&   )r3  ÚcodesrÍ   r(   r   r    r    r!   Útest_bezier_autoscale8   s    ýýr  c               ‡   C   s  t  ddgddgddgddgddgddgddgddgddgddgddgddgddgddgd	dgd	dgd
dgd
dgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgdd gd!d gd!d"gd#d"gd#d$gd%d$gd%d&gd'd&gd'd(gd)d(gd)d*gd+d*gd+d,gd-d,gd-d.gd/d.gd/d0gd1d0gd1d2gd3d2gd3d4gd5d4gd5d2gd6d2gd6d4gd.d4gd.d7gd8d7gd8d0gd9d0gd9d:gd;d:gd;d*gd<d*gd<d(gd=d(gd=d&gd>d&gd>d$gd?d$gd?d@gdAd@gdAd gdBd gdBdgdCdgdCdgdDdgdDdEgdFdEgdFdGgdHdGgdHdgdIdgdIdgdJdgdJdgdKdgdKdgdLdgdLdgdMdgdMdgdNdgdNdgdOdgdOdgdPdgdPdgdQdgdQdgdRdgdRdgdSdgdSdgdTdgdTdgdUdgdUdgdVdgdVdgdWdgdWdgdXdgdXdgg„¡} t  | d d …dYf ¡}t  | d d …dZf ¡}t  | d d …dYf ¡}t  | d d …dZf ¡}t | ¡}t ¡ \}}| t	 
|¡¡ | ¡  | ¡ dY |k�s¾t‚| ¡ dZ |k�sÔt‚| ¡ dY |k�sêt‚| ¡ dZ |k�s t‚d S )[NgÍÌÌÌÌÌÀrS  g)\�Âõ(Àg…ëQ¸…Àgáz®GáÀg=
×£p=Àgš™™™™™Àgö(\�ÂõÀgR¸…ëQÀg®Gáz®Àg
×£p=
ÀgÍÌÌÌÌÌÀg…ëQ¸…Àg=
×£p=Àgö(\�Âõ
Àg®Gáz®	ÀrU  gffffffÀg…ëQ¸Àg×£p=
×Àrà  g�Âõ(\�Àg{®Gáz¤?gHáz®GÀg      ÀrÁ  g¸…ëQ¸ Àg{®Gáz´?gáz®Gáþ¿rÄ   gR¸…ëQü¿rº  gÃõ(\�Âù¿gìQ¸…ëÁ?g333333÷¿gÃõ(\�ÂÅ?gÍÌÌÌÌÌô¿rá   g=
×£p=ò¿g)\�Âõ(Ì?g\�Âõ(\ï¿rØ  g=
×£p=ê¿gHáz®GÑ?g…ëQ¸å¿g�Âõ(\�Ò?rN  rÆ   gÃõ(\�ÂÕ¿g{®GázÔ?g
×£p=
Ç¿r…  g{®Gáz”¿g¤p=
×£À?g×£p=
×Ó?rÞ  g…ëQ¸…ã?gìQ¸…ëÑ?ç¤p=
×£è?gÃõ(\�Âí?gq=
×£pñ?r`  g�Âõ(\�ö?rƒ  g…ëQ¸ù?g®Gáz®û?g=
×£p=þ?gffffff @rÏ  g®Gáz®@r&  gö(\�Âõ@g=
×£p=@g…ëQ¸…@gÍÌÌÌÌÌ@g®Gáz@g\�Âõ(\	@g¤p=
×£
@gìQ¸…ë@g333333@g{®Gáz@gÃõ(\�Â@g…ëQ¸…@g)\�Âõ(@gÍÌÌÌÌÌ@gq=
×£p@g®Gáz@g¸…ëQ¸@r   r2   )r]   rþ   rk  rn  r  rð   r#   r   r{  r|  ró   r  r   r&   r€   )r3  ZminxZminyZmaxxZmaxyrÍ   r(   r   r    r    r!   Útest_small_autoscaleM   s$                                                                                                         â!
r   c                  C   sb   t  ¡ \} }| t d¡¡ tdƒD ]8}| ¡ |  ¡ |› ksBt‚| 	¡ |  ¡ |› ks$t‚q$d S )Nrr   )
r#   r   r}   r]   rb   r­   r˜  rC  r&   rˆ  )r(   r   r¢  r    r    r!   Útest_get_xticklabel�   s
    r!  c                  C   sÖ   t jdtd�} t  dddg¡}t  dgd ¡}t j| d< t ¡ \}}|j| ||d�}|j| ||d	�}||fD ]d}|^}}	t  	|j
¡  ¡ sŽt‚t  	| ¡ ¡s t‚|	D ]*}
t  	|
j
¡ ¡ s¼t‚t  	|
 ¡ ¡s¤t‚q¤qld S )
Nr‰   rF  rž   r�   rÃ   r  r   r€  rè  )r]   rb   rI  rþ   r¤  r#   r   r  r  Úisfiniter]  Úanyr&   Z	get_widthrƒ  )ZbarxZ
barheightsZ	barstartsr(   r   ra  ZhbarsZbar_setZnanfulÚrestr—  r    r    r!   Útest_bar_leading_nan‰   s    
r%  c                 C   sh   t j d¡ |  ¡ }| ¡ }| tjgtjg¡ | dgdg¡ | dgdg¡ ¡  | dgdg¡ d S )Nr�   r2   )r�   r‘   r’   r   r  r]   r  r  r6  r    r    r!   Útest_bar_all_nan¡   s    r&  zextent_units.pngc               	   C   s„  t  dd¡\} }t dd¡}t dd¡}dd„ tdƒD ƒ}|d  d	¡ |d j|d
dd||gtjd d�}|d  d¡ |d j|d
||ddgtjd d�}|d j	 
t d¡¡ |d j|d
||||gtjd d�}|d j	 
t d¡¡ |d jdd� |d j|d
tjd d�}| ||||g¡ |d j	 
t d¡¡ |d jdd� tjtdd�� |jdd||gdd� W 5 Q R X d S )Nr3   z
2020-01-01rÅ  z
2020-01-11c                    s"   g | ]‰ ‡ fd d„t dƒD ƒ‘qS )c                    s   g | ]}|ˆ  ‘qS r    r    r  ©rP  r    r!   rœ   ³   s     z0test_extent_units.<locals>.<listcomp>.<listcomp>rr   )r­   )r™   r    r'  r!   rœ   ³   s     z%test_extent_units.<locals>.<listcomp>rr   r�  zDate extents on y axisrj   r2   rL  Zplasma)rl   rç  rn   r|  z(Date extents on x axis (Day of Jan 2020)z%drT  zDay of Jan 2020)r÷  rÇ  )rl   rn   z set_extent\(\) got an unexpectedr  rg  F)rw  )r#   r   r]   rº  r­   r/   r{   r�   ry  rQ   r·   rœ  ZDateFormatterr~   Z
set_extentrŠ   r‹   rŒ   )rv  r<  Z
date_firstZ	date_lastZarrrH  r    r    r!   Útest_extent_units®   s@    
þ
þ ÿýÿr(  c                  C   sŽ   t  ¡ \} }| g g g g ¡}| dgg¡}||g D ] }|j|ksFt‚|j| ks4t‚q4| ¡  ||g D ] }|jd kszt‚|jd ksht‚qhd S r¡  )r#   r   r}   r{   r  r&   r®   r)  )r(   r   r¦  r  Úartr    r    r!   Ú%test_cla_clears_children_axes_and_figÑ   s    r*  c               	   C   sF   dd„ } d}t jt|d��" d}tjjj|d i d| d� W 5 Q R X d S )Nc                   S   s   dS r  r    r    r    r    r!   r  à   s    z5test_scatter_color_repr_error.<locals>.get_next_colorzZ'c' argument must be a color, a sequence of colors, or a sequence of numbers, not 'red\\n'r  zred
r3   r5  )rŠ   r‹   r*  r�   r  r   r#  )r  Úmsgr6   r    r    r!   Útest_scatter_color_repr_errorÞ   s    ÿ    ÿr,  c               	   C   sR   t  ¡ \} }| d¡ |jtdƒddd�\}t ¡ �}| j|dd� W 5 Q R X d S )NrÁ   Tr2   )rä  rx  ru  )rð  )r#   r   Zset_rasterization_zorderr}   r­   rò  ró  rô  )r(   r   r  r—  r    r    r!   Ú&test_zorder_and_explicit_rasterizationì   s
    

r-  c                  C   sf   dt jd< dt jd< dt jd< t ¡ } | jj ¡ dks:t‚| jj ¡ dksNt‚| jj 	¡ dksbt‚d S )Nr–  zaxes.labelcolorrÊ  zaxes.labelsizer�  zaxes.labelweight)
r�   r¬   r#   r  rQ   r*   r  r&   Zget_fontsizeZget_fontweightr  r    r    r!   Útest_rc_axes_label_formattingô   s    


r.  )Nr3   (r  r!  r!  r   rš  r¤  r   Ú	functoolsr   r�  rò  Ú	itertoolsr   Úplatformr„  r   Zdateutil.tzrO  Únumpyr]   r   r	   rŠ   rN   r�   r
   Zmatplotlib._apir   Zmatplotlib.colorsr~  r+  Zmatplotlib.datesrR  rœ  Zmatplotlib.figurer   Zmatplotlib.axesr   Zmatplotlib.font_managerZfont_managerZmfont_managerZmatplotlib.markersr�  rË  Zmatplotlib.patchesrò   r|  Zmatplotlib.pathrï   r  Zmatplotlib.projections.geor   Zmatplotlib.projections.polarr   Zmatplotlib.pyplotZpyplotr#   Zmatplotlib.textrE  r„  Zmatplotlib.tickerZtickerr¸   Zmatplotlib.transformsZ
transformsr$  Zmpl_toolkits.axisartistZ
axisartistry  Znumpy.testingr   r   r   Zmatplotlib.testing.decoratorsr   r   r   r"   r)   r1   rG   rM   rO   rU   rg   r…   rŽ   r•   r°   r½   rÀ   rÖ   rÞ   r,  r-  rø   r  r  r  r0  r4  r7  r>  r‘   r.  rE  rL  rO  rR  re  rt  rw  rz  r€  rŠ  r£  r¬  r²  r·  r½  rÆ  rÉ  rÕ  rß  râ  ré  rì  rò  rþ  r  r  r	  r  r  r  Úmachiner%  r-  r4  r¥  rb   r7  r:  rB  rI  rP  rU  r\  rc  rr  rt  r  r�  r�  rž  r¦  r«  r¯  r±  r²  r´  r¸  rÀ  rÊ  rÏ  rÙ  rÚ  rî  rï  rñ  rô  r÷  rü  r  r  r  r  r	  r  r  r  r  r&  r'  r(  r/  r9  r>  rI  rT  rW  rZ  rc  rd  rg  rj  ro  rr  rt  rz  r{  r†  rŠ  rŒ  rŽ  r�  r’  r”  ZPatchrx  r¦  rª  r–  r­  r±  r¹  rº  r½  r¿  rÁ  rÃ  rÄ  rÎ  rÔ  r×  rÙ  rÝ  rá  rå  ræ  rè  ré  r/  r0  rþ   r2  rÑ  r4  r6  r=  r@  rE  rG  rH  rN  rU  r_  ra  re  rg  rm  rp  rr  rs  rv  ry  r{  r}  r~  r  r€  r�  r‚  rƒ  r…  r‡  rˆ  r‰  rŠ  r‹  r�  rŽ  r�  r�  r‘  r›  rœ  rž  r   r¡  r£  r¨  r¬  r±  r³  r´  r·  r¹  r½  rÅ  rÈ  rÉ  rÊ  rÍ  rÐ  rÑ  rÓ  rÔ  rÕ  rÖ  r×  rÙ  rÚ  rÜ  rÝ  rà  râ  rä  rç  ré  rí  rö  rþ  r  r  r	  r  r  r  r  r  r  r!  r#  r%  r*  r.  r0  r2  r3  r5  r@  rJ  rN  rR  rS  rT  rU  rV  rW  r]  r^  r`  ra  re  rf  rh  ri  rp  rr  rs  rt  rv  ry  r{  r  r‚  rƒ  r‹  rŒ  r�  r‘  r•  r—  rš  r›  rž  r   r¢  r¥  r§  r«  r¯  r±  r²  r¼  r¿  rÁ  rÂ  r  r¶  rÃ  rÉ  rÍ  rÎ  rç  ré  rë  rï  rò  ró  rû  rü  rþ  rÿ  r  r  r  r  r  r#  r$  r¤  rd   rÛ  rá  r*  r+  r4  r5  r9  r<  rŒ   r*  rH  r?  r@  rC  rE  rH  rY  r^  rc  re  rf  rh  rj  rk  rx  ry  r}  r€  r‚  r‰  rŒ  rŽ  r�  r“  r”  r•  r—  rš  rœ  rž  rŸ  r   r¢  r¥  r¦  r§  r©  rª  r¬  r¯  r°  r±  r½  r¾  rÂ  rÃ  r™  Z	AxesImager­   ZPcolorImager^   ZQuadMeshry   r“   rÆ  rÈ  rÉ  rÊ  rÌ  rÍ  rÏ  rÒ  rÓ  rÔ  rÕ  r×  rØ  Zfixturerà  râ  rã  rä  ræ  rç  rè  rì  rí  rð  ró  rô  r÷  rù  rú  rû  rþ  r  r  r  r  r	  r
  r  r  r  r   r'  r(  r,  r.  r/  r2  r7  r9  r:  r?  r@  rC  rF  rM  rO  rP  rR  rT  rU  rV  rW  rX  rY  r[  r\  rb  rp  rs  ru  rx  rz  r}  r  r�  r„  r…  r†  r‡  rˆ  r’  r“  r”  r•  r—  r˜  r›  r   r²  rµ  r·  r»  r¼  r¾  rÁ  rÂ  rÄ  rÅ  rÆ  rÇ  rÈ  rÍ  rÎ  rÑ  rÒ  rÓ  rÔ  rÕ  rÖ  rÛ  rÜ  rÞ  rá  râ  rã  rä  Zfont_scalingsræ  rç  ré  rê  rë  rì  rî  ró  rô  rø  rù  rû  rü  rþ  rÿ  r  rð  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r   r!  r%  r&  r(  r*  r,  r-  r.  r    r    r    r!   Ú<module>   s`	  	











ü
'
*
43













	

!








 ÿ











ÿ

 þ



ýýû
ýýû

 ÿ





ÿ
!
	

!






!$






	
* ÿ* ÿ  ÿúþ	





þÿü


þÿ

þÿ
+




 þ  "ÿ"ÿ"ÿ"ÿ6ÿ÷þ	öþ,
 
 ÿþþþþ	üý	ýýýýýýýýýýýý
ýýýýýþþ ÿ	ý	ÿþ  þ>  ÿ  ÿ


  ÿ	ÿ
	
	
	


	
	
	
	
	
	


	
			

	
	6ÿ!
.
+þ

		



ÿA
ÿ




+
ý*

	ÿÿ&ÿ& ÿ
 ÿ  ý  ÿ  ý! ÿ  ý"
	 þù÷
 

,ÿ
ý

ÿ

ÿ
ÿÿÿøÿ


 ÿ
	



$
ÿÿ÷
""
ÿ"ÿúÿ *ÿ

!	

			

ýýû	



!
$	 ÿ
.'
	



ÿ
		


	
  ÿ	

.4
"
