'Setting a :term:`view mapper` makes it possible to make use of
:term:`view callable` objects which implement different call
signatures than the ones supported by :app:`Pyramid` as described in
its narrative documentation.
The ``mapper`` argument should be an object implementing
:class:`pyramid.interfaces.IViewMapperFactory` or a :term:`dotted
Python name` to such an object.  The provided ``mapper`` will become
the default view mapper to be used by all subsequent :term:`view
configuration` registrations.
.. seealso::
See also :ref:`using_a_view_mapper`.
.. note::
Using the ``default_view_mapper`` argument to the
:class:`pyramid.config.Configurator` constructor
can be used to achieve the same purpose.'

@action_method
def set_view_mapper(self, mapper):

    mapper = self.maybe_dotted(mapper)
    def register():
        self.registry.registerUtility(mapper, IViewMapperFactory)
    intr = self.introspectable('view    mappers', IViewMapperFactory, self.object_description(mapper), 'default    view    mapper')
    intr['mapper'] = mapper
    self.action(IViewMapperFactory, register, order=PHASE1_CONFIG, introspectables=(intr,))
