[ @sdZddlZddlZddlZddgZddZddZddZd d Zej d Z ej d Z d dZ ddZ ddZdS)zFilename globbing utility.NglobiglobcCstt|S)aReturn 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. )listr)pathnamer/usr/lib/python3.4/glob.pyr s ccstjj|\}}t|se|rGtjj|ra|Vqantjj|ra|VndS|std|DdHdS||krt|rt|}n |g}t|rt}nt}x<|D]4}x+|||D]}tjj ||VqWqWdS)aReturn 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. N) ospathsplit has_magiclexistsisdirglob1rglob0join)rdirnamebasenamedirsZ glob_in_dirnamerrrrs(       c Cs|s6t|tr*ttjd}q6tj}nytj|}Wntk ragSYnXt|sdd|D}ntj||S)NASCIIcSs"g|]}t|s|qSr) _ishidden).0xrrr Hs zglob1..) isinstancebytesrcurdirlistdirOSErrorrfnmatchfilter)rpatternnamesrrrr=s    rcCsN|s"tjj|rJ|gSn(tjjtjj||rJ|gSgS)N)rr r r r)rrrrrrKs  !rz([*?[])s([*?[])cCs:t|tr!tj|}ntj|}|dk S)N)rrmagic_check_bytessearch magic_check)smatchrrrr Zsr cCs|ddkS)Nr...)r(r*r)r rrrrasrcCsVtjj|\}}t|tr<tjd|}ntjd|}||S)z#Escape all special characters. s[\1]z[\1])rr splitdriverrr#subr%)rZdriverrrescapeds r-)__doc__rrer__all__rrrrcompiler%r#r rr-rrrrs     )