o
    QDi                     @  s   d dl mZ d dlZd dlZd dlmZmZ ddlmZm	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZmZ d
dlmZ ddlmZ G dd deZdS )    )annotationsN)AnyList   )errorstypes)FrictionlessException)platform)TableResource)Parsersystem   )InlineControl   )JsonControlc                   @  s0   e Zd ZdZdZg dZdddZdd
dZdS )
JsonParserzJSON parser implementation.T)arraybooleangeojsonintegerobjectstringyearreturntypes.ICellStreamc              	   c  s    d}t | jj}|jd urd|j }tj| jj	|}t
|jd}t|d|d;}zt|jV  W n tyJ   d| jj d}ttj|dw t
|j}|jrWd	|_|jE d H  W d    d S 1 shw   Y  d S )
Nitemz%s.item)keysinline)dataformatcontrolz'cannot extract JSON tabular data from "")noteT)r   from_dialectresourcedialectpropertyr	   ijsonitemsloaderbyte_streamr   r   r
   nextcell_streamStopIterationnormpathr   r   SourceErrorkeyed)selfpathr    sourceinline_controlr$   r"    r5   _/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/formats/json/parsers/json.pyread_cell_stream_create    s,   

"z"JsonParser.read_cell_stream_creater3   r
   c           	      C  s   g }t | jj}|5 | jjjr|js||jj |j	D ]}|j
dd}|jr1tt|j|n|}|| qW d    n1 sCw   Y  tjddd}tj||dd W d    n1 sbw   Y  t| j}||j d S )NT)jsonwtF)deleter   )indent)r   r#   r$   r%   headerr0   appendschemafield_names
row_streamto_listdictziptempfileNamedTemporaryFiler8   dumpr   create_loaderwrite_byte_streamname)	r1   r3   r   r    rowcellsr   filer)   r5   r5   r6   write_row_stream6   s    
zJsonParser.write_row_streamN)r   r   )r3   r
   )__name__
__module____qualname____doc__requires_loadersupported_typesr7   rM   r5   r5   r5   r6   r      s    
r   )
__future__r   r8   rD   typingr   r    r   r   	exceptionr   r	   	resourcesr
   r   r   r   r   r    r   r   r5   r5   r5   r6   <module>   s    