3 vhW @ s d Z ddlZddlZddlZddlmZ dddgZdddZdd dZd d Z dd Z dd Zdd Zdd Z ejdZejdZdd Zdd Zdd ZdS )z Filename globbing utility. Mostly a copy of `glob` from Python 3.5. Changes include: * `yield from` and PEP3102 `*` removed. * `bytes` changed to `six.binary_type`. * Hidden files are not ignored. N)binary_typeglobiglobescapeFc C s t t| |dS )ay Return a list of paths matching a pathname pattern. The pattern may contain simple shell-style wildcards a la fnmatch. However, unlike fnmatch, filenames starting with a dot are special cases that are not matched by '*' and '?' patterns. If recursive is true, the pattern '**' will match any files and zero or more directories and subdirectories. ) recursive)listr )pathnamer r /usr/lib/python3.6/glob.pyr s c C s" t | |}|rt| rt|}|S )a Return an iterator which yields the paths matching a pathname pattern. The pattern may contain simple shell-style wildcards a la fnmatch. However, unlike fnmatch, filenames starting with a dot are special cases that are not matched by '*' and '?' patterns. If recursive is true, the pattern '**' will match any files and zero or more directories and subdirectories. )_iglob_isrecursivenext)r r itsr r r r s c c s t jj| \}}t| sF|r0t jj| rB| V nt jj|rB| V d S |s|rrt|rrx4t||D ] }|V qbW nxt||D ] }|V q~W d S || krt|rt ||}n|g}t|r|rt|rt}qt}nt }x0|D ](}x"|||D ]}t jj||V qW qW d S )N)ospathsplit has_magiclexistsisdirr glob2glob1r glob0join)r r dirnamebasenamexdirsZglob_in_dirnamer r r r 2 s4 r c C sR | s"t |trtjjd} ntj} ytj| }W n tk rD g S X tj||S )NASCII) isinstancer r curdirencodelistdirOSErrorfnmatchfilter)r patternnamesr r r r ] s r c C s8 |st jj| r4|gS nt jjt jj| |r4|gS g S )N)r r r r r )r r r r r r j s r c c s* |d d V xt | D ] }|V qW d S )Nr ) _rlistdir)r r' r r r r r z s r c c s | s"t | trttjd} ntj} ytj| }W n tjk rF d S X xJ|D ]B}|V | rjtjj| |n|}x t|D ]}tjj||V qxW qNW d S )Nr ) r r r r! r# errorr r r) )r r( r r yr r r r) s r) z([*?[])s ([*?[])c C s( t | trtj| }n tj| }|d k S )N)r r magic_check_bytessearchmagic_check)r matchr r r r s r c C s t | tr| dkS | dkS d S )Ns **z**)r r )r' r r r r s r c C s<