| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
…directory scan Split the `OSError` handling: an `OSError` from `next()` ends the listing, while one from `is_dir()` or `is_file()` skips just that entry.
| @@ -1454,6 +1454,13 @@ def _find_children(self): | |||
| while True: | |||
| try: | |||
| entry = next(scan_iterator) | |||
There was a problem hiding this comment.
Why not simply entry = next(scan_iterator, None) followed by if entry is None? we're already assuming that the entry is non-None since we do entry.name just after next.
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
Split the OSError handling: an OSError from next() ends the listing, while one from is_dir() or is_file() skips just that entry.
FileFinder._find_children() (added by gh-139900 implementing the new PathEntryFinder.discover() API proposed in gh-139899) scans a directory in a while True: loop and ignores any OSError without ending the loop.
The except OSError: pass covers two different failure sources: next(scan_iterator) and the os.DirEntry methods. For a DirEntry method (is_dir()/is_file() racing a deletion), skipping the entry is correct. But when next(scan_iterator) itself fails persistently (stale NFS handle, disconnected removable volume) every retry raises the same OSError again, StopIteration never arrives, and the loop never terminates.
Found via @devdanzin's AI-assisted audit of Lib/; working on it at the PyCon Korea 2026 sprint.
Claude Code helped to write the tests and the fix.