tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

fnmatch.py (860B)


      1 import fnmatch as _stdlib_fnmatch
      2 import os
      3 from typing import Iterable, List, Text
      4 
      5 
      6 __all__ = ["fnmatch", "fnmatchcase", "filter", "translate"]
      7 
      8 
      9 def fnmatch(name: Text, pat: Text) -> bool:
     10    name = os.path.normcase(name)
     11    pat = os.path.normcase(pat)
     12    return fnmatchcase(name, pat)
     13 
     14 
     15 def fnmatchcase(name: Text, pat: Text) -> bool:
     16    if '?' not in pat and '[' not in pat:
     17        wildcards = pat.count("*")
     18        if wildcards == 0:
     19            return name == pat
     20        elif wildcards == 1 and pat[0] == "*":
     21            return name.endswith(pat[1:])
     22        elif wildcards == 1 and pat[-1] == "*":
     23            return name.startswith(pat[:-1])
     24    return _stdlib_fnmatch.fnmatchcase(name, pat)
     25 
     26 
     27 def filter(names: Iterable[Text], pat: Text) -> List[Text]:
     28    return [n for n in names if fnmatch(n, pat)]
     29 
     30 
     31 translate = _stdlib_fnmatch.translate