File size: 654 Bytes
9c6594c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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