ó
'=[c           @   sî   d  Z  d d l Z d d l m Z d d l m Z m Z d d l m Z m	 Z	 m
 Z
 m Z e j d  Z d e f d	     YZ d
 e f d     YZ d e f d     YZ e   Z e   Z e j Z e j Z e j Z e j Z e j Z d S(   sJ   Read and write notebooks as regular .py files.

Authors:

* Brian Granger
i˙˙˙˙N(   t   unicode_typei   (   t   NotebookReadert   NotebookWriter(   t   new_code_cellt   new_text_cellt   new_worksheett   new_notebooks   ^#.*coding[:=]\s*([-\w.]+)t   PyReaderErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s/   lib/python2.7/site-packages/nbformat/v2/nbpy.pyR      s   t   PyReaderc           B   s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         K   s   |  j  | |  S(   N(   t   to_notebook(   t   selft   st   kwargs(    (    s/   lib/python2.7/site-packages/nbformat/v2/nbpy.pyt   reads$   s    c         K   sŠ  | j    } g  } g  } d } x | D]} | j d  s=t j |  rL q% | j d  r |  j | |  } | d  k	 r | j |  n  d } g  } q% | j d  rä |  j | |  } | d  k	 rŐ | j |  n  d } g  } q% | j d  r0|  j | |  } | d  k	 r!| j |  n  d } g  } q% | j |  q% W| r| d k r|  j | |  } | d  k	 r| j |  qn  t d |  }	 t d	 |	 g  }
 |
 S(
   Nu   codecellu   # <nbformat>u   # <codecell>u   # <htmlcell>u   htmlcellu   # <markdowncell>u   markdowncellt   cellst
   worksheets(	   t
   splitlinest
   startswitht   _encoding_declaration_ret   matcht   new_cellt   Nonet   appendR   R   (   R   R   R   t   linesR   t
   cell_linest   statet   linet   cellt   wst   nb(    (    s/   lib/python2.7/site-packages/nbformat/v2/nbpy.pyR   '   sB    			c         C   sŹ   | d k r@ d j  |  } | j d  } | r¨ t d |  Snh | d k rt |  j |  } | r¨ t d d | Sn4 | d k r¨ |  j |  } | r¨ t d d | Sn  d  S(	   Nu   codecellu   
t   inputu   htmlcellu   htmlt   sourceu   markdowncellu   markdown(   t   joint   stripR   t   _remove_commentsR   (   R   R   R   R    t   text(    (    s/   lib/python2.7/site-packages/nbformat/v2/nbpy.pyR   K   s    c         C   si   g  } x> | D]6 } | j  d  r6 | j | d  q | j |  q Wd j |  } | j d  } | S(   Nu   #i   u   
(   R   R   R"   R#   (   R   R   t	   new_linesR   R%   (    (    s/   lib/python2.7/site-packages/nbformat/v2/nbpy.pyR$   Z   s    c         c   sâ   t  |  d k r' | d Vt    n  d d  l } d j |  } | j |  } g  | j D] } | j d ^ q[ } xH t t  |  d  D]0 } d j | | | | | d ! j d  Vq Wd j | | d  j d  Vd  S(   Ni   i    i˙˙˙˙s   
(	   t   lent   StopIterationt   astR"   t   parset   bodyt   linenot   rangeR#   (   R   R   R)   R!   t   codet   xt   startst   i(    (    s/   lib/python2.7/site-packages/nbformat/v2/nbpy.pyt   split_lines_into_blockse   s    	#.(   R   R	   R   R   R   R$   R2   (    (    (    s/   lib/python2.7/site-packages/nbformat/v2/nbpy.pyR
   "   s
   		$		t   PyWriterc           B   s   e  Z d    Z RS(   c         K   sť  d g } | j  d d g  x|| j D]q} xh| j D]]} | j d k r | j d  } | d  k	 r| j  d d g  | j  | j    | j d  qq6 | j d k r| j d	  } | d  k	 r| j  d
 d g  | j  g  | j   D] } d | ^ qď  | j d  qq6 | j d k r6 | j d	  } | d  k	 r| j  d d g  | j  g  | j   D] } d | ^ qi | j d  qq6 q6 Wq& W| j d  t d j	 |   S(   Nu   # -*- coding: utf-8 -*-u   # <nbformat>2</nbformat>t    u   codeu   inputu   # <codecell>u    u   htmlu   sourceu   # <htmlcell>u   # u   markdownu   # <markdowncell>s   
(
   t   extendR   R   t	   cell_typet   getR   R   R   R    R"   (   R   R   R   R   R   R   R    R   (    (    s/   lib/python2.7/site-packages/nbformat/v2/nbpy.pyt   writest   s0    	**(   R   R	   R8   (    (    (    s/   lib/python2.7/site-packages/nbformat/v2/nbpy.pyR3   r   s   (   t   __doc__t   ret   ipython_genutils.py3compatR    t   rwbaseR   R   t   nbbaseR   R   R   R   t   compileR   t	   ExceptionR   R
   R3   t   _readert   _writerR   t   readR   t   writeR8   (    (    (    s/   lib/python2.7/site-packages/nbformat/v2/nbpy.pyt   <module>   s   "P						