diff --git a/docs/topics/loaders.rst b/docs/topics/loaders.rst index a5efa3fb9..4c24166e6 100644 --- a/docs/topics/loaders.rst +++ b/docs/topics/loaders.rst @@ -151,7 +151,7 @@ Item Loaders are declared like Items, by using a class definition syntax. Here is an example:: from scrapy.loader import ItemLoader - from scrapy.loader.processor import TakeFirst, MapCompose, Join + from scrapy.loader.processors import TakeFirst, MapCompose, Join class ProductLoader(ItemLoader): @@ -182,7 +182,7 @@ output processors to use: in the :ref:`Item Field ` metadata. Here is an example:: import scrapy - from scrapy.loader.processor import Join, MapCompose, TakeFirst + from scrapy.loader.processors import Join, MapCompose, TakeFirst from w3lib.html import remove_tags def filter_price(value): @@ -309,7 +309,7 @@ ItemLoader objects Examples:: - >>> from scrapy.loader.processor import TakeFirst + >>> from scrapy.loader.processors import TakeFirst >>> loader.get_value(u'name: foo', TakeFirst(), unicode.upper, re='name: (.+)') 'FOO` @@ -513,7 +513,7 @@ those dashes in the final product names. Here's how you can remove those dashes by reusing and extending the default Product Item Loader (``ProductLoader``):: - from scrapy.loader.processor import MapCompose + from scrapy.loader.processors import MapCompose from myproject.ItemLoaders import ProductLoader def strip_dashes(x): @@ -526,7 +526,7 @@ Another case where extending Item Loaders can be very helpful is when you have multiple source formats, for example XML and HTML. In the XML version you may want to remove ``CDATA`` occurrences. Here's an example of how to do it:: - from scrapy.loader.processor import MapCompose + from scrapy.loader.processors import MapCompose from myproject.ItemLoaders import ProductLoader from myproject.utils.xml import remove_cdata @@ -551,7 +551,7 @@ needs. Available built-in processors ============================= -.. module:: scrapy.loader.processor +.. module:: scrapy.loader.processors :synopsis: A collection of processors to use with Item Loaders Even though you can use any callable function as input and output processors, @@ -570,7 +570,7 @@ Here is a list of all built-in processors: Example:: - >>> from scrapy.loader.processor import Identity + >>> from scrapy.loader.processors import Identity >>> proc = Identity() >>> proc(['one', 'two', 'three']) ['one', 'two', 'three'] @@ -583,7 +583,7 @@ Here is a list of all built-in processors: Example:: - >>> from scrapy.loader.processor import TakeFirst + >>> from scrapy.loader.processors import TakeFirst >>> proc = TakeFirst() >>> proc(['', 'one', 'two', 'three']) 'one' @@ -598,7 +598,7 @@ Here is a list of all built-in processors: Examples:: - >>> from scrapy.loader.processor import Join + >>> from scrapy.loader.processors import Join >>> proc = Join() >>> proc(['one', 'two', 'three']) u'one two three' @@ -619,7 +619,7 @@ Here is a list of all built-in processors: Example:: - >>> from scrapy.loader.processor import Compose + >>> from scrapy.loader.processors import Compose >>> proc = Compose(lambda v: v[0], str.upper) >>> proc(['hello', 'world']) 'HELLO' @@ -666,7 +666,7 @@ Here is a list of all built-in processors: >>> def filter_world(x): ... return None if x == 'world' else x ... - >>> from scrapy.loader.processor import MapCompose + >>> from scrapy.loader.processors import MapCompose >>> proc = MapCompose(filter_world, unicode.upper) >>> proc([u'hello', u'world', u'this', u'is', u'scrapy']) [u'HELLO, u'THIS', u'IS', u'SCRAPY'] @@ -683,7 +683,7 @@ Here is a list of all built-in processors: Example:: - >>> from scrapy.loader.processor import SelectJmes, Compose, MapCompose + >>> from scrapy.loader.processors import SelectJmes, Compose, MapCompose >>> proc = SelectJmes("foo") #for direct use on lists and dictionaries >>> proc({'foo': 'bar'}) 'bar' diff --git a/scrapy/contrib/loader/processor.py b/scrapy/contrib/loader/processor.py index 68ddff4d4..da7e484a5 100644 --- a/scrapy/contrib/loader/processor.py +++ b/scrapy/contrib/loader/processor.py @@ -1,7 +1,7 @@ import warnings from scrapy.exceptions import ScrapyDeprecationWarning warnings.warn("Module `scrapy.contrib.loader.processor` is deprecated, " - "use `scrapy.loader.processor` instead", + "use `scrapy.loader.processors` instead", ScrapyDeprecationWarning, stacklevel=2) -from scrapy.loader.processor import * +from scrapy.loader.processors import * diff --git a/scrapy/loader/__init__.py b/scrapy/loader/__init__.py index c861f8a24..b6d8506ca 100644 --- a/scrapy/loader/__init__.py +++ b/scrapy/loader/__init__.py @@ -14,7 +14,7 @@ from scrapy.utils.misc import arg_to_iter, extract_regex from scrapy.utils.python import flatten from .common import wrap_loader_context -from .processor import Identity +from .processors import Identity class ItemLoader(object): diff --git a/scrapy/loader/processor.py b/scrapy/loader/processors.py similarity index 100% rename from scrapy/loader/processor.py rename to scrapy/loader/processors.py diff --git a/tests/test_loader.py b/tests/test_loader.py index c51092ad0..6e8f7c0de 100644 --- a/tests/test_loader.py +++ b/tests/test_loader.py @@ -2,7 +2,7 @@ import unittest from functools import partial from scrapy.loader import ItemLoader -from scrapy.loader.processor import Join, Identity, TakeFirst, \ +from scrapy.loader.processors import Join, Identity, TakeFirst, \ Compose, MapCompose, SelectJmes from scrapy.item import Item, Field from scrapy.selector import Selector