[util] add 're' helper
This commit is contained in:
@@ -32,6 +32,19 @@ try:
|
|||||||
except AttributeError:
|
except AttributeError:
|
||||||
re_compile = re.sre_compile.compile
|
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"):
|
def bencode(num, alphabet="0123456789"):
|
||||||
"""Encode an integer into a base-N encoded string"""
|
"""Encode an integer into a base-N encoded string"""
|
||||||
@@ -360,9 +373,8 @@ Response Headers
|
|||||||
|
|
||||||
set_cookie = res_headers.get("Set-Cookie")
|
set_cookie = res_headers.get("Set-Cookie")
|
||||||
if set_cookie:
|
if set_cookie:
|
||||||
res_headers["Set-Cookie"] = re.sub(
|
res_headers["Set-Cookie"] = re(r"(^|, )([^ =]+)=[^,;]*").sub(
|
||||||
r"(^|, )([^ =]+)=[^,;]*", r"\1\2=***", set_cookie,
|
r"\1\2=***", set_cookie)
|
||||||
)
|
|
||||||
|
|
||||||
fmt_nv = "{}: {}".format
|
fmt_nv = "{}: {}".format
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import sys
|
|||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
import io
|
import io
|
||||||
|
import re
|
||||||
import time
|
import time
|
||||||
import random
|
import random
|
||||||
import string
|
import string
|
||||||
@@ -974,6 +975,25 @@ value = 123
|
|||||||
self.assertEqual(response.headers.get("foo"), None)
|
self.assertEqual(response.headers.get("foo"), None)
|
||||||
self.assertEqual(response.links.get("next"), 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():
|
class TestExtractor():
|
||||||
category = "test_category"
|
category = "test_category"
|
||||||
|
|||||||
Reference in New Issue
Block a user