ó
‹'=[c           @   sð   d  Z  d d l Z d d l m Z m Z d d l m Z m Z m Z 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ÿÿÿÿNi   (   t   NotebookReadert   NotebookWriter(   t   new_code_cellt   new_text_cellt   new_worksheett   new_notebookt   new_heading_cellt   nbformatt   nbformat_minors   ^#.*coding[:=]\s*([-\w.]+)t   PyReaderErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s/   lib/python2.7/site-packages/nbformat/v3/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/v3/nbpy.pyt   reads&   s    c         K   sÏ  | j  ƒ  } g  } g  } i  } d } x@| D]8} | j d ƒ sct j | ƒ rR q+ | j d ƒ r§ |  j | | |  } | d  k	 r’ | j | ƒ n  d } g  } i  } q+ | j d ƒ rü |  j | | |  } | d  k	 rç | j | ƒ n  d } g  } i  } q+ | j d ƒ rQ|  j | | |  } | d  k	 r<| j | ƒ n  d } g  } i  } q+ | j d ƒ so| j d	 ƒ rµ|  j | | |  } | d  k	 r | j | ƒ n  d
 } g  } i  } q+ | j d ƒ rV|  j | | |  } | d  k	 rû| j | ƒ g  } n  t j d | ƒ }	 |	 d  k	 rAd } i  } t |	 j	 d ƒ ƒ | d <qcd } i  } 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   markdowncellu   # <rawcell>u   # <plaintextcell>u   rawcellu   # <headingcells#   # <headingcell level=(?P<level>\d)>u   headingcellt   levelt   cellst
   worksheets(   t
   splitlinest
   startswitht   _encoding_declaration_ret   matcht   new_cellt   Nonet   appendt   ret   intt   groupR   R   (   R   R   R   t   linesR   t
   cell_linest   statet   linet   cellt   mt   wst   nb(    (    s/   lib/python2.7/site-packages/nbformat/v3/nbpy.pyR   )   sr    						c         K   s)  | d k r@ d j  | ƒ } | j d ƒ } | r%t d | ƒ Snå | d k rt |  j | ƒ } | r%t d d | ƒSn± | d k r¨ |  j | ƒ } | r%t d d | ƒSn} | d	 k rÜ |  j | ƒ } | r%t d
 d | ƒSnI | d k r%|  j | ƒ } | j d d ƒ } | r%t d | d | ƒ Sn  d  S(   Nu   codecellu   
t   inputu   htmlcellu   htmlt   sourceu   markdowncellu   markdownu   rawcellu   rawu   headingcellR   i   (   t   joint   stripR   t   _remove_commentsR   t   getR   (   R   R!   R   R   R'   t   textR   (    (    s/   lib/python2.7/site-packages/nbformat/v3/nbpy.pyR   g   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/v3/nbpy.pyR+      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   R1   R(   t   codet   xt   startst   i(    (    s/   lib/python2.7/site-packages/nbformat/v3/nbpy.pyt   split_lines_into_blocksŠ   s    	#.(   R
   R   R   R   R   R+   R:   (    (    (    s/   lib/python2.7/site-packages/nbformat/v3/nbpy.pyR   $   s
   		>		t   PyWriterc           B   s   e  Z d  „  Z RS(   c   	      K   sÉ  d g } | j  d t t f d g ƒ x†| j D]{} xr| j D]g} | j d k r© | j d ƒ } | d  k	 r§| j  d d g ƒ | j  | j ƒ  ƒ | j	 d ƒ q§q@ | j d k r#| j d ƒ } | d  k	 r§| j  d	 d g ƒ | j  g  | j ƒ  D] } d
 | ^ qù ƒ | j	 d ƒ q§q@ | j d k r| j d ƒ } | d  k	 r§| j  d d g ƒ | j  g  | j ƒ  D] } d
 | ^ qsƒ | j	 d ƒ q§q@ | j d k r| j d ƒ } | d  k	 r§| j  d d g ƒ | j  g  | j ƒ  D] } d
 | ^ qíƒ | j	 d ƒ q§q@ | j d k r@ | j d ƒ } | j d d ƒ } | d  k	 r§| j  d | d g ƒ | j  g  | j ƒ  D] } d
 | ^ q}ƒ | j	 d ƒ q§q@ q@ Wq0 W| j	 d ƒ d j
 | ƒ S(   Nu   # -*- coding: utf-8 -*-u   # <nbformat>%i.%i</nbformat>u    u   codeu   inputu   # <codecell>u   htmlu   sourceu   # <htmlcell>u   # u   markdownu   # <markdowncell>u   rawu   # <rawcell>u   headingu   leveli   u   # <headingcell level=%s>t    u   
(   t   extendR   R   R   R   t	   cell_typeR,   R   R   R   R)   (	   R   R&   R   R   R%   R#   R'   R"   R   (    (    s/   lib/python2.7/site-packages/nbformat/v3/nbpy.pyt   writes™   sN    	
****(   R
   R   R?   (    (    (    s/   lib/python2.7/site-packages/nbformat/v3/nbpy.pyR;   —   s   (   t   __doc__R   t   rwbaseR    R   t   nbbaseR   R   R   R   R   R   R   t   compileR   t	   ExceptionR	   R   R;   t   _readert   _writerR   t   readR   t   writeR?   (    (    (    s/   lib/python2.7/site-packages/nbformat/v3/nbpy.pyt   <module>   s   4	s-						