34 lines
654 B
Python
34 lines
654 B
Python
import functools
|
|
import sys
|
|
|
|
|
|
# from jaraco.functools 4.1
|
|
def identity(x):
|
|
return x
|
|
|
|
|
|
# from jaraco.functools 4.1
|
|
def apply(transform):
|
|
def wrap(func):
|
|
return functools.wraps(func)(compose(transform, func))
|
|
|
|
return wrap
|
|
|
|
|
|
# from jaraco.functools 4.1
|
|
def compose(*funcs):
|
|
def compose_two(f1, f2):
|
|
return lambda *args, **kwargs: f1(f2(*args, **kwargs))
|
|
|
|
return functools.reduce(compose_two, funcs)
|
|
|
|
|
|
def replace(pattern):
|
|
r"""
|
|
>>> replace(r'foo\z')
|
|
'foo\\Z'
|
|
"""
|
|
return pattern[:-2] + pattern[-2:].replace(r'\z', r'\Z')
|
|
|
|
|
|
legacy_end_marker = apply(replace) if sys.version_info < (3, 14) else identity
|