o
    _hw                     @  sx   d dl mZ d dlZd dlmZ d dlmZmZ ddlm	Z	 ej
r3d dlmZ ddlmZ dd	lmZ G d
d dZdS )    )annotationsN)deque)
CollectionIterator   )combine)Callable)FS)Infoc                   @  sR   e Zd ZdddZ	ddddZdd ddfdddZddddZddddZdS ) BoundWalkerfsr	   c                 C  s
   || _ d S N)_fs)selfr    r   S/var/www/html/myenv/lib/python3.10/site-packages/fontTools/misc/filesystem/_walk.py__init__   s   
zBoundWalker.__init__Npathstr
namespacesCollection[str] | Nonereturn!Iterator[tuple[str, Info | None]]c           
      c  s~    t |g}|j}|j}| jj}t}|r8| }|||dD ]}	|	jr0||	fV  ||||	j q||	fV  q|s|dfV  dS )z*Walk files using a *breadth first* search.)r   N)r   
appendleftpopr   scandirr   is_dirname)
r   r   r   queuepushr   _scan_combinedir_pathinfor   r   r   
_iter_walk   s   

zBoundWalker._iter_walkc                 C  s   dS )NTr   )r   r#   r   r   r   <lambda>*   s    zBoundWalker.<lambda>/includeCallable[[str, Info], bool]Iterator[str]c                 c  s@    t }| ||D ]\}}|d ur|||r|||jV  q	d S r   )r   r$   r   )r   r'   r   r   r!   r#   r   r   r   _filter(   s   zBoundWalker._filterc                 c      |  dd |E d H  d S )Nc                 S     |j S r   )is_file_r#   r   r   r   r%   4       z#BoundWalker.files.<locals>.<lambda>r*   r   r   r   r   r   files3      zBoundWalker.filesc                 c  r+   )Nc                 S  r,   r   )r   r.   r   r   r   r%   7   r0   z"BoundWalker.dirs.<locals>.<lambda>r1   r2   r   r   r   dirs6   r4   zBoundWalker.dirs)r   r	   r   )r   r   r   r   r   r   )r'   r(   r   r   r   r   r   r)   )r&   )r   r   r   r)   )__name__
__module____qualname__r   r$   r*   r3   r5   r   r   r   r   r      s    
r   )
__future__r   typingcollectionsr   collections.abcr   r   _pathr   TYPE_CHECKINGr   _baser	   _infor
   r   r   r   r   r   <module>   s    