
    if                         d Z ddlmZ ddlmZ ddlmZmZmZ e G d d             Z	ddd	d
dee
z  dedededee	   f
dZdedefdZy)z9Utilities for scanning nested code_workspace directories.    )	dataclass)Path)IteratorListOptionalc                   P    e Zd ZU dZeed<   eed<   ee   ed<   ee   ed<   eed<   y)WorkspaceEntryz-Metadata about a workspace file or directory.pathtypesizemodified_tsdepthN)	__name__
__module____qualname____doc__str__annotations__r   intfloat     D/Users/bowang/.openclaw/workspace/ChatDev/utils/workspace_scanner.pyr	   r	      s(    7
I
I
3-% Jr   r	   T   F)	recursive	max_depthinclude_hiddenrootr   r   r   returnc             #     K   t        |       j                         }|j                         sy|dfg}|r|j                         \  }}	 t	        |j                         d       }|D ]  }		 |	j                  |      }
|st        |
      r#|	j                         rdnd}d}d}	 |	j                         }|j                  }|	j                         r|j                  }|dz   }t#        t%        |
      ||||       |s|	j                         s||k  s|j'                  |	|f        |ryy# t        $ r Y t        $ r Y w xY w# t        $ r Y w xY w# t        t        t         f$ r Y w xY ww)	zGYield entries under the workspace root respecting depth/hidden filters.Nr   c                 6    | j                   j                         S )N)namelower)ps    r   <lambda>z(iter_workspace_entries.<locals>.<lambda>$   s    qvv||~r   )key	directoryfile   )r
   r   r   r   r   )r   resolveexistspopsortediterdirFileNotFoundErrorPermissionErrorrelative_to
ValueError
_is_hiddenis_dirstatst_mtimeis_filest_sizeOSErrorr	   r   append)r   r   r   r   basestackcurrentr   childrenchildrel
entry_typer   modifiedr5   child_depths                   r   iter_workspace_entriesrD      so     :D;;=&*AYKE
	goo/5MNH
 E''- "jo(-FJDHzz|====?<<D  !)K X$!  U\\^i0Ge[125   ! 	 		
   &@ s   AE2D. $E2*E	;&E2"8E"E2=E2E2E2,E2.	E7E2:EE2EE2		EE2EE2E/,E2.E//E2relative_pathc                 :    t        d | j                  D              S )Nc              3   >   K   | ]  }|j                  d         yw).N)
startswith).0parts     r   	<genexpr>z_is_hidden.<locals>.<genexpr>G   s     D0Cts#0Cs   )anyparts)rE   s    r   r3   r3   F   s    D0C0CDDDr   N)r   dataclassesr   pathlibr   typingr   r   r   r	   r   boolr   rD   r3   r   r   r   <module>rS      s    ? !  + +     03
*03 03 	03
 03 n03fEd Et Er   