Skip to main content

Python implementation of git’s wildmatch and POSIX.1-2008 fnmatch.

The aim of this package is to provide a file matching module complying with the POSIX standard and allow compatibility with git.

Example

from pathmatch import wildmatch

# Pattern matching auto-generated test files (extension .pyc, .pyo or .pyd inside tests/)
pattern = u'tests/**/*.py[cod]'

# Match single files:
wildmatch.match(pattern, u'tests/auto.pyc')  # True
wildmatch.match(pattern, u'auto.pyc')  # False

# Filter a collection:
files = [
    u'tests/deep/auto.pyd',
    u'tests/module.py',
    u'package/auto.pyc',
    u'tests/auto.pyo'
]
list(wildmatch.filter(pattern, files))  # [u'tests/deep/auto.pyd', u'tests/auto.pyo']

# Compile a pattern
compiled = wildmatch.WildmatchPattern(pattern)

compiled.match(u'tests/')  # False

Features

wildmatch support

Currently, the following wildmatch features are supported:

  • Wildstar ** operator and associated semantics (/ requires a literal match)

  • Literal matching

  • Question mark ? (any character) and asterisk * (any string) operators

  • Bracket expressions [abc] (character alternatives)

Bracket expression features:

  • Negation (supports both ^ and ! meta-characters)

  • Range expressions a-z

  • Collation Symbol [.ch.]

  • Equivalence classes syntax [=e=], but fallback to collation symbol semantics

  • Supports the path_name flag to exclude / (which requires a literal match)

See test_wildmatch.py for more details.

Limitations:

  • case_fold (case insensitive) option is not supported

  • period (require literal match for leading period) option is not supported

  • Negated bracket expression with multi-character collating elements are not supported

  • Character classes [:alpha:] for bracket expressions are not supported

Contributions are welcomed

fnmatch support

The dedicated fnmatch module is not yet configured (this should just be a subset of wildmatch).

Contributing

Tests

You can execute the tests with the following command:

python -m unittest discover -s . -p test*.py

References:

License

MIT License, Copyright (c) 2016 Charles Samborski

Metadata

Release files for pathmatch 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pathmatch 0.2.2
File Size Uploaded
pathmatch-0.2.2.tar.gz 24.5 kB Details

Release files / pathmatch-0.2.2.tar.gz

Download URL pathmatch-0.2.2.tar.gz
Size 24.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ea020e5e20114b2587eba2c9f909a0b9aa449e55522ce80bfac7da0fe695984d
BLAKE2b-256 checksum
How to use checksums
ed987ef76707728a9f82c30917e807e0e6d5925c6f1b90913c8bef36f30795c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2

Release history Release notifications | RSS feed

This release

0.2.2 This release

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page