mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-24 07:24:12 +00:00
Merge pull request #3327 from nyov/deprecations
[MRG+1] Remove deprecated CrawlerSettings class and Settings attributes
This commit is contained in:
commit
01e317e79b
@ -3,6 +3,15 @@
|
||||
Release notes
|
||||
=============
|
||||
|
||||
Scrapy 1.6.0 (unreleased)
|
||||
-------------------------
|
||||
|
||||
Cleanups
|
||||
~~~~~~~~
|
||||
|
||||
* Remove deprecated ``CrawlerSettings`` class.
|
||||
* Remove deprecated ``Settings.overrides`` and ``Settings.defaults`` attributes.
|
||||
|
||||
Scrapy 1.5.0 (2017-12-29)
|
||||
-------------------------
|
||||
|
||||
|
@ -6,7 +6,6 @@ from collections import MutableMapping
|
||||
from importlib import import_module
|
||||
from pprint import pformat
|
||||
|
||||
from scrapy.utils.deprecate import create_deprecated_class
|
||||
from scrapy.exceptions import ScrapyDeprecationWarning
|
||||
|
||||
from . import default_settings
|
||||
@ -405,30 +404,6 @@ class BaseSettings(MutableMapping):
|
||||
else:
|
||||
p.text(pformat(self.copy_to_dict()))
|
||||
|
||||
@property
|
||||
def overrides(self):
|
||||
warnings.warn("`Settings.overrides` attribute is deprecated and won't "
|
||||
"be supported in Scrapy 0.26, use "
|
||||
"`Settings.set(name, value, priority='cmdline')` instead",
|
||||
category=ScrapyDeprecationWarning, stacklevel=2)
|
||||
try:
|
||||
o = self._overrides
|
||||
except AttributeError:
|
||||
self._overrides = o = _DictProxy(self, 'cmdline')
|
||||
return o
|
||||
|
||||
@property
|
||||
def defaults(self):
|
||||
warnings.warn("`Settings.defaults` attribute is deprecated and won't "
|
||||
"be supported in Scrapy 0.26, use "
|
||||
"`Settings.set(name, value, priority='default')` instead",
|
||||
category=ScrapyDeprecationWarning, stacklevel=2)
|
||||
try:
|
||||
o = self._defaults
|
||||
except AttributeError:
|
||||
self._defaults = o = _DictProxy(self, 'default')
|
||||
return o
|
||||
|
||||
|
||||
class _DictProxy(MutableMapping):
|
||||
|
||||
@ -479,29 +454,6 @@ class Settings(BaseSettings):
|
||||
self.update(values, priority)
|
||||
|
||||
|
||||
class CrawlerSettings(Settings):
|
||||
|
||||
def __init__(self, settings_module=None, **kw):
|
||||
self.settings_module = settings_module
|
||||
Settings.__init__(self, **kw)
|
||||
|
||||
def __getitem__(self, opt_name):
|
||||
if opt_name in self.overrides:
|
||||
return self.overrides[opt_name]
|
||||
if self.settings_module and hasattr(self.settings_module, opt_name):
|
||||
return getattr(self.settings_module, opt_name)
|
||||
if opt_name in self.defaults:
|
||||
return self.defaults[opt_name]
|
||||
return Settings.__getitem__(self, opt_name)
|
||||
|
||||
def __str__(self):
|
||||
return "<CrawlerSettings module=%r>" % self.settings_module
|
||||
|
||||
CrawlerSettings = create_deprecated_class(
|
||||
'CrawlerSettings', CrawlerSettings,
|
||||
new_class_path='scrapy.settings.Settings')
|
||||
|
||||
|
||||
def iter_default_settings():
|
||||
"""Return the default settings as an iterator of (name, value) tuples"""
|
||||
for name in dir(default_settings):
|
||||
|
@ -3,8 +3,7 @@ import unittest
|
||||
import warnings
|
||||
|
||||
from scrapy.settings import (BaseSettings, Settings, SettingsAttribute,
|
||||
CrawlerSettings, SETTINGS_PRIORITIES,
|
||||
get_settings_priority)
|
||||
SETTINGS_PRIORITIES, get_settings_priority)
|
||||
from tests import mock
|
||||
from . import default_settings
|
||||
|
||||
@ -341,35 +340,6 @@ class BaseSettingsTest(unittest.TestCase):
|
||||
self.assertTrue(frozencopy.frozen)
|
||||
self.assertIsNot(frozencopy, self.settings)
|
||||
|
||||
def test_deprecated_attribute_overrides(self):
|
||||
self.settings.set('BAR', 'fuz', priority='cmdline')
|
||||
with warnings.catch_warnings(record=True) as w:
|
||||
self.settings.overrides['BAR'] = 'foo'
|
||||
self.assertIn("Settings.overrides", str(w[0].message))
|
||||
self.assertEqual(self.settings.get('BAR'), 'foo')
|
||||
self.assertEqual(self.settings.overrides.get('BAR'), 'foo')
|
||||
self.assertIn('BAR', self.settings.overrides)
|
||||
|
||||
self.settings.overrides.update(BAR='bus')
|
||||
self.assertEqual(self.settings.get('BAR'), 'bus')
|
||||
self.assertEqual(self.settings.overrides.get('BAR'), 'bus')
|
||||
|
||||
self.settings.overrides.setdefault('BAR', 'fez')
|
||||
self.assertEqual(self.settings.get('BAR'), 'bus')
|
||||
|
||||
self.settings.overrides.setdefault('FOO', 'fez')
|
||||
self.assertEqual(self.settings.get('FOO'), 'fez')
|
||||
self.assertEqual(self.settings.overrides.get('FOO'), 'fez')
|
||||
|
||||
def test_deprecated_attribute_defaults(self):
|
||||
self.settings.set('BAR', 'fuz', priority='default')
|
||||
with warnings.catch_warnings(record=True) as w:
|
||||
self.settings.defaults['BAR'] = 'foo'
|
||||
self.assertIn("Settings.defaults", str(w[0].message))
|
||||
self.assertEqual(self.settings.get('BAR'), 'foo')
|
||||
self.assertEqual(self.settings.defaults.get('BAR'), 'foo')
|
||||
self.assertIn('BAR', self.settings.defaults)
|
||||
|
||||
|
||||
class SettingsTest(unittest.TestCase):
|
||||
|
||||
@ -422,33 +392,5 @@ class SettingsTest(unittest.TestCase):
|
||||
self.assertEqual(mydict['key'], 'val')
|
||||
|
||||
|
||||
class CrawlerSettingsTest(unittest.TestCase):
|
||||
|
||||
def test_deprecated_crawlersettings(self):
|
||||
def _get_settings(settings_dict=None):
|
||||
settings_module = type('SettingsModuleMock', (object,), settings_dict or {})
|
||||
return CrawlerSettings(settings_module)
|
||||
|
||||
with warnings.catch_warnings(record=True) as w:
|
||||
settings = _get_settings()
|
||||
self.assertIn("CrawlerSettings is deprecated", str(w[0].message))
|
||||
|
||||
# test_global_defaults
|
||||
self.assertEqual(settings.getint('DOWNLOAD_TIMEOUT'), 180)
|
||||
|
||||
# test_defaults
|
||||
settings.defaults['DOWNLOAD_TIMEOUT'] = '99'
|
||||
self.assertEqual(settings.getint('DOWNLOAD_TIMEOUT'), 99)
|
||||
|
||||
# test_settings_module
|
||||
settings = _get_settings({'DOWNLOAD_TIMEOUT': '3'})
|
||||
self.assertEqual(settings.getint('DOWNLOAD_TIMEOUT'), 3)
|
||||
|
||||
# test_overrides
|
||||
settings = _get_settings({'DOWNLOAD_TIMEOUT': '3'})
|
||||
settings.overrides['DOWNLOAD_TIMEOUT'] = '15'
|
||||
self.assertEqual(settings.getint('DOWNLOAD_TIMEOUT'), 15)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
Loading…
x
Reference in New Issue
Block a user