
    %j8                     n    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dS )    )BinaryIOAnyN   )DocumentConverterDocumentConverterResult)FileConversionException)
StreamInfozapplication/jsonz.ipynbc                   R    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d
S )IpynbConverterz5Converts Jupyter Notebook (.ipynb) files to Markdown.file_streamstream_infokwargsreturnc                    |j         pd                                }|j        pd                                }|t          v rdS t          D ]}|                    |          r|                                }	 |j        pd}|                                	                    |          }	d|	v od|	v 	 |
                    |           c S # |
                    |           w xY wdS )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
             n/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/markitdown/converters/_ipynb_converter.pyacceptszIpynbConverter.accepts   s     (.B5577 *0b7799	00042 	. 	.F""6** .%**,,.*2=gH'2'7'7'9'9'@'@'J'J$"&66 A,0@@
  $$W------K$$W----. us   57CCc                     |j         pd}|                                                    |          }|                     t	          j        |                    S )Nr   )r#   )r   r   r   _convertjsonloads)r    r   r   r   r#   r$   s         r%   convertzIpynbConverter.convert.   sQ     &1'&++--44h4GG}}TZ(899:::    r$   c                 P   	 g }d}|                     dg           D ]}|                     dd          }|                     dg           }|dk    rn|                    d                    |                     |C|D ]@}|                    d          r)|                    d                                          } nA|dk    r-|                    d	d                    |           d
           |dk    r,|                    dd                    |           d
           
d                    |          }|                     di                                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   s   %	IE(,,Wb99 K K HH["55	#xx"55
**$$RWW\%:%:;;; }$0 & &D#t44 &(,D(9(9(?(?(A(A %& &(($$%O277<3H3H%O%O%OPPPP%''$$%IRWW\-B-B%I%I%IJJJkk),,G %((R88<<WeLLE*    
  	 	 	)9Q99 	s   E3E6 6
F%  F  F%N)__name__
__module____qualname____doc__r   r	   r   boolr&   r   r+   dictr(    r,   r%   r   r      s        ??   	
 
   8	;	;  	; 		;
 
!	; 	; 	; 	;' '2I ' ' ' ' ' 'r,   r   )typingr   r   r)   _base_converterr   r   _exceptionsr   _stream_infor	   r   r   r   rI   r,   r%   <module>rN      s                     H H H H H H H H 1 1 1 1 1 1 % % % % % %    %: Q Q Q Q Q& Q Q Q Q Qr,   