U
    Zf
                     @   s\   d dl Z d dlZd dlZddlmZmZmZmZ ddlm	Z	 dd Z
ddd	ZdddZdS )    N   )generate_class_filegenerate_importsgenerate_classes_filesgenerate_class)ComponentRegistryc              	   C   s8   t | dd"}| }tjtjd|}W 5 Q R X |S )Nzutf-8)encoding)object_pairs_hook)openreadjsonJSONDecodercollectionsOrderedDictdecode)metadata_pathZ	data_fileZjson_stringdata r   E/tmp/pip-unpacked-wheel-47crqvv_/dash/development/component_loader.py_get_metadata   s    r   default_namespacec                 C   sh   t j| g }t| }|D ]F}|| }|d dd }t||d |d |d}|| q|S )a  Load React component metadata into a format Dash can parse.

    Usage: load_components('../../component-suites/lib/metadata.json')

    Keyword arguments:
    metadata_path -- a path to a JSON file created by
    [`react-docgen`](https://github.com/reactjs/react-docgen).

    Returns:
    components -- a list of component objects with keys
    `type`, `valid_kwargs`, and `setup`.
    /.r   propsdescriptionN)r   registryaddr   splitpopr   append)r   	namespace
componentsr   ZcomponentPathZcomponentDataname	componentr   r   r   load_components   s        r$   lib/metadata.jsonc                 C   sF   t |}tj| d}tj|r,t| t| |t}t| | dS )ag  Load React component metadata into a format Dash can parse, then create
    Python class files.

    Usage: generate_classes()

    Keyword arguments:
    namespace -- name of the generated Python package (also output dir)

    metadata_path -- a path to a JSON file created by
    [`react-docgen`](https://github.com/reactjs/react-docgen).

    Returns:
    z_imports_.pyN)	r   ospathjoinexistsremover   r   r   )r    r   r   Zimports_pathr!   r   r   r   generate_classes?   s    
r+   )r   )r%   )r   r   r&   Z_py_components_generationr   r   r   r   Zbase_componentr   r   r$   r+   r   r   r   r   <module>   s   

'