Repository: Pylons/pyramid

Issue:
modify config.scan() to default to categories=['pyramid'] instead of all categories
This rehashes https://github.com/Pylons/pyramid/issues/495 but I really think pyramid's `config.scan` should by default only find pyramid's decorators and if you want others you should ask for them.

I propose this as a 2.0 change, but if people want to push back we can say #495 settles it and forget about it.


Discussion:

Resolving patch:
diff --git a/src/pyramid/config/__init__.py b/src/pyramid/config/__init__.py
--- a/src/pyramid/config/__init__.py
+++ b/src/pyramid/config/__init__.py
@@ -805,7 +805,12 @@ def __exit__(self, exc_type, exc_value, exc_traceback):
 
     # this is *not* an action method (uses caller_package)
     def scan(
-        self, package=None, categories=None, onerror=None, ignore=None, **kw
+        self,
+        package=None,
+        categories=('pyramid',),
+        onerror=None,
+        ignore=None,
+        **kw
     ):
         """Scan a Python package and any of its subpackages for objects
         marked with :term:`configuration decoration` such as
@@ -820,12 +825,12 @@ def scan(
         The ``categories`` argument, if provided, should be the
         :term:`Venusian` 'scan categories' to use during scanning.  Providing
         this argument is not often necessary; specifying scan categories is
-        an extremely advanced usage.  By default, ``categories`` is ``None``
-        which will execute *all* Venusian decorator callbacks including
-        :app:`Pyramid`-related decorators such as
-        :class:`pyramid.view.view_config`.  See the :term:`Venusian`
-        documentation for more information about limiting a scan by using an
-        explicit set of categories.
+        an extremely advanced usage.  By default, ``categories`` is
+        ``['pyramid']`` which will execute only :app:`Pyramid`-related Venusian
+        decorator callbacks such as from :class:`pyramid.view.view_config`.
+        See the :term:`Venusian` documentation for more information about
+        limiting a scan by using an explicit set of categories. Pass ``None``
+        to pick up *all* Venusian decorators.
 
         The ``onerror`` argument, if provided, should be a Venusian
         ``onerror`` callback function.  The onerror function is passed to
@@ -863,6 +868,10 @@ def scan(
         .. versionadded:: 1.3
            The ``ignore`` argument.
 
+        .. versionchanged:: 2.0
+           The ``categories`` argument now defaults to ``['pyramid']`` instead
+           of ``None`` to control which decorator callbacks are executed.
+
         """
         package = self.maybe_dotted(package)
         if package is None:  # pragma: no cover


Test patch:
diff --git a/tests/test_config/test_init.py b/tests/test_config/test_init.py
--- a/tests/test_config/test_init.py
+++ b/tests/test_config/test_init.py
@@ -1104,7 +1104,7 @@ def test_scan_integration_dottedname_package(self):
 
     def test_scan_integration_with_extra_kw(self):
         config = self._makeOne(autocommit=True)
-        config.scan('tests.test_config.pkgs.scanextrakw', a=1)
+        config.scan('tests.test_config.pkgs.scanextrakw', a=1, categories=None)
         self.assertEqual(config.a, 1)
 
     def test_scan_integration_with_onerror(self):