code: def list(self):
          
          report_model = 'ir.actions.report'
          if v(self._odoo.version)[0] < 11:
              report_model = 'ir.actions.report.xml'
          IrReport = self._odoo.env[report_model]
          report_ids = IrReport.search([])
          reports = IrReport.read(
              report_ids, ['name', 'model', 'report_name', 'report_type'])
          result = {}
          for report in reports:
              model = report.pop('model')
              report.pop('id')
              if model not in result:
                  result[model] = []
              result[model].append(report)
          return result
docs: List available reports from the server by returning a dictionary
          with reports classified by data model:
  
          .. doctest::
              :options: +SKIP
  
              >>> odoo.report.list()['account.invoice']
              [{'name': u'Duplicates',
                'report_name': u'account.account_invoice_report_duplicate_main',
                'report_type': u'qweb-pdf'},
               {'name': 'Invoices',
                'report_type': 'qweb-pdf',
                'report_name': 'account.report_invoice'}]
  
          .. doctest::
              :hide:
  
              >>> from pprint import pprint as pp
              >>> any(data['report_name'] == 'account.report_invoice'
              ...     for data in odoo.report.list()['account.invoice'])
              True
  
          *Python 2:*
  
          :return: `list` of dictionaries
          :raise: `urllib2.URLError` (connection error)
  
          *Python 3:*
  
          :return: `list` of dictionaries
          :raise: `urllib.error.URLError` (connection error)