B
    `                 @   st   d Z ddlmZmZmZ eZddlmZ	 ddl
mZ ddlmZmZ ddlmZmZ G dd	 d	ZG d
d dZdS )z2Test metadata for passing data to delegated tests.    )absolute_importdivisionprint_function   )types)display)write_json_fileread_json_file)
parse_diffFileDiffc               @   sH   e Zd ZdZdd Zdd Zdd Zdd	 Zed
d Z	edd Z
dS )Metadataz4Metadata object for passing data to delegated tests.c             C   s"   i | _ d| _d| _d| _d| _dS )zInitialize metadata.N)changescloud_configinstance_configchange_descriptionci_provider)self r   N/home/dcms/DCMS/lib/python3.7/site-packages/ansible_test/_internal/metadata.py__init__   s
    zMetadata.__init__c             C   st   t |}t|dd d}tdd |D | _dd |D }dd |D }x&|| D ]}|| jkrbqRd	| j|< qRW d
S )z.
        :type diff: list[str] | None
        c             S   s   | j jS )N)newpath)kr   r   r   <lambda>%       z+Metadata.populate_changes.<locals>.<lambda>)keyc             s   s"   | ]}|j jt|j jfV  qd S )N)r   r   tupleranges).0patchr   r   r   	<genexpr>'   s    z,Metadata.populate_changes.<locals>.<genexpr>c             S   s4   g | ],}|j j|jjkr|j jr|jjr|j jqS r   )oldr   r   exists)r   r   r   r   r   
<listcomp>)   s    z-Metadata.populate_changes.<locals>.<listcomp>c             S   s   g | ]}|j js|jjqS r   )r   r"   r!   r   )r   r   r   r   r   r#   *   s    ))r   r   N)r
   sorteddictr   )r   diffZpatchesrenamesZdeletesr   r   r   r   populate_changes    s    
zMetadata.populate_changesc             C   s    t | j| j| j| j| j dS )z(
        :rtype: dict[str, any]
        )r   r   r   r   r   )r%   r   r   r   r   r   to_dict)r   r   r   r   r)   5   s    zMetadata.to_dictc             C   s,   |   }tjd||f dd t|| dS )z"
        :type path: path
        z>>> Metadata: %s
%s   )	verbosityN)r)   r   infor   )r   r   datar   r   r   to_fileA   s    zMetadata.to_filec             C   s   t | }t|S )z:
        :type path: str
        :rtype: Metadata
        )r	   r   	from_dict)r   r-   r   r   r   	from_fileK   s    zMetadata.from_filec             C   sB   t  }| d |_| d |_| d |_| d |_t| d |_|S )zE
        :type data: dict[str, any]
        :rtype: Metadata
        r   r   r   r   r   )r   r   r   r   r   ChangeDescriptionr/   r   )r-   metadatar   r   r   r/   T   s    



zMetadata.from_dictN)__name__
__module____qualname____doc__r   r(   r)   r.   staticmethodr0   r/   r   r   r   r   r      s   
	r   c               @   sD   e Zd ZdZdd Zedd Zedd Zdd	 Ze	d
d Z
dS )r1   zDescription of changes.c             C   s(   d| _ g | _g | _i | _i | _g | _d S )N )commandchanged_pathsdeleted_pathsregular_command_targetsfocused_command_targetsno_integration_paths)r   r   r   r   r   f   s    zChangeDescription.__init__c             C   s   | j | jS )z*
        :rtype: list[str] | None
        )r<   getr9   )r   r   r   r   targetsn   s    zChangeDescription.targetsc             C   s   | j | jS )z*
        :rtype: list[str] | None
        )r=   r?   r9   )r   r   r   r   focused_targetsu   s    z!ChangeDescription.focused_targetsc             C   s    t | j| j| j| j| j| jdS )z(
        :rtype: dict[str, any]
        )r9   r:   r;   r<   r=   r>   )r%   r9   r:   r;   r<   r=   r>   )r   r   r   r   r)   |   s    zChangeDescription.to_dictc             C   sF   t  }| d |_| d |_| d |_| d |_| d |_| d |_|S )zO
        :param data: dict[str, any]
        :rtype: ChangeDescription
        r9   r:   r;   r<   r=   r>   )r1   r9   r:   r;   r<   r=   r>   )r-   r   r   r   r   r/      s    





zChangeDescription.from_dictN)r3   r4   r5   r6   r   propertyr@   rA   r)   r7   r/   r   r   r   r   r1   d   s   r1   N)r6   
__future__r   r   r   type__metaclass__r8   r   tutilr   ior   r	   r&   r
   r   r   r1   r   r   r   r   <module>   s   N