o
    ;i                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 ddl
mZmZmZmZmZmZmZmZ G dd deZded	efd
dZddefddZddee defddZedkrseeejdkrkdnejd  dS dS )    N)
NamedTuple)FunctionWithAio   )Category	class_strdefault_filterfunction_strmodule_items
module_strobject_is_privatepackage_filterc                   @   s2   e Zd ZU eed< eed< eed< dZeed< dS )DocItemlabelcategorydocumentT
in_sidebarN)__name__
__module____qualname__str__annotations__r   r   bool r   r   Q/home/ubuntu/.local/lib/python3.10/site-packages/modal_docs/gen_reference_docs.pyr      s
   
 r   docitemreturnc                 C   sL   dg}| j  D ]}|D ]}||v r"d| d| j d| }t|qq| S )NzTODO:zFound unwanted string 'z' in content for item 'z'. Problem line: )r   
splitlinesr   
ValueError)r   bad_stringslinebad_strmsgr   r   r   validate_doc_item   s   r"   
output_dirc              
      s  ddl }g }t  dd  fddfdd}fd	d
d}g d}t dh}|D ]#\}}t|}	t||	||d}
|
rR|tt|tj	|
||vd q/fdd}t
||dD ]d\}}}t||rkq`d| }t|r| d| dt||| }tj}n.t|st|tr| d| dt|| }tj}nt|rq`td| d| d q`|tt|||||vd q`|  dD ]}t|}	t||	||d}
|t|tj	|
d qt||  dS )zGenerate Modal docs.r   Nc                 S   s   |  d S )Naio)lower
startswithmodulenamer   r   r   filter_non_aio6   s   zrun.<locals>.filter_non_aioc              	      sV   t | |}z	| v rW dS W n ty#   td| d| d Y dS w  | dS )NFz!Warning: could not document item z: :T)getattr	TypeErrorprintaddr(   r)   item)documented_itemsr   r   filter_already_documented9   s   

z&run.<locals>.filter_already_documentedc                    s   t | |o| |o | |S N)r   r'   r3   r*   r   r   modal_default_filterD   s   z!run.<locals>.modal_default_filterc                    s>   t | |}t||st|rdS tdo | |o| |S )NFmodal)r,   r   inspectismoduler   r0   r5   r   r   top_level_filterG   s   
zrun.<locals>.top_level_filter#))modal.call_graphr<   )modal.container_processr=   )	modal.gpur>   )modal.io_streamsr?   )modal.file_ior@   zmodal.NetworkFileSystem)title_levelfilter_items)r   r   r   r   c                    s   | |p| v S r4   r   )r(   member_name)forced_membersr:   r   r   fi   s   zrun.<locals>.f)rB   zmodal. z

zNot sure how to document: z ())zmodal.exceptionzmodal.config)r   r   r   )r7   set	importlibimport_moduler
   appendr"   r   r   MODULEr	   r   r8   isclassr   CLASS	isroutine
isinstancer   r   FUNCTIONr9   warningswarnsortmake_markdown_docs)r#   r7   ordered_doc_itemsr6   base_title_levelforced_module_docssidebar_excludedtitle
modulepathr(   r   rE   	qual_name	item_namer1   contentr   r   )r2   r3   r*   rD   r:   r   run/   s   







r_   itemsc                    sp   dt dt f fdd}g }| D ]}|jr||j|jjd ||j d|j qd|i}|dt| d S )	Nrel_pathdatac                    s    d u rt d|   t | t d|   d S tj | }t d| tjtj|dd t|d}|| W d    d S 1 sEw   Y  d S )Nz<<< z>>> z
Writing toT)exist_okw)r.   ospathjoinmakedirsdirnameopenwrite)ra   rb   filenamefpr#   r   r   _write_file   s   
"z'make_markdown_docs.<locals>._write_file)r   r   z.mdr`   zsidebar.json)	r   r   rK   r   r   valuer   jsondumps)r`   r#   ro   sidebar_itemsr1   sidebar_datar   rn   r   rU      s   rU   __main__r4   )rI   r8   rq   re   sysrR   typingr   synchronicity.synchronizerr   	mdmd.mdmdr   r   r   r   r	   r
   r   r   r   r"   r   r_   listrU   r   lenargvr   r   r   r   <module>   s    (m$