NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #499 most downloaded on PyPI
Wildcard/glob file name matcher.
Last release 1 months ago
14 Aug 2026
Release timing varies
gaps range from 1 weeks to 12 months
Most releases are documented
notes for 46 of 52 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
52 releases · first in 2018
DOCS : Provide information in documentation that discloses information about what should or should not be expected from Wildcard Match in regards to s
EXTGLOB/EXTMATCH was enabled.NEW : Reduce/combine nested EXTGLOB / EXTMATCH regular expression patterns when possible to reduce deeply nested patterns.
EXTGLOB/EXTMATCH regular expression patterns when possible to reduce deeply<0-9>) via new NUMRANGE flag.EXTGLOB/EXTMATCH was enabled. Due to the new feature added that reduces extended glob group nesting, groups notranslate() call via the CAPTURE flag. This flag will cause extended globEXTGLOB/EXTMATCH parsing once an unclosed extended glob pattern is encountered.SPLIT not accounting for POSIX character class.One column per quarter.
FIX : Properly update project requirements to ensure usage of bracex 3.0.
bracex 3.0.NEW : Require bracex 3.0 for bug fixes.
bracex 3.0 for bug fixes.NEW : Drop support for Python 3.8 which is "end of life".
wcmatch.glob.compile(pattern) and wcmatch.fnmatch.compile(pattern) to allow for precompiled matcherNEW : Added GLOBSTARLONG which adds support for the Zsh style * which acts like with GLOBSTAR but but traverses symlinks.
GLOBSTARLONG which adds support for the Zsh style *** which acts like ** with GLOBSTAR butpathlib.match will respect symlink rules (when the REALPATH flag is given). Hidden file rules willDOTALL to match hidden files.GLOBSTAR is enabled unless FOLLOW is also enabled, but theyglobmatch and symlink handling when REALPATH is enabled.NEW : Remove deprecated function glob.raw_escape .
glob.raw_escape.FIX : Fix pathlib issue with inheritance on Python versions greater than 3.12.
pathlib issue with inheritance on Python versions greater than 3.12.EXTMATCH case with !(...) patterns.FIX : Fix issue with type check failure in wcmatch.glob .
wcmatch.glob.NEW : Formally support Python 3.11 (no change).
pathlib changes).glob pattern list.FIX: Windows drive path separators should normalize like other path separators.
NEW: Drop support for Python 3.6.
exclude option to fnmatch, pathlib, and glob methods that allows exclusion patterns to be
specified directly without needing to enable NEGATE and prepend patterns with !. exclude accepts a separate
pattern or pattern list. exclude should not be used in conjunction with NEGATE. One or the other should be used.NEW: Officially support Python 3.10.
NEW: Add support for dir_fd in glob patterns.
dir_fd in glob patterns.pathlib.FIX: fnmatch.translate no longer requires users to normalize their Windows paths for comparison. Previously, portions of the translate regex handled b
fnmatch.translate no longer requires users to normalize their Windows paths for comparison. Previously, portions of the translate regex handled both / and \\, while other portions did not. This inconsistent handling forced users to normalize paths for reliable matching. Now all of the generated regex should handle both / and \\.FIX: When tracking unique glob paths, the unique cache had inverted logic for case sensitive vs case insensitive comparison.
NEW: Deprecate raw_escape in glob as it is very niche and the same can be accomplished simply by using #!py3 codecs.decode(string, 'unicode_escape') a…
is_magic function to the glob and fnamtch library.fnmatch now has escape available via its API. The fnmatch variant uses filename logic instead of path logic.raw_escape in glob as it is very niche and the same can be accomplished simply by using #!py3 codecs.decode(string, 'unicode_escape') and then using escape.os.fspath to convert path-like objects to string/bytes, whatever the return from __fspath__ is what Wildcard Match will accept. Don't try to convert paths via __str__ or __bytes__ as not all path-like objects may implement both.str or bytes.bracex's ability to abort parsing on extremely large pattern expansions. Patterns like {1..10000000} will now abort dramatically quicker. Require bracex 2.1.1 which aborts much quicker.## 8.0.1 - FIX: Small bug in [] range.
[:alpha:] range.NEW: WcMatch's on_init hook now only accepts kwargs and not args.
WcMatch's on_init hook now only accepts kwargs and not args.__init__ parameter as root_dir instead of base. This is to make it more clear when we are talking about the overall root directory that all paths are relative to vs the base path of a file which is relative to the root directory and the actual file name.WcMatch changed from base to _root_dir. This attribute is not really meant to be referenced by users and as been marked as private.backrefs and update documentation to note that POSIX properties never actually enabled the use of Unicode properties. While the documentation stated this and it was probably intended, it was never actually enabled. Currently, Wildcard match has chosen to keep with the ASCII definition for now as it has been since the feature was introduced. This may change in the future if there is demand for it.[:word:] POSIX character class.NEW: Formally support Python 3.9 support.
NODIR pattern looks at both / and \\ on Windows.NEW: Translate functions will now use capturing groups for EXTGLOB/EXTMATCH groups in the returned regular expression patterns.
EXTGLOB/EXTMATCH groups in the returned regular expression patterns.FIX: Ensure that when using REALPATH that all symlinks are evaluated.
REALPATH that all symlinks are evaluated.Check out Release Notes to learn more about upgrading to 7.0.
Check out Release Notes to learn more about upgrading to 7.0.
SPLIT and BRACE which
requires a user to escape {, } and | to avoid expanding a pattern.raw_escape now accepts the raw_chars parameter so that translation of Python character back references can be disabled.scandir will not return . and .. for wildcard patterns that require iterating over a directory to match the files against a pattern. This matches Python's glob and is most likely what most users expect. Pattern matching logic is unaffected.SCANDOTDIR flag to enable previous behavior of injecting . and .. in scandir results.
SCANDOTDIR has no affect on match functions such as globmatch which don't use directory scanning.NODOTDIR has been added to disable patterns such as .* from matching . and ... When enabled, matching logic is changed to require a literal pattern of . and .. to match the special directories . and ... This is more Zsh like.!(...)) incorrectly allowed for hidden files to be returned when one of the subpatterns started with ., even when DOTMATCH/DOTGLOB was not enabled.NOUNIQUE is enabled and pathlib is being used, you could still get non-unique results across
patterns expanded with BRACE or SPLIT (or even by simply providing a list of patterns). Ensure that unique results are only returned when NOUNIQUE is not enabled.escape and raw_escape with back slashes.globmatch does not match test// with pattern test/*.pathlib.match should not evaluate symlinks that are on the left hand side of what was matched.NEW: EXTMATCH/EXTGLOB can now be used with NEGATE without needing MINUSNEGATE. If a pattern starts with !(, and NEGATE and EXTMATCH/EXTGLOB are both e
EXTMATCH/EXTGLOB can now be used with NEGATE without needing MINUSNEGATE. If a pattern starts with !(, and NEGATE and EXTMATCH/EXTGLOB are both enabled, the pattern will not be treated as a NEGATE pattern (even if !( doesn't yield a valid EXTGLOB pattern). To negate a pattern that starts with a literal (, you must escape the bracket: !\(.glob to be consistent with other functions.FIX: Fix issue where when FOLLOW and GLOBSTAR were used, a pattern like /* would not properly match a directory which was a symlink. While Bash does n
FOLLOW and GLOBSTAR were used, a pattern like **/* would not properly match a directory which was a symlink. While Bash does not return a symlinked folder with **, * (and other patterns), should properly find the symlinked directory.pathlib clearly states that the match method, if the pattern is relative, matches from the right. Wildcard Match used the same implementation that rglob used, which prepends **/ to a relative pattern. This is essentially like MATCHBASE, but allows for multiple directory levels. This means that dot files (and special folders such as . and ..) on the left side could prevent the path from matching depending on flags that were set. match will now be evaluated in such a way as to give the same right to left matching feel that Python's pathlib uses.FIX: Fix logic related to dot files and GLOBSTAR. Recursive directory search should return all dot files, which should then be filtered by the pattern
GLOBSTAR. Recursive directory search should return all dot files, which should then be filtered by the patterns. They should not be excluded before being filtered by the pattern.FIX: If we only have one pattern (exclusion patterns not included) we can disable unique path filtering on returns as you cannot have a duplicate path
NEW: Tilde user expansion support via the new GLOBTILDE flag.
GLOBTILDE flag.glob by default now returns only unique results, regardless of whether multiple patterns that match the
same file were provided, or even when BRACE or SPLIT expansion produces new patterns that match the same file.NOUNIQUE has been added that makes glob act like Bash, which will return the same
file multiple times if multiple patterns match it, whether provided directly or due to the result of BRACE or
SPLIT expansion.limit parameter in related API functions.WcMatch class crawls the
file system, it utilizes the aforementioned matching functions in it's operation, and indirectly takes advantage of
this. glob (and related functions: rglob, iglob, etc.) will also filter redundant patterns except when
NOUNIQUE is enabled, this is so they can better act like Bash when NOUNIQUE is enabled.BRACE is now processed before SPLIT in order to fix a number of edge cases.RAWCHARS was inconsistently applied at different times depending on what was calling it. It is now
applied first followed by BRACE, SPLIT, and finally GLOBTILDE.Nothing published for this version
FIX: Rework glob relative path handling so internally it is indistinguishable from when it is given no relative path and uses the current working dire
glob relative path handling so internally it is indistinguishable from when it is given no relative
path and uses the current working directory. This fixes an issue where pathlib couldn't handle negate patterns
properly (!negate).FIX: Fix case where a GLOBSTAR pattern, followed by a slash, was not disabling MATCHBASE.
GLOBSTAR pattern, followed by a slash, was not disabling MATCHBASE.pathlib relative path resolution in glob implementations.FIX: In glob, avoid using up too many file descriptors by acquiring all file/folder names under a directory in one batch before recursing into other f
glob, avoid using up too many file descriptors by acquiring all file/folder names under a directory in
one batch before recursing into other folders.NEW: The deprecated flag FORCECASE has now been removed.
wcmatch.pathlib which contains pathlib variants that uses wcmatch.glob instead of the default
Python glob.escape and raw_escape can manually be forced to use Windows or Linux/Unix logic via the keyword only
argument by setting to False or True respectively. The default is None which will auto detect the system.FORCECASE has now been removed.globsplit and fnsplit have been removed.version and version_info have been removed.FIX: Regression for root level literal matches in glob.
glob.glob would mistakenly abort if a pattern started with a literal file or directory and could not match a file or directory. This caused subsequent patterns in the chain to not get evaluated.Nothing published for this version
Nothing published for this version
Nothing published for this version
FIX: Fix regression with exclusion patterns that use braces in glob.
glob.NODIR patterns exclude if matched not exclude if not matched.NEW: Deprecated WcMatch class methods kill and reset. WcMatch should be broken with a simple break statement instead.
WcMatch class methods kill and reset. WcMatch should be broken with a simple break
statement instead.MARK to force glob to return directories with a trailing slash.MATCHBASE that causes glob related functions and WcMatch, when the pattern has no slashes in it, to
seek for any file anywhere in the tree with a matching basename.NODIR that causes glob matchers and crawlers to only match and return files.NEGATE) now always enable DOTALL in the exclusion patterns. They also
will match symlinks in ** patterns. Only non NEGATE patterns that are paired with a NEGATE pattern are subject
to symlinks and dot rules. Exclusion patterns themselves allow dots and symlinks to make filtering easier.SPLIT flag and provide an
inclusion pattern with your default ('default_pattern|!exclusion'), or feed in a list of multiple patterns instead
of a single string (['inclusion', '!exclusion']). If you really need the old behavior, you can use the NEGATEALL
flag which will provide a default inclusion pattern that matches all files.glob should not match slashes.FIX: Fix an offset issue when processing an absolute path pattern in glob on Linux or macOS.
glob on Linux or macOS.glob command would use GLOBSTAR logic on ** even when GLOBSTAR was disabled.FIX: In the WcMatch class, defer hidden file check until after the file or directory is compared against patterns to potentially avoid calling hidden
WcMatch class, defer hidden file check until after the file or directory is compared against patterns to potentially avoid calling hidden if the pattern doesn't match. The reduced lstat calls improve performance.NEW: globsplit and fnsplit have been deprecated. Users are encouraged to use the new SPLIT flag to allow functions to use multiple wildcard paths deli…
globsplit and fnsplit have been deprecated. Users are encouraged to use the new SPLIT flag to allow
functions to use multiple wildcard paths delimited by |.globmatch and globfilter will now parse provided paths as real paths if the new REALPATH flag is set.
This has the advantage of allowing the commands to be aware of symlinks and properly apply related logic (whether to
follow the links or not). It also helps to clarify ambiguous cases where it isn't clear if a file path references a
directory because the trailing slash was omitted. It also allows the command to be aware of Windows drives evaluate
the path in proper context compared to the current working directory.WcMatch class no longer accepts the recursive or show_hidden parameter, instead the RECURSIVE or
HIDDEN flag must be used.WcMatch class now can search symlink directories with the new SYMLINK flag.glob and iglob functions now behave like Bash 5.0 in regards to symlinks in GLOBSTAR (**).
GLOBSTAR will ignore symlink directories. This affects other functions such as globmatch and globfilter when
the REALPATH flag is enabled.FOLLOW was added to force related glob commands to recognize and follow symlink
directories.glob regression where inverse patterns such as !**/test/** would allow a directory base/test to
match when it should have excluded it.glob should handle root paths (/) properly, and on Windows, it should assume the drive of the current
working directory.FIX: EXTMATCH/EXTGLOB should allow literal dots and should not treat dots like sequences do.
EXTMATCH/EXTGLOB should allow literal dots and should not treat dots like sequences do.!(...) extended match patterns in glob and globmatch so that they properly match . and .. if their pattern starts with ..!(...) extended match patterns so that they handle path separators correctly.? or [.] should not trigger matching directories . and .. in glob and globmatch.Nothing published for this version
Nothing published for this version
FIX: In glob, properly handle files in the current working directory when give a literal pattern that matches it.
glob, properly handle files in the current working directory when give a literal pattern that matches it.FIX: wcmatch override events (on_error and on_skip) should verify the return is not None and not not falsy.
wcmatch override events (on_error and on_skip) should verify the return is not None and not not falsy.-FIX: Can't install due to requirements being assigned to setup opposed to install.
-FIX: Can't install due to requirements being assigned to setup opposed to install.
> Version 2.0 introduces breaking changes in regards to flags. This is meant to bring about consistency amongst the
[!danger] Breaking Changes Version 2.0 introduces breaking changes in regards to flags. This is meant to bring about consistency amongst the provided libraries. Flag names have been changed in some cases, and logic has been inverted in some cases.
NOBRACE, NOGLOBSTAR, and NOEXTGLOB flags are now BRACE, GLOBSTAR, and EXTGLOB and now
enable the features instead of disabling the features. This logic matches the provided fnmatch and wcmatch.DOTGLOB and EXTGLOB also have the respective aliases DOTMATCH and EXTMATCH to provide
consistent flags across provided libraries, but the GLOB variants that match Bash's feature names can still be
used.fnmatch's PERIOD flag has been replaced with DOTMATCH with inverted logic from what was originally
provided.FORCECASE --> F, etc.EXTMATCH, but internally it was actually EXTGLOB,
this was a bug though. EXTMATCH is now the documented and the actual flag to use.FIX: Officially support Python 3.7.
FIX: Ensure that all patterns in glob that have a directory preceding but also end with returns the preceding directory.
glob that have a directory preceding ** but also end with ** returns the preceding directory.[[:ascii:]-z] should convert to [\x00-\x7f\\-b] not [\x00-\x7f-b].'*' was assumed, now it is '', and if '' is used, all files will be matched. This works better for when full path is enabled as you get the same file matching logic.- NEW: Initial release
Your coding agent can read these notes before it upgrades. Set up the MCP server →