code: def catalogs(self, **kwargs):
          
          catalogs = self._query('catalogs', **kwargs)
  
          if type(catalogs) == dict:
              catalogs = [catalogs, ]
  
          for catalog in catalogs:
              yield Catalog(node=catalog['certname'],
                            edges=catalog['edges']['data'],
                            resources=catalog['resources']['data'],
                            version=catalog['version'],
                            transaction_uuid=catalog['transaction_uuid'],
                            environment=catalog['environment'],
                            code_id=catalog.get('code_id'),
                            catalog_uuid=catalog.get('catalog_uuid'))
docs: Get the catalog information from the infrastructure based on path
          and/or query results. It is strongly recommended to include query
          and/or paging parameters for this endpoint to prevent large result
          sets or PuppetDB performance bottlenecks.
  
          :param \*\*kwargs: The rest of the keyword arguments are passed
                             to the _query function.
  
          :returns: A generator yielding Catalogs
          :rtype: :class:`pypuppetdb.types.Catalog`