
    j8                     f    d dl mZmZ d dlZddlmZmZ ddlmZ ddl	m
Z
 dgZdgZ G d	 d
e      Zy)    )BinaryIOAnyN   )DocumentConverterDocumentConverterResult)FileConversionException)
StreamInfozapplication/jsonz.ipynbc                   P    e Zd ZdZdedededefdZdededede	fdZ
dede	fd	Zy
)IpynbConverterz5Converts Jupyter Notebook (.ipynb) files to Markdown.file_streamstream_infokwargsreturnc                    |j                   xs dj                         }|j                  xs dj                         }|t        v ryt        D ]q  }|j                  |      s|j                         }	 |j                  xs d}|j                         j                  |      }	d|	v xr d|	v 	 |j                  |       c S  y# |j                  |       w xY w)N Tutf-8nbformatnbformat_minorF)mimetypelower	extensionACCEPTED_FILE_EXTENSIONSCANDIDATE_MIME_TYPE_PREFIXES
startswithtellcharsetreaddecodeseek)
selfr   r   r   r   r   prefixcur_posencodingnotebook_contents
             g/root/aria/tools/markitdown-venv/lib/python3.12/site-packages/markitdown/converters/_ipynb_converter.pyacceptszIpynbConverter.accepts   s      ((.B557 **0b779	002 	.F""6*%**,.*22=gH'2'7'7'9'@'@'J$"&66 A,0@@
  $$W-	.   $$W-s   28CCc                     |j                   xs d}|j                         j                  |      }| j                  t	        j
                  |            S )Nr   )r#   )r   r   r   _convertjsonloads)r    r   r   r   r#   r$   s         r%   convertzIpynbConverter.convert.   sJ     &&1'&++-44h4G}}TZZ(89::    r$   c                    	 g }d}|j                  dg       D ]  }|j                  dd      }|j                  dg       }|dk(  r]|j                  dj                  |             |O|D ]4  }|j                  d      s|j	                  d      j                         }  |dk(  r%|j                  d	dj                  |       d
       |dk(  s|j                  ddj                  |       d
        dj                  |      }|j                  di       j                  d|      }t        ||      S # t        $ r}	t        dt        |	             |	d}	~	ww xY w)z@Helper function that converts notebook JSON content to Markdown.Ncells	cell_typer   sourcemarkdownz# codez
```python
z
```rawz```
z

metadatatitle)r1   r5   zError converting .ipynb file: )
getappendjoinr   lstripstripr   	Exceptionr   str)
r    r$   	md_outputr5   cellr/   source_lineslinemd_textes
             r%   r(   zIpynbConverter._convert9   sr   %	IE(,,Wb9 K HH["5	#xx"5
*$$RWW\%:; }$0 &D#t4(,D(9(?(?(A %&
 &($${277<3H2I%OP%'$$uRWW\-B,C5%IJ%K( kk),G %((R8<<WeLE*  
  	)0Q9	s,   A$D7 'D7 >AD7 A%D7 7	E EEN)__name__
__module____qualname____doc__r   r	   r   boolr&   r   r+   dictr(    r,   r%   r   r      so    ?   	
 
8	;	;  	; 		;
 
!	;' '2I 'r,   r   )typingr   r   r)   _base_converterr   r   _exceptionsr   _stream_infor	   r   r   r   rI   r,   r%   <module>rN      s:       H 1 %    %: Q& Qr,   