Replace regex usage

This commit is contained in:
Andrew Baxter 2019-05-28 01:40:26 +09:00
parent 72b7d3e90a
commit 9af91a26b0
2 changed files with 25 additions and 25 deletions

View File

@ -2,16 +2,12 @@
Helper functions for serializing (and deserializing) requests.
"""
import six
import re
from scrapy.http import Request
from scrapy.utils.python import to_unicode, to_native_str
from scrapy.utils.misc import load_object
private_name_regex = re.compile('^__.*[^_]_?$')
def request_to_dict(request, spider=None):
"""Convert Request object to a dict.
@ -71,6 +67,10 @@ def request_from_dict(d, spider=None):
flags=d.get('flags'))
def _is_private_method(name):
return name.startswith('__') and not name.endswith('__')
def _find_method(obj, func):
if obj:
try:
@ -80,7 +80,7 @@ def _find_method(obj, func):
else:
if func_self is obj:
name = six.get_method_function(func).__name__
if private_name_regex.search(name):
if _is_private_method(name):
classname = obj.__class__.__name__.lstrip('_')
name = '_%s%s' % (classname, name)
return name

View File

@ -3,7 +3,7 @@ import unittest
from scrapy.http import Request, FormRequest
from scrapy.spiders import Spider
from scrapy.utils.reqser import request_to_dict, request_from_dict, private_name_regex
from scrapy.utils.reqser import request_to_dict, request_from_dict, _is_private_method
class RequestSerializationTest(unittest.TestCase):
@ -75,26 +75,26 @@ class RequestSerializationTest(unittest.TestCase):
self._assert_serializes_ok(r, spider=self.spider)
def test_private_callback_name_matching(self):
self.assertTrue(private_name_regex.search('__a'))
self.assertTrue(private_name_regex.search('__a_'))
self.assertTrue(private_name_regex.search('__a_a'))
self.assertTrue(private_name_regex.search('__a_a_'))
self.assertTrue(private_name_regex.search('__a__a'))
self.assertTrue(private_name_regex.search('__a__a_'))
self.assertTrue(private_name_regex.search('__a___a'))
self.assertTrue(private_name_regex.search('__a___a_'))
self.assertTrue(private_name_regex.search('___a'))
self.assertTrue(private_name_regex.search('___a_'))
self.assertTrue(private_name_regex.search('___a_a'))
self.assertTrue(private_name_regex.search('___a_a_'))
self.assertTrue(private_name_regex.search('____a_a_'))
self.assertTrue(_is_private_method('__a'))
self.assertTrue(_is_private_method('__a_'))
self.assertTrue(_is_private_method('__a_a'))
self.assertTrue(_is_private_method('__a_a_'))
self.assertTrue(_is_private_method('__a__a'))
self.assertTrue(_is_private_method('__a__a_'))
self.assertTrue(_is_private_method('__a___a'))
self.assertTrue(_is_private_method('__a___a_'))
self.assertTrue(_is_private_method('___a'))
self.assertTrue(_is_private_method('___a_'))
self.assertTrue(_is_private_method('___a_a'))
self.assertTrue(_is_private_method('___a_a_'))
self.assertTrue(_is_private_method('____a_a_'))
self.assertFalse(private_name_regex.search('_a'))
self.assertFalse(private_name_regex.search('_a_'))
self.assertFalse(private_name_regex.search('__a__'))
self.assertFalse(private_name_regex.search('__'))
self.assertFalse(private_name_regex.search('___'))
self.assertFalse(private_name_regex.search('____'))
self.assertFalse(_is_private_method('_a'))
self.assertFalse(_is_private_method('_a_'))
self.assertFalse(_is_private_method('__a__'))
self.assertFalse(_is_private_method('__'))
self.assertFalse(_is_private_method('___'))
self.assertFalse(_is_private_method('____'))
def test_unserializable_callback1(self):
r = Request("http://www.example.com", callback=lambda x: x)