[util] add 're' helper

This commit is contained in:
Mike Fährmann
2025-06-02 23:07:07 +02:00
parent 8eb707e9b7
commit 4fc719bb10
2 changed files with 35 additions and 3 deletions

View File

@@ -32,6 +32,19 @@ try:
except AttributeError:
re_compile = re.sre_compile.compile
CACHE_PATTERN = {}
def re(pattern):
"""Compile a regular expression pattern"""
try:
return CACHE_PATTERN[pattern]
except KeyError:
pass
p = CACHE_PATTERN[pattern] = re_compile(pattern)
return p
def bencode(num, alphabet="0123456789"):
"""Encode an integer into a base-N encoded string"""
@@ -360,9 +373,8 @@ Response Headers
set_cookie = res_headers.get("Set-Cookie")
if set_cookie:
res_headers["Set-Cookie"] = re.sub(
r"(^|, )([^ =]+)=[^,;]*", r"\1\2=***", set_cookie,
)
res_headers["Set-Cookie"] = re(r"(^|, )([^ =]+)=[^,;]*").sub(
r"\1\2=***", set_cookie)
fmt_nv = "{}: {}".format

View File

@@ -12,6 +12,7 @@ import sys
import unittest
import io
import re
import time
import random
import string
@@ -974,6 +975,25 @@ value = 123
self.assertEqual(response.headers.get("foo"), None)
self.assertEqual(response.links.get("next"), None)
def test_re(self):
Pattern = type(re.compile(""))
p1 = util.re_compile("foo")
p2 = util.re("foo")
p3 = util.re("foo")
self.assertIsInstance(p1, Pattern)
self.assertIsInstance(p2, Pattern)
self.assertIsInstance(p3, Pattern)
self.assertIsNot(p1, p2)
self.assertIs(p2, p3)
if sys.hexversion >= 0x3060000:
self.assertEqual(p1, p2)
else:
self.assertEqual(repr(p1), repr(p2))
class TestExtractor():
category = "test_category"