
    Vh	                    b    d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 dd	l
mZ  G d
 de      Zy)BSource provider for a content root managed by git version control.    )annotationsN   )Git)to_bytes)SubprocessError   )SourceProviderc                  <    e Zd ZdZedd       ZddZedd       Zy)	GitSourcer   c                |    t         j                  j                  t         j                  j                  | d            S )zBReturn True if the given path is a content root for this provider.z.git)ospathexistsjoin)r   s    Z/home/dcms/DCMS/lib/python3.12/site-packages/ansible_test/_internal/provider/source/git.pyis_content_rootzGitSource.is_content_root   s&     ww~~bggll4899    c           
        | j                  |      }	 t        |      j                         }|D ]I  |j                  fd| j                  t
        j                  j                  |            D               K |D cg c]	  }||vs| }}|S # t        $ r || j                  k(  r t
        j                  j                  || j                        t
        j                  j                  z   }t        | j                        j                         }|D cg c]4  }|j                  |      st
        j                  j                  ||      6 nc c}w }}Y -w xY wc c}w )@Return the list of available content paths under the given path.c              3  ^   K   | ]$  }t         j                  j                  |       & y w)N)r   r   r   ).0psubmodule_paths     r   	<genexpr>z&GitSource.get_paths.<locals>.<genexpr>4   s      wQna8ws   *-)_GitSource__get_pathsr   get_submodule_pathsr   rootr   r   relpathsep
startswithextendr   )selfr   pathssubmodule_pathsrel_pathr   r   s         @r   	get_pathszGitSource.get_paths   s)     &	p!$i;;=O . 	xNLLw$BRBRSUSZSZS_S_`dftSuBvww	x ">qQo%=>>)  	ptyy  wwtTYY7"''++EH!$))n@@BOEToXYXdXdemXnrwwq(;ooOo	p$ ?s0   B ?	E	EBEE-"EEEc                X   t        |       }|j                  g d      }|j                  dg      }t        t        |      t        |      z
        }|D  cg c]I  } t        j
                  j                  t        |             r| t        j
                  j                  z   n| K }} |S c c} w )r   )z--cachedz--othersz--exclude-standardz	--deleted)	r   get_file_namessortedsetr   r   isdirr   r    )r   gitr$   deleted_pathss       r   __get_pathszGitSource.__get_paths;   s     $i""#QR**K=9s5zC$667 \aaSWrww}}Xd^'D#$Naa bs   AB'N)r   strreturnbool)r   r0   r1   z	list[str])__name__
__module____qualname____doc__staticmethodr   r'   r    r   r   r   r      s0    L: :8 
 
r   r   )r6   
__future__r   r   r-   r   encodingr   utilr    r
   r   r8   r   r   <module>r=      s.    H " 	
/ /r   