'Create a paginator for an operation.
:type operation_name: string
:param operation_name: The operation name.  This is the same name
as the method name on the client.  For example, if the
method name is ``create_foo``, and you\'d normally invoke the
operation as ``client.create_foo(**kwargs)``, if the
``create_foo`` operation can be paginated, you can use the
call ``client.get_paginator("create_foo")``.
:raise OperationNotPageableError: Raised if the operation is not
pageable.  You can use the ``client.can_paginate`` method to
check if an operation is pageable.
:rtype: L{botocore.paginate.Paginator}
:return: A paginator object.'

def get_paginator(self, operation_name):

    if (not self.can_paginate(operation_name)):
        raise OperationNotPageableError(operation_name=operation_name)
    else:
        actual_operation_name = self._PY_TO_OP_NAME[operation_name]
        def paginate(self, **kwargs):
            return Paginator.paginate(self, **kwargs)
        paginator_config = self._cache['page_config'][actual_operation_name]
        paginate.__doc__ = PaginatorDocstring(paginator_name=actual_operation_name, event_emitter=self.meta.events, service_model=self.meta.service_model, paginator_config=paginator_config, include_signature=False)
        paginator_class_name = str(('%s.Paginator.%s' % (get_service_module_name(self.meta.service_model), actual_operation_name)))
        documented_paginator_cls = type(paginator_class_name, (Paginator,), {'paginate': paginate})
        operation_model = self._service_model.operation_model(actual_operation_name)
        paginator = documented_paginator_cls(getattr(self, operation_name), paginator_config, operation_model)
        return paginator
