mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-06 21:21:15 -07:00
* Bump zipp from 3.15.0 to 3.16.2 Bumps [zipp](https://github.com/jaraco/zipp) from 3.15.0 to 3.16.2. - [Release notes](https://github.com/jaraco/zipp/releases) - [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst) - [Commits](https://github.com/jaraco/zipp/compare/v3.15.0...v3.16.2) --- updated-dependencies: - dependency-name: zipp dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * Update zipp==3.16.2 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com> [skip ci]
40 lines
893 B
Python
40 lines
893 B
Python
import re
|
|
|
|
|
|
def translate(pattern):
|
|
r"""
|
|
Given a glob pattern, produce a regex that matches it.
|
|
|
|
>>> translate('*.txt')
|
|
'[^/]*\\.txt'
|
|
>>> translate('a?txt')
|
|
'a.txt'
|
|
>>> translate('**/*')
|
|
'.*/[^/]*'
|
|
"""
|
|
return ''.join(map(replace, separate(pattern)))
|
|
|
|
|
|
def separate(pattern):
|
|
"""
|
|
Separate out character sets to avoid translating their contents.
|
|
|
|
>>> [m.group(0) for m in separate('*.txt')]
|
|
['*.txt']
|
|
>>> [m.group(0) for m in separate('a[?]txt')]
|
|
['a', '[?]', 'txt']
|
|
"""
|
|
return re.finditer(r'([^\[]+)|(?P<set>[\[].*?[\]])|([\[][^\]]*$)', pattern)
|
|
|
|
|
|
def replace(match):
|
|
"""
|
|
Perform the replacements for a match from :func:`separate`.
|
|
"""
|
|
|
|
return match.group('set') or (
|
|
re.escape(match.group(0))
|
|
.replace('\\*\\*', r'.*')
|
|
.replace('\\*', r'[^/]*')
|
|
.replace('\\?', r'.')
|
|
)
|