o
    QDi^                     @  s   d dl mZ d dlZd dlmZmZmZmZmZm	Z	 ddl
m
Z
 ddlmZ er.ddlmZ G dd	 d	eZd(ddZ	 		d)d*ddZd+d d!Z			d,d-d&d'ZdS ).    )annotationsN)TYPE_CHECKINGAnyDictListOptionalUnion   )platform)Mapper)Metadatac                   @  s    e Zd ZdZddddd	Zd
S )MarkdownMapperzMarkdown mapperF)tablemetadatar   r   boolc                C  sB   |j }|du r| dn| d}| }t| ||i }|S )NTz	-table.mdz.md)metadata_typeto_descriptorrender_markdownstrip)selfr   r   filenametemplate
descriptortext r   ]/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/formats/markdown/mapper.pywrite_metadata   s
   zMarkdownMapper.write_metadataN)r   r   r   r   )__name__
__module____qualname____doc__r   r   r   r   r   r      s    r   pathstrdataDict[str, Any]returnc                 C  sh   t jt jtd}tjjtj|ddd}t	|j
d< t|j
d< t|j
d< || }|jdi |S )	z>Render any JSON-like object as Markdown, using jinja2 templatez../../assets/templatesT)loaderlstrip_blockstrim_blocksfilter_dictdict_to_markdowntabulateNr   )osr!   joindirname__file__r
   jinja2EnvironmentFileSystemLoaderr)   filtersr*   dicts_to_markdown_tableget_templaterender)r!   r#   template_direnvironr   r   r   r   r      s   




r      Tx7Union[Dict[str, Any], List[Any], int, float, str, bool]levelinttabflatten_scalar_listsr   c                   sB   ddd	dd fdd t jj | dd| dddS )zDRender any JSON-like object as Markdown, using nested bulleted listsr:   r   r%   r   c                 S  s   t | totdd | D S )Nc                 s  s     | ]}t |ttf V  qd S )N
isinstancedictlist).0xir   r   r   	<genexpr>7   s    z9dict_to_markdown.<locals>._scalar_list.<locals>.<genexpr>)rA   rC   allr:   r   r   r   _scalar_list6   s   z&dict_to_markdown.<locals>._scalar_listr   r;   r<   r=   r"   c           	   	     sF  t | ttfrt | trdd | D }nt | tr$dd tt| D }t | tr+| nt|  }t | trGrGdd |D }t|rG| g}g }t||D ]:\}}t |ttfrpr_|sp|| d ||d d  qNt |t	r~t
jj|dd	d
}|| d|  qNd|}nt	| }|dkrt
jj|dd	d}|S )Nc                 S  s   g | ]}d | dqS )z- ``r   rD   keyr   r   r   
<listcomp>>   s    z3dict_to_markdown.<locals>._iter.<locals>.<listcomp>c                 S  s   g | ]
}d |d  dqS )z- [   ]r   )rD   ir   r   r   rM   @       c                 S  s   g | ]
}t |ttf qS r   r@   )rD   valuer   r   r   rM   C   rQ   
rN   r<   r9   F)widthfirst r   TrU   rV   blank)rA   rB   rC   rangelenvaluesrG   zipappendr"   r
   jinja2_filters	do_indentr-   )	r:   r<   labelsr\   scalarlineslabelrR   txt_iterrI   r?   r>   r   r   rg   9   s<   

"
zdict_to_markdown.<locals>._iterrT   TFrX   N)r:   r   r%   r   )r   )r:   r;   r<   r=   r%   r"   )r
   r_   r`   )r:   r<   r>   r?   r   rf   r   r*   .   s   
#r*   dictsList[Dict[str, Any]]kwargsr   c                   s:    r fdd| D } t j| }|| djddS )z4Tabulate dictionaries and render as a Markdown tablec                   s   g | ]
}t |fi  qS r   )r)   )rD   r:   rj   r   r   rM   d   rQ   z+dicts_to_markdown_table.<locals>.<listcomp>NF)index)r
   pandas	DataFramewherenotnullto_markdown)rh   rj   dfr   rk   r   r4   a   s   r4   includeOptional[List[Any]]excludeorderc                   s|   rfddD  r fddD r<fddt D }dd tt| D }fdd|D S )z(Filter and order dictionary by key namesc                   s   i | ]}| v r|| qS r   r   rK   )rs   r:   r   r   
<dictcomp>r       zfilter_dict.<locals>.<dictcomp>c                   s   i | ]}| vr|| qS r   r   rK   )ru   r:   r   r   rw   t   rx   c                   s.   g | ]\}}| v r  |nt |fqS r   )rl   r[   )rD   rP   rL   )rv   r   r   rM   v   s    zfilter_dict.<locals>.<listcomp>c                 S  s   g | ]\}}|qS r   r   )rD   _rL   r   r   r   rM   z   s    c                   s   i | ]}| | qS r   r   rK   rH   r   r   rw   {   s    )	enumeratesortedr]   keys)r:   rs   ru   rv   rl   sorted_keysr   )ru   rs   rv   r:   r   r)   i   s   
r)   )r!   r"   r#   r$   r%   r"   )r   r9   T)
r:   r;   r<   r=   r>   r=   r?   r   r%   r"   )rh   ri   rj   r   r%   r"   )NNN)
r:   r$   rs   rt   ru   rt   rv   rt   r%   r$   )
__future__r   r,   typingr   r   r   r   r   r   r
   systemr   r   r   r   r   r*   r4   r)   r   r   r   r   <module>   s$     

3
