Я пытаюсь написать модуль оболочки загрузчика на python, который может использовать запросы pycurl, selenium или good-ol 'для загрузки URL-адреса в соответствии с
# import pycurl inside a try-except block, logging errors
# also import selenium stuff inside a try-except block logging errors
# then
def pycurl_downloader(*args, **kwargs):
raise NotImplementedError
if 'pycurl' in sys.modules:
def pycurl_downloader(url, char_encoding=None):
# actual implementation, now we are certain pycurl is there
# similar for selenium
тогда, когда сайтне использует глупый DOM-модифицирующий JavaScript, я мог бы просто использовать pycurl (или, если он не найден, откат к запросам изящно), в противном случае использовать различные драйверы селена (снова с изящным отступлением при сбое драйвера).
Но flake8 жалуется на ошибку переопределения F811 (переопределение pycurl_downloader и также selenium_downloader позже) в приведенном выше коде.
Я мог бы попытаться использовать некоторую пустышку _not_implemented_function и присвоить ей имя pycurl_downloader, а затем написатьфункцию _real_pycurl_downloader и переназначить:
pycurl_downloader = _not_implemented_func
if 'pycurl' in sys.modules:
def _real_pycurl_downloader(...):
# blah
pycurl_downloader = _real_pycurl_downloader
, но это не так.У кого-нибудь есть идея получше?