
    }e                     l   d Z ddlmZ ddlmZ ddlZ ej                  d      Zej                  d       ddl	m
Z
 ddlm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mZ ddlmZ ddlmZ d Zd Z ej@                  d      d        Z!d Z"ddddddZ#d Z$d Z%d Z&d Z'd Z( G d d e)      Z*d! Z+d" Z,y)#zTests for pylab tools module.
    )
a2b_base64)BytesION
matplotlibAgg)Figure)pyplot)backend_inline)get_ipython)InteractiveShell)_PNG_JPEG   )
pylabtools)
decoratorsc                  |   t        j                         } t        j                  | d      J t        j                  d       t        j                         } | j                  ddd      }|j                  g d       t        j                          t        j                  | d      d d j                         }d|v sJ y )Nsvgall   r   r      d   zdoctype svg)	pltfigureptprint_figurecloseadd_subplotplotdrawlower)figaxr   s      D/usr/lib/python3/dist-packages/IPython/core/tests/test_pylabtools.pytest_figure_to_svgr$      s    
**,C??3&...IIe **,C	1Q	BGGGHHJ
//#u
%ds
+
1
1
3CC    c                      ddl m}  t               }| j                  dd      }	 |j	                  |d       y# t
        $ r7}|j                  j                  }t        j                  d|d|      |d}~ww xY w)	z0Skip if PIL can't write JPEGs to BytesIO objectsr   )ImageRGB)   r)   jpegz!PIL can't write JPEG to BytesIO: z: N)
PILr'   r   newsave	Exception	__class____name__pytestskip)r'   bufimgeenames        r#   _check_pil_jpeg_bytesr7   -   sj     
)C
))E5
!CYf Y$$kkuaPQWXXYs   7 	A7 2A22A7z	PIL.Imagec                  8   t                t        j                         } | j                  ddd      }|j	                  g d       t        j
                          t        j                  | dddi      d d j                         }|j                  t              sJ y )Nr   r   r*   optimize2   )
pil_kwargsr   )r7   r   r   r   r   r   r   r   r    
startswithr   )r!   r"   r*   s      r#   test_figure_to_jpegr=   :   ss    
**,C	1Q	BGGGHHJ??3J3CDTcJPPRD??5!!!r%   c                     t        j                         } t        j                  |       d k(  sJ t        j                  d       t        j                         } | j                  ddd      }|j                  g d       t        j                          t        j                  |       \  }}|j                  t              sJ d|v sJ d|v sJ y )Nr   r   r   widthheight)
r   r   r   retina_figurer   r   r   r   r<   r   )r!   r"   pngmds       r#   test_retina_figurerD   E   s    
**,CC D(((IIe
**,C	1Q	BGGGHHJs#GC>>$b==r>>r%   	image/pngz
image/jpegzapplication/pdfzimage/svg+xml)rB   r*   pdfretinar   c                     t               } t        j                         D ]a  \  }}t        j                  | |       | j
                  j                  j                         D ]  \  }}||k(  rt        |v rJ t        |vrJ  c y N)r
   _fmt_mime_mapitemsr   select_figure_formatsdisplay_formatter
formattersr   )ipfmtactive_mimemimefs        r#   test_select_figure_formats_strrT   ]   s~    	B)//1 '[
  S)++66<<> 	'GD!{"{"{Q&		''r%   c                     t               } t        d      }t        j                  | dfi | | j                  j
                  d   }|j                  t              }|j                  }|}d|d<   d|d<   ||k(  sJ t        j                         }|j                  ddd      }|j                  g d	       t        j                          d|_         ||      }t        |t               sJ t#        |      }	|	j%                  t&              sJ y )
Ntight)bbox_inchesrB   rE   Tbase64rP   r   r   )r
   dictr   rL   rM   rN   lookup_by_typer   keywordsr   r   r   r   r   enabled
isinstancestrr   r<   r   )
rO   kwargs	formatterrS   cellexpectedr!   r"   rB   	png_bytess
             r#   !test_select_figure_formats_kwargsrd   g   s    	Bg&FR1&1$$//<I  (A::DHHXHUO8 **,C	1Q	BGGGHHJI
C.Cc33I%%%r%   c                  "   t               } ddhdgddhfD ]s  }|D ch c]  }t        |    }}t        j                  | |       | j                  j
                  j                         D ]  \  }}||v rt        |v rJ t        |vrJ  u y c c}w )NrB   r   )r*   rF   rG   )r
   rJ   r   rL   rM   rN   rK   r   )rO   fmtsrP   active_mimesrR   rS   s         r#   test_select_figure_formats_setrh   ~   s    	B		!		 ' 7;;sc*;;
  T*++66<<> 	'GD!|#{"{Q&		'' <s   Bc                     t               } t        j                  t              5  t	        j
                  | d       d d d        t        j                  t              5  t	        j
                  | ddh       d d d        t        j                  t              5  t	        j
                  | g d       d d d        y # 1 sw Y   ~xY w# 1 sw Y   PxY w# 1 sw Y   y xY w)NfoorB   )rG   rF   barbad)r
   r1   raises
ValueErrorr   rL   )rO   s    r#   test_select_figure_formats_badro      s    	B	z	" ,
  U+,	z	" 5
  eU^45	z	" F
  %DEF F	, ,5 5F Fs#   B8CC8CCCc                  ^    i } t        j                  | d       d| v sJ | d   t        k(  sJ y )NF)
import_allr   np)r   import_pylabrr   )nss    r#   test_import_pylabru      s1    	BOOB5)B;;d8r>>r%   c                   F    e Zd Z G d de      Zd Zd Zd Zd Zd Z	d Z
y	)
TestPylabSwitchc                   $     e Zd Z fdZd Z xZS )TestPylabSwitch.Shellc                 X    d| j                   j                  _        t        |           y)z:Sets up the command history, and starts regular autosaves.z:memory:N)configHistoryManager	hist_filesuperinit_history)selfr/   s    r#   r   z"TestPylabSwitch.Shell.init_history   s     3=DKK&&0G "r%   c                      y rI    )r   guis     r#   
enable_guiz TestPylabSwitch.Shell.enable_gui   s    r%   )r0   
__module____qualname__r   r   __classcell__)r/   s   @r#   Shellry      s    	#
	r%   r   c                 d   dd l fd}j                  | _        j                  | _        t        d      _        t        d      _        t        j                  | _        |t        _        t        j                  | _
        d t        _	        t        j                  | _        d t        _        y )Nr   c                 $    | j                   d<   y )Nbackend)rcParams)r   r   s    r#   act_mplz&TestPylabSwitch.setup.<locals>.act_mpl   s    -4J	*r%   QtAgg)r   c                       y rI   r   akws     r#   <lambda>z'TestPylabSwitch.setup.<locals>.<lambda>       r%   c                       y rI   r   r   s     r#   r   z'TestPylabSwitch.setup.<locals>.<lambda>   r   r%   )r   r   _saved_rcParamsrcParamsOrig_saved_rcParamsOrigrY   r   activate_matplotlib_save_amrs   _save_ipr	   configure_inline_support	_save_cis)r   r   r   s     @r#   setupzTestPylabSwitch.setup   s    	5  *22#-#:#: "73
"&w"7
 ..!(-'@@2G/r%   c                     | j                   t        _        | j                  t        _        | j
                  t        _        dd l}| j                  |_
        | j                  |_        y )Nr   )r   r   r   r   rs   r   r	   r   r   r   r   r   r   )r   r   s     r#   teardownzTestPylabSwitch.teardown   sD    !%--26../"22
"&":":
r%   c                    | j                         }|j                  d       \  }}|dk(  sJ |j                  dk(  sJ |j                  d      \  }}|dk(  sJ |j                  dk(  sJ |j                  d      \  }}|dk(  sJ |j                  dk(  sJ |j                  d      \  }}|dk(  sJ |j                  dk(  sJ |j                         \  }}|dk(  sJ |j                  dk(  sJ y )Nqtinliner   enable_matplotlibpylab_gui_selectr   sr   r   s       r#   test_qtzTestPylabSwitch.test_qt   s   JJL**40Wd{{!!T)))**84Wh!!T)))**40Wd{{!!T)))**84Wh!!T)))**,Wd{{!!T)))r%   c                 ,   | j                         }|j                  d      \  }}|dk(  sJ |j                  d k(  sJ |j                  d      \  }}|dk(  sJ |j                  d k(  sJ |j                  d      \  }}|dk(  sJ |j                  dk(  sJ y )Nr   r   r   r   s       r#   test_inlinezTestPylabSwitch.test_inline   s    JJL**84Wh!!T)))**84Wh!!T)))**40Wd{{!!T)))r%   c                    | j                         }|j                  d      \  }}|dk(  sJ dh}|D ch c]  }t        |    }}t        j                  ||       |j                  d      \  }}|dk(  sJ |j
                  j                  j                         D ]  \  }}||v rt        |v rJ t        |vrJ  yc c}w )z<Using '%matplotlib inline' twice should not reset formattersr   rB   N)	r   r   rJ   r   rL   rM   rN   rK   r   )	r   rO   r   r   rf   rP   rg   rR   rS   s	            r#   test_inline_twicez!TestPylabSwitch.test_inline_twice   s     ZZ\++H5Wh6:;sc*;;
  T*++H5Wh++66<<> 	'GD!|#{"{Q&		' <s   B<c                     | j                         }|j                  d      \  }}|dk(  sJ |j                  dk(  sJ |j                  d      \  }}|dk(  sJ |j                  dk(  sJ y )Nr   gtkr   r   s       r#   test_qt_gtkzTestPylabSwitch.test_qt_gtk   su    JJL**40Wd{{!!T)))**51Wd{{!!T)))r%   N)r0   r   r   r   r   r   r   r   r   r   r   r   r%   r#   rw   rw      s.      H&;*,*'(*r%   rw   c                  :    dD ]  } | t         j                  vrJ  y )N)aggr   rF   ps)r   backend2gui)ks    r#   test_no_gui_backendsr     s#    ( '&&&'r%   c                  P    t               } d | _        t        j                  |        y rI   )r   canvasr   r   )r!   s    r#   test_figure_no_canvasr     s    
(CCJOOCr%   )-__doc__binasciir   ior   r1   importorskipr   usematplotlib.figurer   r   r   matplotlib_inliner	   numpyrr   IPython.core.getipythonr
   IPython.core.interactiveshellr   IPython.core.displayr   r    r   r   IPython.testingr   decr$   r7   skip_withoutr=   rD   rJ   rT   rd   rh   ro   ru   objectrw   r   r   r   r%   r#   <module>r      s        V  .
 
u  $ $ ,  / : ,  -  Y +" "" '&.' Fe*f e*P'
r%   