uv/crates/uv-globfilter
konsti 2ad924d4cf
Use consistent workspace inheritance (#15031)
Following a CI failure in https://github.com/astral-sh/uv/pull/15028,
ensure that all workspace crates are inheriting the MSRV and other
workspace configuration from the workspace root.
2025-08-02 22:03:51 +02:00
..
src Change `GlobDirFilter` fallback to `true` (#13882) 2025-06-06 14:07:34 +02:00
Cargo.toml Use consistent workspace inheritance (#15031) 2025-08-02 22:03:51 +02:00
README.md Build backend: Add reference docs and schema (#12803) 2025-04-21 12:27:49 +02:00

README.md

globfilter

Portable directory walking with includes and excludes.

Motivating example: You want to allow the user to select paths within a project.

include = ["src", "License.txt", "resources/icons/*.svg"]
exclude = ["target", "/dist", ".cache", "*.tmp"]

When traversing the directory, you can use GlobDirFilter::from_globs(...)?.match_directory(&relative) skip directories that never match in WalkDirs filter_entry.

Syntax

This crate supports the cross-language, restricted glob syntax from PEP 639:

  • Alphanumeric characters, underscores (_), hyphens (-) and dots (.) are matched verbatim.
  • The special glob characters are:
    • *: Matches any number of characters except path separators
    • ?: Matches a single character except the path separator
    • **: Matches any number of characters including path separators
    • [], containing only the verbatim matched characters: Matches a single of the characters contained. Within [...], the hyphen indicates a locale-agnostic range (e.g., a-z, order based on Unicode code points). Hyphens at the start or end are matched literally.
  • The path separator is the forward slash character (/). Patterns are relative to the given directory, a leading slash character for absolute paths is not supported.
  • Parent directory indicators (..) are not allowed.

These rules mean that matching the backslash (\) is forbidden, which avoid collisions with the windows path separator.