
    Whw                        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                  rd dlmZ ddlmZ dd	lmZ  G d
 d      Zy)    )annotationsN)deque)
CollectionIterator   )combine)Callable)FS)Infoc                  ^    e Zd Zd	dZ	 d
	 	 	 	 	 ddZd ddf	 	 	 	 	 	 	 ddZdddZdddZy)BoundWalkerc                    || _         y N)_fs)selffss     Y/var/www/html/jupyter_env/lib/python3.12/site-packages/fontTools/misc/filesystem/_walk.py__init__zBoundWalker.__init__   s	        Nc              #  2  K   t        |g      }|j                  }|j                  }| j                  j                  }t
        }|rK |       } |||      D ]4  }	|	j                  r ||	f  | |||	j                               /||	f 6 |rK|df yw)z*Walk files using a *breadth first* search.)
namespacesN)r   
appendleftpopr   scandirr   is_dirname)
r   pathr   queuepushr   _scan_combinedir_pathinfos
             r   
_iter_walkzBoundWalker._iter_walk   s      tfii  uHh:> );;"D.((DII67"D.()  Djs   BBBc                     y)NT )r   r#   s     r   <lambda>zBoundWalker.<lambda>*   s    r   /c              #     K   t         }| j                  ||      D ]'  \  }}|	 |||      s |||j                         ) y wr   )r   r$   r   )r   includer   r   r!   r#   s         r   _filterzBoundWalker._filter(   sK      //$
; 	0JD$GD$$7tTYY//	0s   !A	AAc              #  F   K   | j                  d |      E d {    y 7 w)Nc                    |j                   S r   )is_file_r#   s     r   r'   z#BoundWalker.files.<locals>.<lambda>4   s
     r   r+   r   r   s     r   fileszBoundWalker.files3   s     << <dCCC   !!c              #  F   K   | j                  d |      E d {    y 7 w)Nc                    |j                   S r   )r   r/   s     r   r'   z"BoundWalker.dirs.<locals>.<lambda>7   s
     r   r1   r2   s     r   dirszBoundWalker.dirs6   s     << ;TBBBr4   )r   r
   r   )r   strr   Collection[str] | Nonereturnz!Iterator[tuple[str, Info | None]])r*   zCallable[[str, Info], bool]r   r8   r   r9   r:   Iterator[str])r(   )r   r8   r:   r;   )__name__
__module____qualname__r   r$   r+   r3   r7   r&   r   r   r   r      sm     ?C%;	*, 0G-1		0,	0 	0 +		0
 
	0DCr   r   )
__future__r   typingcollectionsr   collections.abcr   r   _pathr   TYPE_CHECKINGr	   _baser
   _infor   r   r&   r   r   <module>rG      s2    "   0 	'C 'Cr   