code: def resources(self, type_=None, title=None, **kwargs):
          
          path = None
  
          if type_ is not None:
              type_ = self._normalize_resource_type(type_)
  
              if title is not None:
                  path = '{0}/{1}'.format(type_, title)
              elif title is None:
                  path = type_
  
          resources = self._query('resources', path=path, **kwargs)
          for resource in resources:
              yield Resource(
                  node=resource['certname'],
                  name=resource['title'],
                  type_=resource['type'],
                  tags=resource['tags'],
                  exported=resource['exported'],
                  sourcefile=resource['file'],
                  sourceline=resource['line'],
                  parameters=resource['parameters'],
                  environment=resource['environment'],
              )
docs: Query for resources limited by either type and/or title or query.
          This will yield a Resources object for every returned resource.
  
          :param type_: (Optional) The resource type. This can be any resource
              type referenced in\
              'https://docs.puppetlabs.com/references/latest/type.html'
          :type type_: :obj:`string`
          :param title: (Optional) The name of the resource as declared as the
              'namevar' in the Puppet Manifests. This parameter requires the\
              `type_` parameter be set.
          :type title: :obj:`string`
          :param \*\*kwargs: The rest of the keyword arguments are passed
              to the _query function
  
          :returns: A generator yielding Resources
          :rtype: :class:`pypuppetdb.types.Resource`