0.8.2 - 2018-01-24
- Fixed an issue where editing and deleting user logins would use incorrect IDs.
0.8.1 - 2018-01-23
- Fixed several incorrect and missing docstrings
- Fixed an issue where Canvas returning
while(1);
at the beginning of a response to uploading a file prevented uploads from completing. - Fixed an issue where a trailing slash in the provided BASE_URL would cause
PaginatedList
objects to fail. - Fixed an issue where combine_kwargs was transposing empty brackets and keys when a dictionary had a list as a value.
0.8.0 - 2018-01-04
- Account
- Delete a sub account
- Grading Standards (Thanks, @JonGuilbe)
- Notification Preferences (Thanks, @a-goetz)
- Update a preference
- Update preferences by category
- Update multiple preferences
- Outcomes (Thanks, @a-goetz)
- Quiz Question Groups (Thanks, @JonGuilbe)
- Rubric (Thanks, @sigurdurb)
- Added support for other iterables as parameter values. (Thanks, @liblit)
- For many endpoints that accept an "object id", either a CanvasAPI Object or integer ID can now be passed. (Thanks, @a-goetz)
- Added a requester cache that rememebers the last 5 requests to Canvas. It can be accessed as the attribute
_cache
of therequester object
. (e.g.course._requester._cache
) - Files can now be downloaded directly from the
File
object in one of two ways: (Thanks, @DanBrink91)get_contents
will directly return the contents of the file. (e.g.file.get_contents()
)download
will download the file and save it to the provided path. (e.g.file.download('example.txt')
)
- Moved several methods exclusive to the API Key owner's user from the
User
class to a new class calledCurrentUser
. There is a new method in theCanvas
class calledget_current_user
to access this object. (e.g.canvas.get_current_user()
) (Thanks, @DanBrink91)
- Fixed a bug where creating conversations wouldn't work until the user iterated over the response.
- Lots of formatting fixes and spelling corrections.
Including /api/v1/
at the end of the API URL passed to a new Canvas
object is now deprecated. Users should now only pass the root URL into the Canvas
object (e.g. "https://example.com/api/v1/"
should now be "https://example.com"
).
For now, users including /api/v1/
will see a DeprecationWarning
, but things will otherwise operate normally. The ability to continue using /api/v1/
will be removed in a future release.
0.7.0 - 2017-10-04
Thanks to all the contributors who helped with this release: @stephenwoosley, @jackrsteiner, and @allygator. You guys are awesome!
Huge thanks to @liblit for lots of issues, suggestions, and pull requests. Couldn't have done all this without you!
- Upload file to a Submission Comment (
Submission.upload_comment()
)
- Switched to
flake8
instead of justpyflakes
andpycodestyle
. - Added markdown linter and fixed related issues.
DateTime
"Smart Objects" are now timezone aware.- Keyword arguments now support lists and tuples. Can be nested in other lists and/or inside dictionaries. See issue #55 for details.
DateTime
objects passed as params now auto-format to ISO 8601 strings.- Added table of contents to README.
- Updated "Getting Started" page in Documentation to match README.
- Fixed an issue where editing a page would report a missing ID.
- Fixed an issue where kwargs weren't passed along in
Course.get_pages()
. - Fixed an issue where
Course.list_multiple_submissions()
would always set grouped toTrue
. It now correctly always sets grouped toFalse
by removing the param. - Fixed several issues relating to
DiscussionTopic
methods returning incorrect types. - Fixed an issue where reordering pinned topics had no valid values for the order param.
0.6.0 - 2017-08-15
- Added support for SIS IDs to get accounts, courses, groups and sections. (Thanks for the suggestion, @sigurdurb!)
0.5.1 - 2017-08-02
- Moved documentation to Read the Docs.
- Fixed an issue where kwargs in Python 2.7 wouldn't be properly formatted when converted to get parameters.
0.5.0 - 2017-07-10
- Files (Get file from Canvas, Course, Group, or User)
- Added support for Python 3.3, 3.4, 3.5, and 3.6 while maintaining 2.7 compatibility.
- Fixed an issue where non-ASCII characters in CanvasObject data would throw UnicodeEncodeError exceptions.
0.4.0 - 2017-06-16
- Analytics
- Announcement External Feeds
- Authentication Providers
- Communications Channels
- Files
- Logins
- Notification Preferences
- Submissions
- Search
- Tabs
- User Observees
- Set up TravisCI and Coveralls.
- Added Badges to README.
- Updated CONTRIBUTING.md to more accurately reflect our dev process.
0.3.0 - 2017-03-30
- Appointment Groups
- Assignment Groups
- Bookmarks
- Calendar Events
- Discussions
- External Tools
- Updated CHANGELOG.md format
- Created AUTHORS.md
- Added LICENSE
- Added
pycodestyle
andpyflakes
requirements - Added setup.cfg with
pycodestyle
max-line-length definition - Moved .coveragerc settings to setup.cfg
- Changed
assert
statements to use the assertion methods built into unittest.
0.2.0 - 2017-01-04
- Groups
- Roles
- Page Revisions
- Sections
- Conversations
- Standardized
__str__
methods. They now (generally) follow the convention of the value of the single most relevant field followed by an ID in parentheses. - Reworked how
requests_mock
is used in test suite. - Nested dictionaries are now allowed as kwargs
- Split 401 into two exceptions:
InvalidAccessToken
if'WWW-Authenticate'
header is present. Otherwise,Unauthorized
.
- Moved some incorrectly placed enrollment methods to the Enrollment class.
- Corrected
Process
class toProgress
- Minor text fixes.
0.1.2 - 2016-07-22
- Getting a Group
- Uploading a file to a Course or User
- Several Page related endpoints
- Added contribution guide
- Added Docker container for testing (e.g. with Jenkins)
- Split requirements files into three:
- dev_requirements.txt
- tests_requirements.txt
- requirements.txt
- Added some missing parameters
- Fixed some incorrectly defined parameters
- Fixed an issue where tests would fail due to an improperly configured requires block