§
    ‡Ûg[  ã                   óÂ  — 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
mZ d„ Zd„ Z e	dgddd	g¬
¦  «        d„ ¦   «         Z e	dgddd¬¦  «        d„ ¦   «         Z e	dgddd¬¦  «        d„ ¦   «         Z e	dgdd¬¦  «        d„ ¦   «         Z e	dgddd¬¦  «        d„ ¦   «         Z e	dgddd¬¦  «        d„ ¦   «         Z e	dgddd¬¦  «        d„ ¦   «         Zd„ Zd„ Zd „ ZdS )!é    N)Úassert_array_almost_equal)Úimage_comparisonc                  ót   — t           j        ddd…ddd…f         \  } }d|dz  z
  | z   }d|z   | dz  z
  }|| ||fS )Néýÿÿÿé   y              Y@y              i@éÿÿÿÿé   é   )ÚnpÚmgrid)ÚYÚXÚUÚVs       úV/granary/edev/quantum/lib/python3.11/site-packages/matplotlib/tests/test_streamplot.pyÚvelocity_fieldr   	   sS   € ÝŒ8�B�q˜�I˜r ! D˜yÐ(Ô)�D€A€qØ
ˆQ�‰T‰	�A‰€AØ	ˆA‰��1‘‰€AØˆa��Aˆ:Ðó    c                  óZ  — t          j        ddd¦  «        } t          j        ddd¦  «        }t          j        | |¦  «        \  }}d}t          j        |¦  «        | z  t          j        |¦  «        |z  z
  }t          j        |¦  «        | z  t          j        |¦  «        |z  z   }| |||fS )Ng      Àg      @éÈ   éd   gš™™™™™¹?)r   ÚlinspaceÚmeshgridÚcosÚsin)ÚxÚyr   r   Úar   r   s          r   Úswirl_velocity_fieldr      sš   € Ý
Œ�C˜˜SÑ!Ô!€AÝ
Œ�C˜˜SÑ!Ô!€AÝŒ;�q˜!ÑÔ�D€A€qØ€AÝ
Œˆq‰	Œ	�a�RÑ�2œ6 !™9œ9 q™=Ñ(€AÝ
Œˆq‰	Œ	�a�RÑ�2œ6 !™9œ9 q™=Ñ(€AØˆa��Aˆ:Ðr   Ústreamplot_startpointsTÚmpl20Úpng)Úremove_textÚstyleÚ
extensionsc                  ó  — t          ¦   «         \  } }}}t          j        t          j        |                      ¦   «         |                      ¦   «         d¦  «        t          j        |                     ¦   «         |                     ¦   «         d¦  «        ¦  «        \  }}t          j        |                     ¦   «         |                     ¦   «         g¦  «        }t          j	        | ||||¬¦  «         t          j
        ||d¦  «         d S )Né   )Ústart_pointsÚok)r   r   r   r   ÚminÚmaxÚcolumn_stackÚravelÚpltÚ
streamplotÚplot)r   r   r   r   Ústart_xÚstart_yr'   s          r   Útest_startpointsr2      sÉ   € õ  Ñ!Ô!�J€A€qˆ!ˆQÝ”{¥2¤;¨q¯uªu©w¬w¸¿º¹¼ÀÑ#CÔ#CÝ#%¤;¨q¯uªu©w¬w¸¿º¹¼ÀÑ#CÔ#CñEô EÑ€GˆWå”? G§M¢M¡O¤O°W·]²]±_´_Ð#EÑFÔF€LÝ„N�1�a˜˜A¨LÐ9Ñ9Ô9Ð9Ý„HˆW�g˜tÑ$Ô$Ð$Ð$Ð$r   Ústreamplot_colormapgºI+‡–?)r"   r#   Útolc            
      ó¨   — t          ¦   «         \  } }}}t          j        | ||||ddt          j        j        ¬¦  «         t          j        ¦   «          d S )Ng333333ã?r	   )ÚcolorÚdensityÚ	linewidthÚcmap)r   r-   r.   ÚcmÚautumnÚcolorbar)r   r   r   r   s       r   Útest_colormapr=   %   sT   € õ  Ñ!Ô!�J€A€qˆ!ˆQÝ„N�1�a˜˜A Q°¸qÝœœð'ñ 'ô 'ð 'å„L�N„N€N€N€Nr   Ústreamplot_linewidthgü©ñÒMb`?c            	      ó  — t          ¦   «         \  } }}}t          j        ||¦  «        }d|z  |                     ¦   «         z  }t	          j        ¦   «                              ¦   «         }|                     | |||ddgd|¬¦  «         d S )Nr&   g      à?r
   Úk)r7   r6   r8   )r   r   Úhypotr*   r-   ÚfigureÚsubplotsr.   )r   r   r   r   ÚspeedÚlwÚaxs          r   Útest_linewidthrG   .   s}   € õ  Ñ!Ô!�J€A€qˆ!ˆQÝŒH�Q˜‰NŒN€EØ	
ˆU‰�U—Y’Y‘[”[Ñ	 €BÝ	Œ‰Œ×	Ò	Ñ	 Ô	 €BØ‡M‚M�!�Q˜˜1 s¨A h°cÀR€MÑHÔHÐHÐHÐHr   Ústreamplot_masks_and_nans)r"   r#   c            	      óè  — t          ¦   «         \  } }}}t          j        |j        t          ¬¦  «        }d|dd…dd…f<   t          j        |d d…d d…f<   t          j                             ||¬¦  «        }t          j	        ¦   «          
                    ¦   «         }t          j        d	¬
¦  «        5  |                     | ||||t          j        j        ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)Údtyper
   é(   é<   éP   éx   é   )ÚmaskÚignore)Úinvalid)r6   r9   )r   r   ÚzerosÚshapeÚboolÚnanÚmaÚarrayr-   rB   rC   Úerrstater.   r:   ÚBlues)r   r   r   r   rP   rF   s         r   Útest_masks_and_nansr[   8   s!  € õ  Ñ!Ô!�J€A€qˆ!ˆQÝŒ8�A”G¥4Ð(Ñ(Ô(€DØ€DˆˆBˆ��3�ˆÑÝ”&€A€c€r€cˆ3ˆBˆ3€h�KÝ
Œ�Š�A˜DˆÑ!Ô!€AÝ	Œ‰Œ×	Ò	Ñ	 Ô	 €BÝ	Œ˜XÐ	&Ñ	&Ô	&ð >ð >Ø
�Š�a˜˜A˜q¨µ´´ˆÑ=Ô=Ð=ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >ð >ð >s   Â/+C'Ã'C+Ã.C+zstreamplot_maxlength.pngg‡ÙÎ÷SÓ?c            
      óf  — t          ¦   «         \  } }}}t          j        ¦   «                              ¦   «         }|                     | |||dddggdd¬¦  «         |                     ¦   «         d         |                     ¦   «         d         cxk    rdk    sn J ‚|                     dd	¬
¦  «         d S )Nç      $@ç        ç      ø?r	   )Ú	maxlengthr'   r8   r7   r   r   ©Ngž\‚bw
@©Ng‡ËÇi @©ÚxlimÚylim©r   r-   rB   rC   r.   Úget_xlimÚget_ylimÚset©r   r   r   r   rF   s        r   Útest_maxlengthrk   E   s½   € õ &Ñ'Ô'�J€A€qˆ!ˆQÝ	Œ‰Œ×	Ò	Ñ	 Ô	 €BØ‡M‚M�!�Q˜˜1¨¸BÀ¸9¸+Ø qð ñ *ô *ð *à�;Š;‰=Œ=˜Ô §¢¡¤¨bÔ 1Ð6Ð6Ò6Ð6°QÒ6Ð6Ð6Ð6Ð6Ð6à‡F‚FÐ*Ð1J€FÑKÔKÐKÐKÐKr   z"streamplot_maxlength_no_broken.pngc                  óh  — t          ¦   «         \  } }}}t          j        ¦   «                              ¦   «         }|                     | |||dddggddd¬¦	  «	         |                     ¦   «         d         |                     ¦   «         d         cxk    rdk    sn J ‚|                     d	d
¬¦  «         d S )Nr]   r^   r_   r	   F)r`   r'   r8   r7   Úbroken_streamlinesr   r   ra   rb   rc   rf   rj   s        r   Útest_maxlength_no_brokenrn   Q   sÂ   € õ &Ñ'Ô'�J€A€qˆ!ˆQÝ	Œ‰Œ×	Ò	Ñ	 Ô	 €BØ‡M‚M�!�Q˜˜1¨¸BÀ¸9¸+Ø q¸Uð ñ Dô Dð Dà�;Š;‰=Œ=˜Ô §¢¡¤¨bÔ 1Ð6Ð6Ò6Ð6°QÒ6Ð6Ð6Ð6Ð6Ð6à‡F‚FÐ*Ð1J€FÑKÔKÐKÐKÐKr   zstreamplot_direction.pnggã¥›Ä °²?c                  ól   — t          ¦   «         \  } }}}t          j        | |||ddddggdd¬¦	  «	         d S )NÚbackwardr_   r^   r	   )Úintegration_directionr`   r'   r8   r7   )r   r-   r.   )r   r   r   r   s       r   Útest_directionrr   ]   sT   € õ &Ñ'Ô'�J€A€qˆ!ˆQÝ„N�1�a˜˜A°ZØ °°b°	¨{Ø¨ð+ñ +ô +ð +ð +ð +r   c                  óÄ  — t          j        ¦   «         } t          j        ddd¦  «        }t          j        ddd¦  «        }t          j        ||¦  «        \  }}t          j        ¦   «                              dd¦  «        | j        z   }t          j	        ||t          j
        |¦  «        t          j        |¦  «        |¬¦  «         t          | j        j        d	d
¬¦  «         d S )Néûÿÿÿé
   rO   éþÿÿÿé   é   é    )Ú	transform)rO   é   é   é   r
   )Údecimal)r-   Úaxesr   r   r   ÚmtransformsÚAffine2DÚ	translateÚ	transDataÚbarbsr   r   r   ÚdataLimÚbounds)rF   r   r   Útranss       r   Útest_streamplot_limitsrˆ   f   sÇ   € Ý	Œ‰Œ€BÝ
Œ�B˜˜BÑÔ€AÝ
Œ�B˜˜2ÑÔ€AÝŒ;�q˜!ÑÔ�D€A€qÝÔ Ñ"Ô"×,Ò,¨R°Ñ4Ô4°r´|ÑC€EÝ„Iˆa�•B”F˜1‘I”I�rœv a™yœy°EÐ:Ñ:Ô:Ð:õ ˜bœjÔ/°Ø&'ð)ñ )ô )ð )ð )ð )r   c                  óþ  — t          j        d¦  «        } t          j        d¦  «        }t          j        ddgddgg¦  «        }t          j        ddgddgg¦  «        }t	          j        t          d¬¦  «        5  t          j        ||| |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ddgddgg¦  «        }t          j        ddgddgg¦  «        }t	          j        t          d¬¦  «        5  t          j        ||| |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ddgddgg¦  «        }t          j        ddgddgg¦  «        }t          j        ||| |¦  «         t          j        ddg¦  «        }t          j        ddggg¦  «        }t	          j        t          d	¬¦  «        5  t          j        ||| |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d
¦  «        } t          j        d
¦  «        }t          j        g d¢¦  «        }t          j        g d¢¦  «        }t	          j        t          d¬¦  «        5  t          j        ||| |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        g d¢¦  «        }t          j        g d¢¦  «        }t	          j        t          d¬¦  «        5  t          j        ||| |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)r	   r	   ru   rO   r{   zThe rows of 'x' must be equal)Úmatchz The columns of 'y' must be equalr   z$'y' can have at maximum 2 dimensions©r   r   )r   ru   rO   )r   ru   r{   z!'y' values must be equally spaced)r   rO   rK   )r   rO   ru   z'y' must be strictly increasing)	r   ÚonesrS   rX   ÚpytestÚraisesÚ
ValueErrorr-   r.   )ÚuÚvr   r   s       r   Útest_streamplot_gridr’   t   s  € Ý
Œ�‰Œ€AÝ
Œ�ÑÔ€Aõ 	Œ�2�r�(˜R ˜HÐ%Ñ&Ô&€AÝ
Œ�2�r�(˜R ˜HÐ%Ñ&Ô&€Aå	Œ•zÐ)HÐ	IÑ	IÔ	Ið #ð #ÝŒ�q˜!˜Q Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #õ 	Œ�2�r�(˜R ˜HÐ%Ñ&Ô&€AÝ
Œ�2�r�(˜R ˜HÐ%Ñ&Ô&€Aå	Œ•zÐ)KÐ	LÑ	LÔ	Lð #ð #ÝŒ�q˜!˜Q Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #õ 	Œ�2�r�(˜R ˜HÐ%Ñ&Ô&€AÝ
Œ�2�r�(˜R ˜HÐ%Ñ&Ô&€AÝ„N�1�a˜˜AÑÔÐõ 	Œ�!�R�ÑÔ€AÝ
Œ�A�r�7�)�ÑÔ€Aå	Œ•zð *8ð 
9ñ 
9ô 
9ð #ð #åŒ�q˜!˜Q Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #õ
 	Œ�‰Œ€AÝ
Œ�ÑÔ€AÝ
Œ���ÑÔ€AÝ
Œ���ÑÔ€Aå	Œ•zÐ)LÐ	MÑ	MÔ	Mð #ð #ÝŒ�q˜!˜Q Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #õ 	Œ���ÑÔ€AÝ
Œ���ÑÔ€Aå	Œ•zÐ)JÐ	KÑ	KÔ	Kð #ð #ÝŒ�q˜!˜Q Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #sZ   Á8BÂB Â#B Ã6DÄDÄ!DÆ9GÇG!Ç$G!ÉI;É;I?ÊI?ËK2Ë2K6Ë9K6c            
      ó
  — t          j        t          j        d¦  «        t          j        d¦  «        t          j        dt          j        ¦  «        t          j        dt          j        ¦  «        t          j                             dd¦  «        ¬¦  «         t          j        t          d¦  «        t          d¦  «        t          j                             dd¦  «        t          j                             dd¦  «        ¦  «         d S )Nr   r‹   )r6   )	r-   r.   r   ÚarangeÚfullrV   ÚrandomÚrandÚrange© r   r   Útest_streamplot_inputsrš   ¢   s¸   € å„N•2”9˜Q‘<”<¥¤¨1¡¤Ý”7˜6¥2¤6Ñ*Ô*­B¬G°F½B¼FÑ,CÔ,CÝœŸš¨¨1Ñ-Ô-ð/ñ /ô /ð /õ „N•5˜‘8”8�U 1™XœXÝ”9—>’> ! QÑ'Ô'­¬¯ª¸¸1Ñ)=Ô)=ñ?ô ?ð ?ð ?ð ?r   )Únumpyr   Únumpy.testingr   r�   Úmatplotlib.pyplotÚpyplotr-   Úmatplotlib.testing.decoratorsr   Úmatplotlib.transformsÚ
transformsr€   r   r   r2   r=   rG   r[   rk   rn   rr   rˆ   r’   rš   r™   r   r   ú<module>r¢      sl  ðØ Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø €€€Ø Ð Ð Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ø +Ð +Ð +Ð +Ð +Ð +ðð ð ðð ð ð ÐÐ+Ð,¸$ÀgØ#˜Wð&ñ &ô &ð%ð %ñ&ô &ð%ð ÐÐ(Ð)°tÀ7Øðñ ô ðð ñô ðð ÐÐ)Ð*¸ÀGØðñ ô ðIð Iñô ðIð ÐÐ.Ð/Ø"¨'ð3ñ 3ô 3ð>ð >ñ3ô 3ð>ð ÐÐ-Ð.Ø"¨'°uð>ñ >ô >ðLð Lñ>ô >ðLð ÐÐ7Ð8Ø"¨'°uð>ñ >ô >ðLð Lñ>ô >ðLð ÐÐ-Ð.Ø"¨'°uð>ñ >ô >ð+ð +ñ>ô >ð+ð)ð )ð )ð+#ð +#ð +#ð\?ð ?ð ?ð ?ð ?r   