| 151 | self.optsort = cast(Callable[[Any], Any], sorted) if sort else (lambda x: x) |
| 152 | |
| 153 | def gen(self, path): |
| 154 | try: |
| 155 | entries = path.listdir() |
| 156 | except self.ignore: |
| 157 | return |
| 158 | rec = self.rec |
| 159 | dirs = self.optsort( |
| 160 | [p for p in entries if p.check(dir=1) and (rec is None or rec(p))] |
| 161 | ) |
| 162 | if not self.breadthfirst: |
| 163 | for subdir in dirs: |
| 164 | yield from self.gen(subdir) |
| 165 | for p in self.optsort(entries): |
| 166 | if self.fil is None or self.fil(p): |
| 167 | yield p |
| 168 | if self.breadthfirst: |
| 169 | for subdir in dirs: |
| 170 | yield from self.gen(subdir) |
| 171 | |
| 172 | |
| 173 | class FNMatcher: |