Programming Language
- Rust
- Python :: Implementation :: CPython
- Python :: Implementation :: PyPy
rignore ๐๐
rignore is a Python module that provides a high-performance, Rust-powered file system traversal functionality. It wraps the Rust ignore crate using PyO3, offering an efficient way to walk through directories while respecting various ignore rules.
โจ Features
- ๐ Fast directory traversal powered by Rust
- ๐ Respects
.gitignorerules - ๐ ๏ธ Customizable ignore patterns
- ๐พ Efficient memory usage
- ๐ Easy-to-use Python API
๐ฆ Installation
You can install rignore using pip:
pip install rignore
๐ Usage
The main function provided by rignore is walk, which returns an iterator of file paths:
import rignore
for file_path in rignore.walk("/path/to/directory"):
print(file_path)
๐ง Advanced Usage
The walk function accepts several optional parameters to customize its behavior:
rignore.walk(
path,
ignore_hidden=None,
read_ignore_files=None,
read_parents_ignores=None,
read_git_ignore=None,
read_global_git_ignore=None,
read_git_exclude=None,
require_git=None,
additional_ignores=None,
additional_ignore_paths=None,
overrides=None,
max_depth=None,
max_filesize=None,
follow_links=None,
case_insensitive=None,
same_file_system=None,
filter_entry=None,
)
๐ Parameters
path(str): The root directory to start the walk from.ignore_hidden(bool, optional): Whether to ignore hidden files and directories.read_ignore_files(bool, optional): Whether to read.ignorefiles.read_parents_ignores(bool, optional): Whether to read ignore files from parent directories.read_git_ignore(bool, optional): Whether to respect.gitignorefiles.read_global_git_ignore(bool, optional): Whether to respect global Git ignore rules.read_git_exclude(bool, optional): Whether to respect Git exclude files.require_git(bool, optional): Whether to require the directory to be a Git repository.additional_ignores(List[str], optional): Additional ignore patterns to apply.additional_ignore_paths(List[str], optional): Additional ignore file paths to read.overrides(List[str], optional): Override globs with the same semantics as gitignore. Globs provided here are treated as whitelist matches, meaning only files matching these patterns will be included. Use!at the beginning of a glob to exclude files (e.g.,["*.txt", ".env.example", "!secret.txt"]will include all.txtfiles and.env.example, but excludesecret.txt).max_depth(int, optional): Maximum depth to traverse.max_filesize(int, optional): Maximum file size to consider (in bytes).follow_links(bool, optional): Whether to follow symbolic links.case_insensitive(bool, optional): Whether to use case-insensitive matching for ignore patterns.same_file_system(bool, optional): Whether to stay on the same file system.filter_entry(Callable[[str, bool], optional): Custom filter function to exclude entries.
โก Performance
rignore leverages the power of Rust to provide high-performance directory traversal. It's significantly faster than pure Python implementations, especially for large directory structures.
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.