a
    »ÏOcÕ  ã                   @   s^   d dl Z g d¢Zi Zdd„ Zdd„ Zdd„ Zeƒ fd	d
„Zdeƒ fdd„Zdeƒ fdd„ZdS )é    N)ZmysqlÚjsonÚtomlZyamlc                 C   sP   t | tƒst| ƒ} dd„ tt ¡ ƒD ƒ | ¡}|rDtdt|ƒ› �ƒ‚|t| < d S )Nc                 S   s   h | ]}|D ]}|’qqS © r   )Ú.0ÚkÚextr   r   úK/var/www/html/gsl.tools/lib/python3.9/site-packages/munge/codec/__init__.pyÚ	<setcomp>   ó    zadd_codec.<locals>.<setcomp>zduplicate extension )Ú
isinstanceÚtupleÚlistÚ__codecsÚkeysÚintersectionÚ
ValueErrorÚstr)ÚextsÚclsZ	dupe_extsr   r   r   Ú	add_codec   s    
r   c                   C   s   t S )z& Get all currently registered codecs. )r   r   r   r   r   Ú
get_codecs   s    r   c                   C   s   dd„ t tƒ  ¡ ƒD ƒS )Nc                 S   s   g | ]}|d  ‘qS )r   r   )r   r   r   r   r   Ú
<listcomp>   r
   zlist_codecs.<locals>.<listcomp>)r   r   r   r   r   r   r   Úlist_codecs   s    r   c                 C   s*   t | ¡ ƒD ]\}}| |v r|  S qd S )N)r   Úitems)ÚtagÚcodecsr   r   r   r   r   Ú	get_codec   s    r   Ú.c                 C   sÎ   g }t |tƒr|f}tj | ¡d dd… }t|ƒ}|rj|D ],}tj || ¡}tj |¡r<| ||f¡ q<t	| 
¡ ƒD ]R\}}	|D ]D}| › d|› �}
|D ],}tj ||
¡}tj |¡r˜| |	|f¡ q˜q‚qv|S )zÑ
    find all matching data files in search_path
    search_path: path of directories to load from
    codecs: allow to override from list of installed
    returns array of tuples (codec_object, filename)
    é   Nr   )r   r   ÚosÚpathÚsplitextr   ÚjoinÚexistsÚappendr   r   )ÚnameÚsearch_pathr   Úrvr   r   ZeachZfq_filenamer   ÚobjÚfilenamer   r   r   Úfind_datafile#   s$    
r*   c                 K   sT   t | ||ƒ}|s8d|v r |d S td| › dt|ƒ› �ƒ‚|d \}}|ƒ  t|ƒ¡S )z¥
    find datafile and load them from codec
    TODO only does the first one
    kwargs:
    default = if passed will return that on failure instead of throwing
    Údefaultzfile z not found in search path r   )r*   ÚOSErrorr   ÚloadÚopen)r%   r&   r   ÚkwargsÚmodÚcodecZdatafiler   r   r   Úload_datafileC   s    r2   )	r   Ú__all__r   r   r   r   r   r*   r2   r   r   r   r   Ú<module>   s    