a
    »ÏOc;  ã                   @   s0   d Z ddlmZmZ G dd„ dƒZddd„ZdS )	z
Schema to data generators
é    )Ú	AttributeÚSchemac                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚConfigGeneratorz:
    Generate config from schema using default values
    c                 C   s   d S )N© ©Úselfr   r   úF/var/www/html/gsl.tools/lib/python3.9/site-packages/confu/generator.pyÚ__init__   s    zConfigGenerator.__init__c                    sh   t |tƒr2i }| ¡ D ]\}}ˆ  |¡||< q|S t |tƒrHˆ  |j¡S t |tƒrd‡ fdd„|D ƒS |S )zË
        Generate confug from schema using default values

        **Arguments**

        - schema (`Schema|Attribute`): confu schema object

        **Returns**

        generated config `dict`
        c                    s   g | ]}ˆ   |¡‘qS r   )Úgenerate)Ú.0Úitemr   r   r   Ú
<listcomp>%   ó    z,ConfigGenerator.generate.<locals>.<listcomp>)Ú
isinstancer   Ú
attributesr
   r   ÚdefaultÚlist)r   ÚschemaÚconfigÚnameÚ	attributer   r   r   r
      s    


zConfigGenerator.generateN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r
   r   r   r   r   r      s   r   Nc                 C   s   |s
t ƒ }| | ¡S )a9  
    generate config shortcut function

    **Arguments**

    - schema (`Schema`): confu schema object

    **Keyword Arguments**

    - generator (`ConfigGenerator`): generator object, if non is supplied
    will instantiate a ConfigGenerator instance itself

    **Returns**

    generated config (`dict`)
    )r   r
   )r   Ú	generatorr   r   r   r
   )   s    r
   )N)r   Zconfu.schemar   r   r   r
   r   r   r   r   Ú<module>   s   "