coveralls: 
[![Coverage Status](https://coveralls.io/builds/29059995/badge)](https://coveralls.io/builds/29059995)

Coverage remained the same at 100.0% when pulling **fe93aed6500150b8f1f1dfdc27b719fa16823054 on Mike-Nahmias:issue/206-print-account-report** into **309210681e28c58256ce5999a513b8a70f8aba31 on ucfopen:develop**.

diff --git a/canvasapi/account.py b/canvasapi/account.py
index d03cea3..dca75ed 100644
--- a/canvasapi/account.py
+++ b/canvasapi/account.py
@@ -1925,7 +1925,11 @@ class AccountNotification(CanvasObject):
 @python_2_unicode_compatible
 class AccountReport(CanvasObject):
     def __str__(self):
-        return "{} ({})".format(self.report, self.id)
+        try:
+            return "{} ({})".format(self.report, self.id)
+        except AttributeError:
+            # Print params if not a report instance
+            return "{} ({})".format(self.report, self.parameters)
 
     def delete_report(self, **kwargs):
         """

Issues with Reports coverage and functionality
Version: 0.10.0
Python version: 3.7

**1) Available Account Reports do not have IDs in Canvas**

In Canvas, the list of available reports do not have IDs. 

An available report has these fields: report, title, parameters
A report has these fields: id, report, file_url, attachment, status, created_at, started_at, ended_at, parameters, progress, current_line

In Account.py I see that there is a class for AccountReport. I wonder if there should be a class for AccountReport and another class called AvailableAccountReport or something similar? And then get_reports() would return a PaginatedList of type AvailableAccountReport.

I noticed this when doing the following:
```
reports = account.get_reports()

for report in reports:
    print(report)
```
The above code gave me this error:
```AttributeError: 'AccountReport' object has no attribute 'id'```
This is my workaround:
```
reports = account.get_reports()

for report in reports:
    print(report.attributes)
```

**2) Unless I missed it, the wrapper is missing most Report methods** 
I need functionality to start a report and get the status of a report. It looks like this isn't supported in the wrapper? 


Let me know what you think and I can create a fork with some fixes if you'd like.
diff --git a/tests/fixtures/account.json b/tests/fixtures/account.json
index af424bc..9dd6b81 100644
--- a/tests/fixtures/account.json
+++ b/tests/fixtures/account.json
@@ -578,10 +578,12 @@
 		"endpoint": "accounts/1/reports",
 		"data": [
 			{
-				"id": 1
+				"id": 1,
+				"report": "sis_export_csv"
 			},
 			{
-				"id": 2
+				"id": 2,
+				"report": "grade_export_csv"
 			}
 		],
 		"headers": {
diff --git a/tests/test_account.py b/tests/test_account.py
index e79d275..3cd8f35 100644
--- a/tests/test_account.py
+++ b/tests/test_account.py
@@ -286,6 +286,7 @@ class TestAccount(unittest.TestCase):
         self.assertIsInstance(report, AccountReport)
         self.assertTrue(hasattr(report, "title"))
         self.assertEqual(report.title, "Zero Activity")
+        self.assertIsInstance(str(report), str)
 
     # get_index_of_reports()
     def test_get_index_of_reports(self, m):
@@ -310,6 +311,7 @@ class TestAccount(unittest.TestCase):
         self.assertEqual(len(reports_list), 4)
         self.assertIsInstance(reports_list[0], AccountReport)
         self.assertTrue(hasattr(reports_list[0], "id"))
+        self.assertIsInstance(str(reports_list[0]), str)
 
     # get_subaccounts()
     def test_get_subaccounts(self, m):

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-cov requests_mock
apt-get update apt-get install -y gcc
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
-e git+https://github.com/ucfopen/canvasapi.git@8217fbd1efc35376c069ff7b0e8c682f7b788c0b#egg=canvasapi
certifi==2025.1.31
charset-normalizer==3.4.1
coverage==7.8.0
exceptiongroup==1.2.2
idna==3.10
iniconfig==2.1.0
packaging==24.2
pluggy==1.5.0
pytest==8.3.5
pytest-cov==6.0.0
pytz==2025.2
requests==2.32.3
requests-mock==1.12.1
six==1.17.0
tomli==2.2.1
urllib3==2.3.0

name: canvasapi
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - certifi==2025.1.31
      - charset-normalizer==3.4.1
      - coverage==7.8.0
      - exceptiongroup==1.2.2
      - idna==3.10
      - iniconfig==2.1.0
      - packaging==24.2
      - pluggy==1.5.0
      - pytest==8.3.5
      - pytest-cov==6.0.0
      - pytz==2025.2
      - requests==2.32.3
      - requests-mock==1.12.1
      - six==1.17.0
      - tomli==2.2.1
      - urllib3==2.3.0
prefix: /opt/conda/envs/canvasapi

tests/test_account.py::TestAccount::test_get_report
tests/test_account.py::TestAccount::test_list_authentication_providers tests/test_account.py::TestAccount::test_list_enrollment_terms tests/test_account.py::TestAccount::test_list_group_categories tests/test_account.py::TestAccount::test_list_groups tests/test_account.py::TestAccount::test_list_roles tests/test_account.py::TestAccount::test_list_rubrics tests/test_account.py::TestAccount::test_list_user_logins
tests/test_account.py::TestAccount::test__str__ tests/test_account.py::TestAccount::test_abort_sis_imports_pending tests/test_account.py::TestAccount::test_abort_sis_imports_pending_blank tests/test_account.py::TestAccount::test_abort_sis_imports_pending_false tests/test_account.py::TestAccount::test_activate_role tests/test_account.py::TestAccount::test_add_authentication_providers tests/test_account.py::TestAccount::test_add_grading_standards tests/test_account.py::TestAccount::test_add_grading_standards_empty_list tests/test_account.py::TestAccount::test_add_grading_standards_missing_name_key tests/test_account.py::TestAccount::test_add_grading_standards_missing_value_key tests/test_account.py::TestAccount::test_add_grading_standards_non_dict_list tests/test_account.py::TestAccount::test_close_notification_for_user_id tests/test_account.py::TestAccount::test_create_account tests/test_account.py::TestAccount::test_create_admin tests/test_account.py::TestAccount::test_create_content_migration tests/test_account.py::TestAccount::test_create_content_migration_bad_migration_type tests/test_account.py::TestAccount::test_create_content_migration_migrator tests/test_account.py::TestAccount::test_create_course tests/test_account.py::TestAccount::test_create_course_missing_field tests/test_account.py::TestAccount::test_create_enrollment_term tests/test_account.py::TestAccount::test_create_external_tool tests/test_account.py::TestAccount::test_create_group_category tests/test_account.py::TestAccount::test_create_notification tests/test_account.py::TestAccount::test_create_notification_missing_field tests/test_account.py::TestAccount::test_create_report tests/test_account.py::TestAccount::test_create_role tests/test_account.py::TestAccount::test_create_sis_import tests/test_account.py::TestAccount::test_create_sis_import_binary tests/test_account.py::TestAccount::test_create_sis_import_ioerror tests/test_account.py::TestAccount::test_create_subaccount tests/test_account.py::TestAccount::test_create_user tests/test_account.py::TestAccount::test_create_user_login tests/test_account.py::TestAccount::test_create_user_login_fail_on_login_unique_id tests/test_account.py::TestAccount::test_create_user_login_fail_on_user_id tests/test_account.py::TestAccount::test_create_user_missing_field tests/test_account.py::TestAccount::test_deactivate_role tests/test_account.py::TestAccount::test_delete tests/test_account.py::TestAccount::test_delete_grading_periods tests/test_account.py::TestAccount::test_delete_report tests/test_account.py::TestAccount::test_delete_root_account tests/test_account.py::TestAccount::test_delete_user_id tests/test_account.py::TestAccount::test_delete_user_obj tests/test_account.py::TestAccount::test_get_admins tests/test_account.py::TestAccount::test_get_authentication_events tests/test_account.py::TestAccount::test_get_authentication_provider tests/test_account.py::TestAccount::test_get_authentication_providers tests/test_account.py::TestAccount::test_get_content_migration tests/test_account.py::TestAccount::test_get_content_migrations tests/test_account.py::TestAccount::test_get_courses tests/test_account.py::TestAccount::test_get_department_level_grade_data_completed tests/test_account.py::TestAccount::test_get_department_level_grade_data_current tests/test_account.py::TestAccount::test_get_department_level_grade_data_with_given_term tests/test_account.py::TestAccount::test_get_department_level_participation_data_completed tests/test_account.py::TestAccount::test_get_department_level_participation_data_current tests/test_account.py::TestAccount::test_get_department_level_participation_data_with_given_term tests/test_account.py::TestAccount::test_get_department_level_statistics_completed tests/test_account.py::TestAccount::test_get_department_level_statistics_current tests/test_account.py::TestAccount::test_get_department_level_statistics_with_given_term tests/test_account.py::TestAccount::test_get_enrollment tests/test_account.py::TestAccount::test_get_enrollment_terms tests/test_account.py::TestAccount::test_get_external_tool tests/test_account.py::TestAccount::test_get_external_tools tests/test_account.py::TestAccount::test_get_global_notification tests/test_account.py::TestAccount::test_get_grading_periods tests/test_account.py::TestAccount::test_get_grading_standards tests/test_account.py::TestAccount::test_get_group_categories tests/test_account.py::TestAccount::test_get_groups tests/test_account.py::TestAccount::test_get_index_of_reports tests/test_account.py::TestAccount::test_get_migration_systems tests/test_account.py::TestAccount::test_get_outcome_group tests/test_account.py::TestAccount::test_get_outcome_groups_in_context tests/test_account.py::TestAccount::test_get_outcome_import_status tests/test_account.py::TestAccount::test_get_outcome_import_status_latest tests/test_account.py::TestAccount::test_get_outcome_links_in_context tests/test_account.py::TestAccount::test_get_reports tests/test_account.py::TestAccount::test_get_role tests/test_account.py::TestAccount::test_get_roles tests/test_account.py::TestAccount::test_get_root_outcome_group tests/test_account.py::TestAccount::test_get_rubric tests/test_account.py::TestAccount::test_get_rubrics tests/test_account.py::TestAccount::test_get_scopes tests/test_account.py::TestAccount::test_get_single_grading_standard tests/test_account.py::TestAccount::test_get_sis_import tests/test_account.py::TestAccount::test_get_sis_imports tests/test_account.py::TestAccount::test_get_sis_imports_running tests/test_account.py::TestAccount::test_get_subaccounts tests/test_account.py::TestAccount::test_get_user_logins tests/test_account.py::TestAccount::test_get_user_notifications_id tests/test_account.py::TestAccount::test_get_user_notifications_obj tests/test_account.py::TestAccount::test_get_users tests/test_account.py::TestAccount::test_import_outcome_binary tests/test_account.py::TestAccount::test_import_outcome_filepath tests/test_account.py::TestAccount::test_import_outcome_id tests/test_account.py::TestAccount::test_import_outcome_ioerror tests/test_account.py::TestAccount::test_show_account_auth_settings tests/test_account.py::TestAccount::test_update tests/test_account.py::TestAccount::test_update_account_auth_settings tests/test_account.py::TestAccount::test_update_fail tests/test_account.py::TestAccount::test_update_global_notification tests/test_account.py::TestAccount::test_update_global_notification_missing_field tests/test_account.py::TestAccount::test_update_role tests/test_account.py::TestAccountNotification::test__str__ tests/test_account.py::TestAccountReport::test__str__ tests/test_account.py::TestAccountReport::test_get_enabled_features tests/test_account.py::TestAccountReport::test_get_feature_flag tests/test_account.py::TestAccountReport::test_get_features
canvasapi/account.py
canvasapi/account.py