mirror of
https://github.com/astral-sh/uv.git
synced 2025-09-25 03:32:28 +00:00
![]() This PR contains three smaller improvements: * Improve the include/exclude logging. We're still showing the current directory as empty backticks, not sure what to do about that * Add early stopping to license file globbing, so we don't traverse the whole directory recursively when license files can only be in few places * Support explicit wheel excludes. These are still not entirely right, but at least we're correctly excluding compiled python files now. The next step is to make sure that the wheel excludes contain all pattern from source dist excludes, to make sure source tree -> wheel can't have more files than source tree -> source dist -> wheel. |
||
---|---|---|
.. | ||
src | ||
Cargo.toml | ||
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
WalkDir
s 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.