From e8e5a62c20b3d217cc55038f30e495ca183bbba7 Mon Sep 17 00:00:00 2001 From: Pablo Hoffman Date: Thu, 25 Oct 2012 11:40:09 -0200 Subject: [PATCH] better backwards compatibility for scrapy.conf.settings Althought this backwards compatibility is more complex, it avoid modules from failing when importing scrapy.conf, if they are not run through "scrapy" command (such as when running tests on scrapy projects code). --- scrapy/cmdline.py | 9 +++++++++ scrapy/conf.py | 7 +++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/scrapy/cmdline.py b/scrapy/cmdline.py index 9ec4e1b7a..aebdb51f6 100644 --- a/scrapy/cmdline.py +++ b/scrapy/cmdline.py @@ -96,6 +96,15 @@ def execute(argv=None, settings=None): settings = get_project_settings() check_deprecated_settings(settings) + # --- backwards compatibility for scrapy.conf.settings singleton --- + import warnings + from scrapy.exceptions import ScrapyDeprecationWarning + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ScrapyDeprecationWarning) + from scrapy import conf + conf.settings = settings + # ------------------------------------------------------------------ + crawler = CrawlerProcess(settings) crawler.install() inproject = inside_project() diff --git a/scrapy/conf.py b/scrapy/conf.py index 717f1da6f..23efc6ffd 100644 --- a/scrapy/conf.py +++ b/scrapy/conf.py @@ -1,8 +1,11 @@ # This module is kept for backwards compatibility, so users can import # scrapy.conf.settings and get the settings they expect -from scrapy.project import crawler -settings = crawler.settings +import sys + +if 'scrapy.cmdline' not in sys.modules: + from scrapy.utils.project import get_project_settings + settings = get_project_settings() import warnings from scrapy.exceptions import ScrapyDeprecationWarning