docs: def include(self, spec, *,
                  basePath=None,
                  operationId_mapping=None,
                  name=None):
          """ Adds a new specification to a router
  
          :param spec: path to specification
          :param basePath: override base path specify in specification
          :param operationId_mapping: mapping for handlers
          :param name: name to access original spec
          """
  
          data = self._file_loader.load(spec)
  
          if basePath is None:
              basePath = data.get('basePath', '')
  
          if name is not None:
              d = dict(data)
              d['basePath'] = basePath
              self._swagger_data[name] = d
              # TODO clear d
  
          swagger_data = {k: v for k, v in data.items() if k != 'paths'}
          swagger_data['basePath'] = basePath
  
          for url, methods in data.get('paths', {}).items():
              url = basePath + url
              methods = dict(methods)
              location_name = methods.pop(self.NAME, None)
              parameters = methods.pop('parameters', [])
              for method, body in methods.items():
                  if method == self.VIEW:
                      view = utils.import_obj(body)
                      view.add_routes(self, prefix=url, encoding=self._encoding)
                      continue
                  body = dict(body)
                  if parameters:
                      body['parameters'] = parameters + \
                          body.get('parameters', [])
                  handler = body.pop(self.HANDLER, None)
                  name = location_name or handler
                  if not handler:
                      op_id = body.get('operationId')
                      if op_id and operationId_mapping:
                          handler = operationId_mapping.get(op_id)
                          if handler:
                              name = location_name or op_id
                  if handler:
                      validate = body.pop(self.VALIDATE, self._default_validate)
                      self.add_route(
                          method.upper(), utils.url_normolize(url),
                          handler=handler,
                          name=name,
                          swagger_data=body,
                          validate=validate,
                      )
          self._swagger_data[basePath] = swagger_data
  
          for route in self.routes():
              if isinstance(route, SwaggerRoute) and not route.is_built:
                  route.build_swagger_data(self._file_loader)