Use regex to check for private methods

This commit is contained in:
Andrew Baxter 2019-05-25 00:52:00 +09:00
parent e667ca7682
commit 144afcee79
1 changed files with 5 additions and 1 deletions

View File

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