py313.py 654 B

12345678910111213141516171819202122232425262728293031323334
  1. import functools
  2. import sys
  3. # from jaraco.functools 4.1
  4. def identity(x):
  5. return x
  6. # from jaraco.functools 4.1
  7. def apply(transform):
  8. def wrap(func):
  9. return functools.wraps(func)(compose(transform, func))
  10. return wrap
  11. # from jaraco.functools 4.1
  12. def compose(*funcs):
  13. def compose_two(f1, f2):
  14. return lambda *args, **kwargs: f1(f2(*args, **kwargs))
  15. return functools.reduce(compose_two, funcs)
  16. def replace(pattern):
  17. r"""
  18. >>> replace(r'foo\z')
  19. 'foo\\Z'
  20. """
  21. return pattern[:-2] + pattern[-2:].replace(r'\z', r'\Z')
  22. legacy_end_marker = apply(replace) if sys.version_info < (3, 14) else identity