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).
This commit is contained in:
Pablo Hoffman 2012-10-25 11:40:09 -02:00
parent 8f4c879b58
commit e8e5a62c20
2 changed files with 14 additions and 2 deletions

View File

@ -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()

View File

@ -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