B
    `                 @   s\   d dl mZmZmZ eZd dlZd dlmZ d dl	m
Z
 d dlmZmZ G dd de
ZdS )    )absolute_importdivisionprint_functionN)AnsibleParserError)
DataLoader)to_bytesto_textc                   s   e Zd Zd" fdd	Zd#ddZdd	 Zd
d Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zd d! Z  ZS )$DictDataLoaderNc                sF   |d kri n|}t |tks ttt|   || _|   d | _d S )N)	typedictAssertionErrorsuperr	   __init___file_mapping_build_known_directories_vault_secrets)selfZfile_mapping)	__class__ d/home/dcms/DCMS/lib/python3.7/site-packages/ansible_collections/cisco/nxos/tests/unit/mock/loader.pyr      s    zDictDataLoader.__init__TFc             C   s(   t |}|| jkr$| | j| |S d S )N)r   r   load)r   pathcacheunsafer   r   r   load_from_file)   s    
zDictDataLoader.load_from_filec             C   s4   t |}|| jkr$t| j| dfS td| d S )NFzfile not found: %s)r   r   r   r   )r   r   r   r   r   _get_file_contents1   s    
z!DictDataLoader._get_file_contentsc             C   s   t |}|| jkp|| jkS )N)r   r   _known_directories)r   r   r   r   r   path_exists8   s    zDictDataLoader.path_existsc             C   s   t |}|| jkS )N)r   r   )r   r   r   r   r   is_file<   s    zDictDataLoader.is_filec             C   s   t |}|| jkS )N)r   r   )r   r   r   r   r   is_directory@   s    zDictDataLoader.is_directoryc             C   sZ   g }t |}xHt| j | j D ]0}||r"tj||kr"|	tj
| q"W |S )N)r   listr   keysr   
startswithosr   dirnameappendbasename)r   r   retxr   r   r   list_directoryD   s    
zDictDataLoader.list_directoryc             C   s   dS )NFr   )r   r   r   r   r   is_executableM   s    zDictDataLoader.is_executablec             C   s   || j kr| j | d S )N)r   r%   )r   	directoryr   r   r   _add_known_directoryQ   s    
z#DictDataLoader._add_known_directoryc             C   sJ   g | _ x>| jD ]4}tj|}x"|dkr@| | tj|}q W qW d S )N)/ )r   r   r#   r   r$   r,   )r   r   r$   r   r   r   r   U   s    

z'DictDataLoader._build_known_directoriesc             C   s,   d}|| j krd}|| j |< |r(|   d S )NFT)r   r   )r   r   contentZrebuild_dirsr   r   r   push]   s    

zDictDataLoader.pushc             C   s   || j kr| j |= |   d S )N)r   r   )r   r   r   r   r   popg   s    
zDictDataLoader.popc             C   s   t  | _g | _d S )N)r   r   r   )r   r   r   r   clearl   s    zDictDataLoader.clearc             C   s   t  S )N)r#   getcwd)r   r   r   r   get_basedirp   s    zDictDataLoader.get_basedirc             C   s
   || _ d S )N)r   )r   Zvault_secretsr   r   r   set_vault_secretss   s    z DictDataLoader.set_vault_secrets)N)TF)__name__
__module____qualname__r   r   r   r   r   r   r)   r*   r,   r   r0   r1   r2   r4   r5   __classcell__r   r   )r   r   r	      s   

	
r	   )
__future__r   r   r   r
   __metaclass__r#   Zansible.errorsr   Zansible.parsing.dataloaderr   Zansible.module_utils._textr   r   r	   r   r   r   r   <module>   s   