| from __future__ import absolute_import |
| |
| import fnmatch as _stdlib_fnmatch |
| import os |
| |
| |
| __all__ = ["fnmatch", "fnmatchcase", "filter", "translate"] |
| |
| |
| def fnmatch(name, pat): |
| name = os.path.normcase(name) |
| pat = os.path.normcase(pat) |
| return fnmatchcase(name, pat) |
| |
| |
| def fnmatchcase(name, pat): |
| if '?' not in pat and '[' not in pat: |
| wildcards = pat.count("*") |
| if wildcards == 0: |
| return name == pat |
| elif wildcards == 1 and pat[0] == "*": |
| return name.endswith(pat[1:]) |
| elif wildcards == 1 and pat[-1] == "*": |
| return name.startswith(pat[:-1]) |
| return _stdlib_fnmatch.fnmatchcase(name, pat) |
| |
| |
| def filter(names, pat): |
| return [n for n in names if fnmatch(n, pat)] |
| |
| |
| translate = _stdlib_fnmatch.translate |