Skip to content

Conversation

@cpyle0819
Copy link
Contributor

This PR builds on #178 and abstracts filesystem operations in file_utils.py.

Changes

  • Add fs: Fs parameter to walk_with_gitignore and get_files functions
  • Replace direct filesystem calls with Fs interface methods:
    • Use fs.stat() instead of path.exists() and entry.is_dir()
    • Use fs.readlines() instead of open().readlines()
    • Use fs.list() instead of os.scandir()
  • Exclude .gitignore files from walk results
  • Add comprehensive tests using RecordFs for deterministic testing

Testing

  • All existing tests continue to pass
  • New tests cover gitignore filtering, skip functions, and edge cases
  • Tests use RecordFs for fast, deterministic filesystem simulation

Dependencies

- Add fs parameter to walk_with_gitignore and get_files functions
- Replace direct filesystem calls with Fs interface methods
- Use fs.stat(), fs.readlines(), and fs.list() instead of os.scandir() and open()
- Exclude .gitignore files from walk results
- Add comprehensive tests using RecordFs for deterministic testing
- Test gitignore filtering, skip functions, and edge cases
… add nested gitignore test

- Use fully qualified imports in file_utils.py and file_utils_test.py
- Convert all test paths to absolute paths as requested
- Add comprehensive nested gitignore test case
- Improve RecordFs.list() method to handle intermediate directories properly
@cpyle0819 cpyle0819 requested a review from DavidSouther July 7, 2025 17:29
@DavidSouther DavidSouther merged commit 1c9c123 into doc-gen-updates Jul 7, 2025
cpyle0819 added a commit that referenced this pull request Jul 7, 2025
* Refactor DocGen to use filesystem abstraction

* Add readlines method to Fs interface and implementations

- Add abstract readlines method to Fs class
- Implement readlines in PathFs using file.readlines()
- Implement readlines in RecordFs using splitlines(keepends=True)
- Add comprehensive tests for both implementations
- Test various scenarios: empty files, no final newline, different line endings

* Abstract filesystem operations in file_utils.py (#179)

* Abstract filesystem operations in file_utils.py

- Add fs parameter to walk_with_gitignore and get_files functions
- Replace direct filesystem calls with Fs interface methods
- Use fs.stat(), fs.readlines(), and fs.list() instead of os.scandir() and open()
- Exclude .gitignore files from walk results
- Add comprehensive tests using RecordFs for deterministic testing
- Test gitignore filtering, skip functions, and edge cases

* Address PR feedback: use fully qualified imports, absolute paths, and add nested gitignore test

- Use fully qualified imports in file_utils.py and file_utils_test.py
- Convert all test paths to absolute paths as requested
- Add comprehensive nested gitignore test case
- Improve RecordFs.list() method to handle intermediate directories properly

* Hide all FS serialization in DocGenEncoder

* Handle test cleanup better.
@cpyle0819 cpyle0819 deleted the iteration-2-file-utils branch July 8, 2025 18:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants