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

Coverage remained the same at 100.0% when pulling **3ccdda915d6e16a1750e2dc9894f52602c6b91a7 on dsavransky:resolvepath** into **44967b49f9847005a524305f508e071f35d37773 on ucfopen:develop**.

diff --git a/.gitignore b/.gitignore
index 3cfe0c5..f6b23d7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,3 +20,4 @@
 .vscode/settings.json
 setup.sh
 .python-version
+.*.swp
diff --git a/canvasapi/course.py b/canvasapi/course.py
index 79786ef..d1177e0 100644
--- a/canvasapi/course.py
+++ b/canvasapi/course.py
@@ -2317,27 +2317,38 @@ class Course(CanvasObject):
         )
         return Course(self._requester, response.json())
 
-    def resolve_path(self, full_path, **kwargs):
+    def resolve_path(self, full_path=None, **kwargs):
         """
         Returns the paginated list of all of the folders in the given
-        path starting at the course root folder.
+        path starting at the course root folder. Returns root folder if called
+        with no arguments.
 
         :calls: `GET /api/v1/courses/:course_id/folders/by_path/*full_path \
         <https://canvas.instructure.com/doc/api/files.html#method.folders.resolve_path>`_
 
-        :param full_path: Full path to resolve, relative to course root
+        :param full_path: Full path to resolve, relative to course root.
         :type full_path: string
 
         :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
             :class:`canvasapi.folder.Folder`
         """
-        return PaginatedList(
-            Folder,
-            self._requester,
-            "GET",
-            "courses/{0}/folders/by_path/{1}".format(self.id, full_path),
-            _kwargs=combine_kwargs(**kwargs),
-        )
+
+        if full_path:
+            return PaginatedList(
+                Folder,
+                self._requester,
+                "GET",
+                "courses/{0}/folders/by_path/{1}".format(self.id, full_path),
+                _kwargs=combine_kwargs(**kwargs),
+            )
+        else:
+            return PaginatedList(
+                Folder,
+                self._requester,
+                "GET",
+                "courses/{0}/folders/by_path".format(self.id),
+                _kwargs=combine_kwargs(**kwargs),
+            )
 
     def set_quiz_extensions(self, quiz_extensions, **kwargs):
         """
diff --git a/canvasapi/group.py b/canvasapi/group.py
index 558fa75..5baa608 100644
--- a/canvasapi/group.py
+++ b/canvasapi/group.py
@@ -827,6 +827,39 @@ class Group(CanvasObject):
 
         return response.json().get("reorder")
 
+    def resolve_path(self, full_path=None, **kwargs):
+        """
+        Returns the paginated list of all of the folders in the given
+        path starting at the group root folder. Returns root folder if called
+        with no arguments.
+
+        :calls: `GET /api/v1/groups/group_id/folders/by_path/*full_path \
+        <https://canvas.instructure.com/doc/api/files.html#method.folders.resolve_path>`_
+
+        :param full_path: Full path to resolve, relative to group root.
+        :type full_path: string
+
+        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
+            :class:`canvasapi.folder.Folder`
+        """
+
+        if full_path:
+            return PaginatedList(
+                Folder,
+                self._requester,
+                "GET",
+                "groups/{0}/folders/by_path/{1}".format(self.id, full_path),
+                _kwargs=combine_kwargs(**kwargs),
+            )
+        else:
+            return PaginatedList(
+                Folder,
+                self._requester,
+                "GET",
+                "groups/{0}/folders/by_path".format(self.id),
+                _kwargs=combine_kwargs(**kwargs),
+            )
+
     def set_usage_rights(self, **kwargs):
         """
         Changes the usage rights for specified files that are under the current group scope
diff --git a/canvasapi/user.py b/canvasapi/user.py
index 78f5a62..a8178b4 100644
--- a/canvasapi/user.py
+++ b/canvasapi/user.py
@@ -788,6 +788,39 @@ class User(CanvasObject):
 
         return response.json()
 
+    def resolve_path(self, full_path=None, **kwargs):
+        """
+        Returns the paginated list of all of the folders in the given
+        path starting at the user root folder. Returns root folder if called
+        with no arguments.
+
+        :calls: `GET /api/v1/users/:user_id/folders/by_path/*full_path \
+        <https://canvas.instructure.com/doc/api/files.html#method.folders.resolve_path>`_
+
+        :param full_path: Full path to resolve, relative to user root.
+        :type full_path: string
+
+        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
+            :class:`canvasapi.folder.Folder`
+        """
+
+        if full_path:
+            return PaginatedList(
+                Folder,
+                self._requester,
+                "GET",
+                "users/{0}/folders/by_path/{1}".format(self.id, full_path),
+                _kwargs=combine_kwargs(**kwargs),
+            )
+        else:
+            return PaginatedList(
+                Folder,
+                self._requester,
+                "GET",
+                "users/{0}/folders/by_path".format(self.id),
+                _kwargs=combine_kwargs(**kwargs),
+            )
+
     def set_usage_rights(self, **kwargs):
         """
         Changes the usage rights for specified files that are under the user scope

Files Resolve Path
#375 / #378 Added support for `GET /api/v1/courses/:course_id/folders/by_path/*full_path`, but there are several other related endpoints under the "Resolve Path" umbrella.

**What resource needs additional coverage?**
Files, Folders, "Resolve Path"

**What endpoints need to be covered?**

- [ ] `GET /api/v1/courses/:course_id/folders/by_path`
- [ ] `GET /api/v1/users/:user_id/folders/by_path/*full_path`
- [ ] `GET /api/v1/users/:user_id/folders/by_path`
- [ ] `GET /api/v1/groups/:group_id/folders/by_path/*full_path`
- [ ] `GET /api/v1/groups/:group_id/folders/by_path`

https://canvas.instructure.com/doc/api/files.html#method.folders.resolve_path

diff --git a/tests/fixtures/course.json b/tests/fixtures/course.json
index 9cfe312..8242170 100644
--- a/tests/fixtures/course.json
+++ b/tests/fixtures/course.json
@@ -2211,13 +2211,12 @@
 				"name": "course_files",
 				"full_name": "course_files"
 			},
-
 			{
 				"id": 3,
 				"files_count": 0,
 				"folders_count": 1,
 				"name": "Folder_Level_1",
-				"full_name": "course_files"
+				"full_name": "course_files/Folder_Level_1"
 			},
 			{
 				"id": 4,
@@ -2235,5 +2234,19 @@
 			}
 		],
 		"status_code": 200
+	},
+    "resolve_path_null": {
+		"method": "GET",
+		"endpoint": "courses/1/folders/by_path",
+		"data": [
+            {
+				"id": 2,
+				"files_count": 0,
+				"folders_count": 1,
+				"name": "course_files",
+				"full_name": "course_files"
+			}
+        ],
+		"status_code": 200
 	}
 }
diff --git a/tests/fixtures/group.json b/tests/fixtures/group.json
index 57af19e..c115946 100644
--- a/tests/fixtures/group.json
+++ b/tests/fixtures/group.json
@@ -983,5 +983,54 @@
 			}
 		],
 		"status_code": 200
+	},
+    "resolve_path": {
+		"method": "GET",
+		"endpoint": "groups/1/folders/by_path/Folder_Level_1/Folder_Level_2/Folder_Level_3",
+		"data": [
+            {
+				"id": 2,
+				"files_count": 0,
+				"folders_count": 1,
+				"name": "files",
+				"full_name": "files"
+			},
+			{
+				"id": 3,
+				"files_count": 0,
+				"folders_count": 1,
+				"name": "Folder_Level_1",
+				"full_name": "files/Folder_Level_1"
+			},
+			{
+				"id": 4,
+				"files_count": 0,
+				"folders_count": 1,
+				"name": "Folder_Level_2",
+				"full_name": "files/Folder_Level_1/Folder_Level_2"
+			},
+			{
+				"id": 5,
+				"files_count": 0,
+				"folders_count": 0,
+				"name": "Folder_Level_3",
+				"full_name": "files/Folder_Level_1/Folder_Level_2/Folder_Level_3"
+			}
+		],
+		"status_code": 200
+	},
+    "resolve_path_null": {
+		"method": "GET",
+		"endpoint": "groups/1/folders/by_path",
+		"data": [
+            {
+				"id": 2,
+				"files_count": 0,
+				"folders_count": 1,
+				"name": "files",
+				"full_name": "files"
+			}
+        ],
+		"status_code": 200
 	}
 }
diff --git a/tests/fixtures/user.json b/tests/fixtures/user.json
index 2a41536..b180fc6 100644
--- a/tests/fixtures/user.json
+++ b/tests/fixtures/user.json
@@ -972,5 +972,54 @@
 			}
 		],
 		"status_code": 200
+	},
+    "resolve_path": {
+		"method": "GET",
+		"endpoint": "users/1/folders/by_path/Folder_Level_1/Folder_Level_2/Folder_Level_3",
+		"data": [
+            {
+				"id": 2,
+				"files_count": 0,
+				"folders_count": 1,
+				"name": "my_files",
+				"full_name": "my_files"
+			},
+			{
+				"id": 3,
+				"files_count": 0,
+				"folders_count": 1,
+				"name": "Folder_Level_1",
+				"full_name": "my_files/Folder_Level_1"
+			},
+			{
+				"id": 4,
+				"files_count": 0,
+				"folders_count": 1,
+				"name": "Folder_Level_2",
+				"full_name": "my_files/Folder_Level_1/Folder_Level_2"
+			},
+			{
+				"id": 5,
+				"files_count": 0,
+				"folders_count": 0,
+				"name": "Folder_Level_3",
+				"full_name": "my_files/Folder_Level_1/Folder_Level_2/Folder_Level_3"
+			}
+		],
+		"status_code": 200
+	},
+    "resolve_path_null": {
+		"method": "GET",
+		"endpoint": "users/1/folders/by_path",
+		"data": [
+            {
+				"id": 2,
+				"files_count": 0,
+				"folders_count": 1,
+				"name": "my_files",
+				"full_name": "my_files"
+			}
+        ],
+		"status_code": 200
 	}
 }
diff --git a/tests/test_course.py b/tests/test_course.py
index 3cdc9a5..8c30035 100644
--- a/tests/test_course.py
+++ b/tests/test_course.py
@@ -1701,11 +1701,21 @@ class TestCourse(unittest.TestCase):
         folder_list = [folder for folder in folders]
         self.assertEqual(len(folder_list), 4)
         self.assertIsInstance(folder_list[0], Folder)
-        for folder_name, folder in zip(
-            ("course_files/" + full_path).split("/"), folders
-        ):
+        folder_names = ("course_files/" + full_path).split("/")
+        for folder_name, folder in zip(folder_names, folders):
             self.assertEqual(folder_name, folder.name)
 
+    # resolve_path() with null input
+    def test_resolve_path_null(self, m):
+        register_uris({"course": ["resolve_path_null"]}, m)
+
+        # test with null input
+        root_folder = self.course.resolve_path()
+        root_folder_list = [folder for folder in root_folder]
+        self.assertEqual(len(root_folder_list), 1)
+        self.assertIsInstance(root_folder_list[0], Folder)
+        self.assertEqual("course_files", root_folder_list[0].name)
+
 
 @requests_mock.Mocker()
 class TestCourseNickname(unittest.TestCase):
diff --git a/tests/test_group.py b/tests/test_group.py
index 5fa398a..705dff9 100644
--- a/tests/test_group.py
+++ b/tests/test_group.py
@@ -578,6 +578,30 @@ class TestGroup(unittest.TestCase):
 
         self.assertEqual(2, len(licenses))
 
+    # resolve_path()
+    def test_resolve_path(self, m):
+        register_uris({"group": ["resolve_path"]}, m)
+
+        full_path = "Folder_Level_1/Folder_Level_2/Folder_Level_3"
+        folders = self.group.resolve_path(full_path)
+        folder_list = [folder for folder in folders]
+        self.assertEqual(len(folder_list), 4)
+        self.assertIsInstance(folder_list[0], Folder)
+        folder_names = ("files/" + full_path).split("/")
+        for folder_name, folder in zip(folder_names, folders):
+            self.assertEqual(folder_name, folder.name)
+
+    # resolve_path() with null input
+    def test_resolve_path_null(self, m):
+        register_uris({"group": ["resolve_path_null"]}, m)
+
+        # test with null input
+        root_folder = self.group.resolve_path()
+        root_folder_list = [folder for folder in root_folder]
+        self.assertEqual(len(root_folder_list), 1)
+        self.assertIsInstance(root_folder_list[0], Folder)
+        self.assertEqual("files", root_folder_list[0].name)
+
 
 @requests_mock.Mocker()
 class TestGroupMembership(unittest.TestCase):
diff --git a/tests/test_user.py b/tests/test_user.py
index 90e4aea..d46e26f 100644
--- a/tests/test_user.py
+++ b/tests/test_user.py
@@ -540,6 +540,31 @@ class TestUser(unittest.TestCase):
 
         self.assertEqual(2, len(licenses))
 
+    # resolve_path()
+    def test_resolve_path(self, m):
+        register_uris({"user": ["resolve_path"]}, m)
+
+        full_path = "Folder_Level_1/Folder_Level_2/Folder_Level_3"
+        folders = self.user.resolve_path(full_path)
+        folder_list = [folder for folder in folders]
+        self.assertEqual(len(folder_list), 4)
+        self.assertIsInstance(folder_list[0], Folder)
+
+        folder_names = ("my_files/" + full_path).split("/")
+        for folder_name, folder in zip(folder_names, folders):
+            self.assertEqual(folder_name, folder.name)
+
+    # resolve_path() with null input
+    def test_resolve_path_null(self, m):
+        register_uris({"user": ["resolve_path_null"]}, m)
+
+        # test with null input
+        root_folder = self.user.resolve_path()
+        root_folder_list = [folder for folder in root_folder]
+        self.assertEqual(len(root_folder_list), 1)
+        self.assertIsInstance(root_folder_list[0], Folder)
+        self.assertEqual("my_files", root_folder_list[0].name)
+
 
 @requests_mock.Mocker()
 class TestUserDisplay(unittest.TestCase):

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest
3.7
requirements.txt dev_requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.13
Babel==2.14.0
black==23.3.0
-e git+https://github.com/ucfopen/canvasapi.git@d8c0022e020ae0cfdbebecdf4df431dfc3ebf86b#egg=canvasapi
certifi @ file:///croot/certifi_1671487769961/work/certifi
cfgv==3.3.1
charset-normalizer==3.4.1
click==8.1.8
coverage==7.2.7
distlib==0.3.9
docutils==0.15.2
exceptiongroup==1.2.2
filelock==3.12.2
flake8==5.0.4
identify==2.5.24
idna==3.10
imagesize==1.4.1
importlib-metadata==4.2.0
iniconfig==2.0.0
Jinja2==3.1.6
MarkupSafe==2.1.5
mccabe==0.7.0
mypy-extensions==1.0.0
nodeenv==1.9.1
packaging==24.0
pathspec==0.11.2
platformdirs==2.6.2
pluggy==1.2.0
pre-commit==2.21.0
pycodestyle==2.9.1
pyflakes==2.5.0
Pygments==2.17.2
pytest==7.4.4
pytz==2025.2
PyYAML==6.0.1
requests==2.31.0
requests-mock==1.12.1
snowballstemmer==2.2.0
Sphinx==4.3.2
sphinx-rtd-theme==1.3.0
sphinx-version-warning==1.1.2
sphinxcontrib-applehelp==1.0.2
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==2.0.0
sphinxcontrib-jquery==4.1
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
tomli==2.0.1
typed-ast==1.5.5
typing_extensions==4.7.1
urllib3==2.0.7
virtualenv==20.16.2
zipp==3.15.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
  - certifi=2022.12.7=py37h06a4308_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=1.1.1w=h7f8727e_0
  - pip=22.3.1=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.13
      - babel==2.14.0
      - black==23.3.0
      - cfgv==3.3.1
      - charset-normalizer==3.4.1
      - click==8.1.8
      - coverage==7.2.7
      - distlib==0.3.9
      - docutils==0.15.2
      - exceptiongroup==1.2.2
      - filelock==3.12.2
      - flake8==5.0.4
      - identify==2.5.24
      - idna==3.10
      - imagesize==1.4.1
      - importlib-metadata==4.2.0
      - iniconfig==2.0.0
      - jinja2==3.1.6
      - markupsafe==2.1.5
      - mccabe==0.7.0
      - mypy-extensions==1.0.0
      - nodeenv==1.9.1
      - packaging==24.0
      - pathspec==0.11.2
      - platformdirs==2.6.2
      - pluggy==1.2.0
      - pre-commit==2.21.0
      - pycodestyle==2.9.1
      - pyflakes==2.5.0
      - pygments==2.17.2
      - pytest==7.4.4
      - pytz==2025.2
      - pyyaml==6.0.1
      - requests==2.31.0
      - requests-mock==1.12.1
      - snowballstemmer==2.2.0
      - sphinx==4.3.2
      - sphinx-rtd-theme==1.3.0
      - sphinx-version-warning==1.1.2
      - sphinxcontrib-applehelp==1.0.2
      - sphinxcontrib-devhelp==1.0.2
      - sphinxcontrib-htmlhelp==2.0.0
      - sphinxcontrib-jquery==4.1
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==1.0.3
      - sphinxcontrib-serializinghtml==1.1.5
      - tomli==2.0.1
      - typed-ast==1.5.5
      - typing-extensions==4.7.1
      - urllib3==2.0.7
      - virtualenv==20.16.2
      - zipp==3.15.0
prefix: /opt/conda/envs/canvasapi

tests/test_course.py::TestCourse::test_resolve_path_null tests/test_group.py::TestGroup::test_resolve_path tests/test_group.py::TestGroup::test_resolve_path_null tests/test_user.py::TestUser::test_resolve_path tests/test_user.py::TestUser::test_resolve_path_null
tests/test_course.py::TestCourse::test__str__ tests/test_course.py::TestCourse::test_add_grading_standards tests/test_course.py::TestCourse::test_add_grading_standards_empty_list tests/test_course.py::TestCourse::test_add_grading_standards_missing_name_key tests/test_course.py::TestCourse::test_add_grading_standards_missing_value_key tests/test_course.py::TestCourse::test_add_grading_standards_non_dict_list tests/test_course.py::TestCourse::test_column_data_bulk_update tests/test_course.py::TestCourse::test_conclude tests/test_course.py::TestCourse::test_create_assignment tests/test_course.py::TestCourse::test_create_assignment_fail tests/test_course.py::TestCourse::test_create_assignment_group tests/test_course.py::TestCourse::test_create_assignment_overrides tests/test_course.py::TestCourse::test_create_column tests/test_course.py::TestCourse::test_create_column_fail tests/test_course.py::TestCourse::test_create_content_migration tests/test_course.py::TestCourse::test_create_content_migration_bad_migration_type tests/test_course.py::TestCourse::test_create_content_migration_migrator tests/test_course.py::TestCourse::test_create_course_section tests/test_course.py::TestCourse::test_create_discussion_topic tests/test_course.py::TestCourse::test_create_epub_export tests/test_course.py::TestCourse::test_create_external_feed tests/test_course.py::TestCourse::test_create_external_tool tests/test_course.py::TestCourse::test_create_external_tool_client_id tests/test_course.py::TestCourse::test_create_external_tool_missing_params tests/test_course.py::TestCourse::test_create_external_tool_no_params tests/test_course.py::TestCourse::test_create_folder tests/test_course.py::TestCourse::test_create_group_category tests/test_course.py::TestCourse::test_create_late_policy tests/test_course.py::TestCourse::test_create_module tests/test_course.py::TestCourse::test_create_module_fail tests/test_course.py::TestCourse::test_create_page tests/test_course.py::TestCourse::test_create_page_fail tests/test_course.py::TestCourse::test_create_quiz tests/test_course.py::TestCourse::test_create_quiz_fail tests/test_course.py::TestCourse::test_create_rubric_association tests/test_course.py::TestCourse::test_create_rubric_no_association tests/test_course.py::TestCourse::test_create_rubric_with_association tests/test_course.py::TestCourse::test_delete tests/test_course.py::TestCourse::test_delete_external_feed tests/test_course.py::TestCourse::test_edit_front_page tests/test_course.py::TestCourse::test_edit_late_policy tests/test_course.py::TestCourse::test_enroll_user tests/test_course.py::TestCourse::test_export_content tests/test_course.py::TestCourse::test_get__enabled_features tests/test_course.py::TestCourse::test_get_assignment tests/test_course.py::TestCourse::test_get_assignment_group tests/test_course.py::TestCourse::test_get_assignment_groups tests/test_course.py::TestCourse::test_get_assignment_overrides tests/test_course.py::TestCourse::test_get_assignments tests/test_course.py::TestCourse::test_get_assignments_for_group tests/test_course.py::TestCourse::test_get_blueprint tests/test_course.py::TestCourse::test_get_blueprint_default tests/test_course.py::TestCourse::test_get_collaborations tests/test_course.py::TestCourse::test_get_content_migration tests/test_course.py::TestCourse::test_get_content_migrations tests/test_course.py::TestCourse::test_get_course_level_assignment_data tests/test_course.py::TestCourse::test_get_course_level_participation_data tests/test_course.py::TestCourse::test_get_course_level_student_summary_data tests/test_course.py::TestCourse::test_get_custom_columns tests/test_course.py::TestCourse::test_get_discussion_topic tests/test_course.py::TestCourse::test_get_discussion_topics tests/test_course.py::TestCourse::test_get_enrollments tests/test_course.py::TestCourse::test_get_epub_export tests/test_course.py::TestCourse::test_get_external_feeds tests/test_course.py::TestCourse::test_get_external_tool tests/test_course.py::TestCourse::test_get_external_tools tests/test_course.py::TestCourse::test_get_feature_flag tests/test_course.py::TestCourse::test_get_features tests/test_course.py::TestCourse::test_get_file tests/test_course.py::TestCourse::test_get_files tests/test_course.py::TestCourse::test_get_folder tests/test_course.py::TestCourse::test_get_folders tests/test_course.py::TestCourse::test_get_full_discussion_topic tests/test_course.py::TestCourse::test_get_gradebook_history_dates tests/test_course.py::TestCourse::test_get_gradebook_history_details tests/test_course.py::TestCourse::test_get_grading_period tests/test_course.py::TestCourse::test_get_grading_periods tests/test_course.py::TestCourse::test_get_grading_standards tests/test_course.py::TestCourse::test_get_group_categories tests/test_course.py::TestCourse::test_get_groups tests/test_course.py::TestCourse::test_get_late_policy tests/test_course.py::TestCourse::test_get_licenses tests/test_course.py::TestCourse::test_get_migration_systems tests/test_course.py::TestCourse::test_get_module tests/test_course.py::TestCourse::test_get_modules tests/test_course.py::TestCourse::test_get_multiple_submissions tests/test_course.py::TestCourse::test_get_multiple_submissions_grouped_false tests/test_course.py::TestCourse::test_get_multiple_submissions_grouped_invalid tests/test_course.py::TestCourse::test_get_multiple_submissions_grouped_true tests/test_course.py::TestCourse::test_get_outcome_group tests/test_course.py::TestCourse::test_get_outcome_groups_in_context tests/test_course.py::TestCourse::test_get_outcome_import_status tests/test_course.py::TestCourse::test_get_outcome_import_status_latest tests/test_course.py::TestCourse::test_get_outcome_links_in_context tests/test_course.py::TestCourse::test_get_outcome_result_rollups tests/test_course.py::TestCourse::test_get_outcome_results tests/test_course.py::TestCourse::test_get_page tests/test_course.py::TestCourse::test_get_pages tests/test_course.py::TestCourse::test_get_quiz tests/test_course.py::TestCourse::test_get_quiz_fail tests/test_course.py::TestCourse::test_get_quiz_overrides tests/test_course.py::TestCourse::test_get_quizzes tests/test_course.py::TestCourse::test_get_recent_students tests/test_course.py::TestCourse::test_get_root_outcome_group tests/test_course.py::TestCourse::test_get_rubric tests/test_course.py::TestCourse::test_get_rubrics tests/test_course.py::TestCourse::test_get_section tests/test_course.py::TestCourse::test_get_sections tests/test_course.py::TestCourse::test_get_settings tests/test_course.py::TestCourse::test_get_single_grading_standard tests/test_course.py::TestCourse::test_get_submission_history tests/test_course.py::TestCourse::test_get_tabs tests/test_course.py::TestCourse::test_get_uncollated_submissions tests/test_course.py::TestCourse::test_get_user tests/test_course.py::TestCourse::test_get_user_id_type tests/test_course.py::TestCourse::test_get_user_in_a_course_level_assignment_data tests/test_course.py::TestCourse::test_get_user_in_a_course_level_messaging_data tests/test_course.py::TestCourse::test_get_user_in_a_course_level_participation_data tests/test_course.py::TestCourse::test_get_users tests/test_course.py::TestCourse::test_import_outcome_binary tests/test_course.py::TestCourse::test_import_outcome_filepath tests/test_course.py::TestCourse::test_import_outcome_id tests/test_course.py::TestCourse::test_import_outcome_ioerror tests/test_course.py::TestCourse::test_list_blueprint_subscriptions tests/test_course.py::TestCourse::test_list_content_exports tests/test_course.py::TestCourse::test_preview_html tests/test_course.py::TestCourse::test_remove_usage_rights tests/test_course.py::TestCourse::test_reorder_pinned_topics tests/test_course.py::TestCourse::test_reorder_pinned_topics_comma_separated_string tests/test_course.py::TestCourse::test_reorder_pinned_topics_invalid_input tests/test_course.py::TestCourse::test_reorder_pinned_topics_tuple tests/test_course.py::TestCourse::test_reset tests/test_course.py::TestCourse::test_resolve_path tests/test_course.py::TestCourse::test_set_extensions_empty_list tests/test_course.py::TestCourse::test_set_extensions_missing_key tests/test_course.py::TestCourse::test_set_extensions_non_dicts tests/test_course.py::TestCourse::test_set_extensions_not_list tests/test_course.py::TestCourse::test_set_quiz_extensions tests/test_course.py::TestCourse::test_set_usage_rights tests/test_course.py::TestCourse::test_show_content_export tests/test_course.py::TestCourse::test_show_front_page tests/test_course.py::TestCourse::test_submissions_bulk_update tests/test_course.py::TestCourse::test_update tests/test_course.py::TestCourse::test_update_assignment_overrides tests/test_course.py::TestCourse::test_update_settings tests/test_course.py::TestCourse::test_upload tests/test_course.py::TestCourseNickname::test__str__ tests/test_course.py::TestCourseNickname::test_remove tests/test_course.py::TestLatePolicy::test__str__ tests/test_group.py::TestGroup::test__str__ tests/test_group.py::TestGroup::test_create_content_migration tests/test_group.py::TestGroup::test_create_content_migration_bad_migration_type tests/test_group.py::TestGroup::test_create_content_migration_migrator tests/test_group.py::TestGroup::test_create_discussion_topic tests/test_group.py::TestGroup::test_create_external_feed tests/test_group.py::TestGroup::test_create_folder tests/test_group.py::TestGroup::test_create_membership tests/test_group.py::TestGroup::test_create_page tests/test_group.py::TestGroup::test_create_page_fail tests/test_group.py::TestGroup::test_delete tests/test_group.py::TestGroup::test_delete_external_feed tests/test_group.py::TestGroup::test_edit tests/test_group.py::TestGroup::test_edit_front_page tests/test_group.py::TestGroup::test_export_content tests/test_group.py::TestGroup::test_get_activity_stream_summary tests/test_group.py::TestGroup::test_get_assignment_override tests/test_group.py::TestGroup::test_get_collaborations tests/test_group.py::TestGroup::test_get_content_migration tests/test_group.py::TestGroup::test_get_content_migrations tests/test_group.py::TestGroup::test_get_discussion_topic tests/test_group.py::TestGroup::test_get_discussion_topics tests/test_group.py::TestGroup::test_get_external_feeds tests/test_group.py::TestGroup::test_get_file tests/test_group.py::TestGroup::test_get_files tests/test_group.py::TestGroup::test_get_folder tests/test_group.py::TestGroup::test_get_folders tests/test_group.py::TestGroup::test_get_full_discussion_topic tests/test_group.py::TestGroup::test_get_licenses tests/test_group.py::TestGroup::test_get_membership tests/test_group.py::TestGroup::test_get_memberships tests/test_group.py::TestGroup::test_get_migration_systems tests/test_group.py::TestGroup::test_get_page tests/test_group.py::TestGroup::test_get_pages tests/test_group.py::TestGroup::test_get_tabs tests/test_group.py::TestGroup::test_get_users tests/test_group.py::TestGroup::test_invite tests/test_group.py::TestGroup::test_list_content_exports tests/test_group.py::TestGroup::test_preview_processed_html tests/test_group.py::TestGroup::test_remove_usage_rights tests/test_group.py::TestGroup::test_remove_user tests/test_group.py::TestGroup::test_reorder_pinned_topics tests/test_group.py::TestGroup::test_reorder_pinned_topics_comma_separated_string tests/test_group.py::TestGroup::test_reorder_pinned_topics_invalid_input tests/test_group.py::TestGroup::test_reorder_pinned_topics_tuple tests/test_group.py::TestGroup::test_set_usage_rights tests/test_group.py::TestGroup::test_show_content_export tests/test_group.py::TestGroup::test_show_front_page tests/test_group.py::TestGroup::test_update_membership tests/test_group.py::TestGroup::test_upload tests/test_group.py::TestGroupMembership::test__str__ tests/test_group.py::TestGroupMembership::test_remove_self tests/test_group.py::TestGroupMembership::test_remove_user tests/test_group.py::TestGroupMembership::test_update tests/test_group.py::TestGroupCategory::test__str__ tests/test_group.py::TestGroupCategory::test_assign_members tests/test_group.py::TestGroupCategory::test_create_group tests/test_group.py::TestGroupCategory::test_delete_category tests/test_group.py::TestGroupCategory::test_get_groups tests/test_group.py::TestGroupCategory::test_get_users tests/test_group.py::TestGroupCategory::test_update tests/test_user.py::TestUser::test__str__ tests/test_user.py::TestUser::test_add_observee tests/test_user.py::TestUser::test_add_observee_with_credentials tests/test_user.py::TestUser::test_create_communication_channels tests/test_user.py::TestUser::test_create_content_migration tests/test_user.py::TestUser::test_create_content_migration_bad_migration_type tests/test_user.py::TestUser::test_create_content_migration_migrator tests/test_user.py::TestUser::test_create_folder tests/test_user.py::TestUser::test_edit tests/test_user.py::TestUser::test_export_content tests/test_user.py::TestUser::test_get_authentication_events tests/test_user.py::TestUser::test_get_avatars tests/test_user.py::TestUser::test_get_calendar_events_for_user tests/test_user.py::TestUser::test_get_color tests/test_user.py::TestUser::test_get_colors tests/test_user.py::TestUser::test_get_communication_channels tests/test_user.py::TestUser::test_get_content_migration tests/test_user.py::TestUser::test_get_content_migrations tests/test_user.py::TestUser::test_get_courses tests/test_user.py::TestUser::test_get_enabled_features tests/test_user.py::TestUser::test_get_enrollments tests/test_user.py::TestUser::test_get_feature_flag tests/test_user.py::TestUser::test_get_features tests/test_user.py::TestUser::test_get_file tests/test_user.py::TestUser::test_get_files tests/test_user.py::TestUser::test_get_folder tests/test_user.py::TestUser::test_get_folders tests/test_user.py::TestUser::test_get_licenses tests/test_user.py::TestUser::test_get_migration_systems tests/test_user.py::TestUser::test_get_missing_submissions tests/test_user.py::TestUser::test_get_observees tests/test_user.py::TestUser::test_get_page_views tests/test_user.py::TestUser::test_get_profile tests/test_user.py::TestUser::test_get_user_logins tests/test_user.py::TestUser::test_list_content_exports tests/test_user.py::TestUser::test_merge_into_id tests/test_user.py::TestUser::test_merge_into_user tests/test_user.py::TestUser::test_remove_observee tests/test_user.py::TestUser::test_remove_usage_rights tests/test_user.py::TestUser::test_set_usage_rights tests/test_user.py::TestUser::test_show_content_export tests/test_user.py::TestUser::test_show_observee tests/test_user.py::TestUser::test_update_color tests/test_user.py::TestUser::test_update_color_no_hashtag tests/test_user.py::TestUser::test_update_settings tests/test_user.py::TestUser::test_upload tests/test_user.py::TestUser::test_user_get_assignments tests/test_user.py::TestUserDisplay::test__str__
canvasapi/user.py .gitignore canvasapi/group.py canvasapi/course.py
canvasapi/user.py .gitignore canvasapi/group.py canvasapi/course.py