- Bugfix so that the return value of
JWTAuth.refresh()correctly matches that of the auth interface (by returning a tuple of ((access token), (refresh token or None)), instead of just the access token). In particular, this fixes an exception inBoxSessionthat always occurred when it tried to refresh anyJWTAuthobject. - Fixed an exception that was being raised from
ExtendableEnumMeta.__dir__(). - CPython 3.6 support.
- Bugfix so that
JWTAuthopens the PEM private key file in'rb'mode.
- Bugfix so that
OAuth2always has the correct tokens after a call torefresh().
- Added a
revoke()method to theOAuth2class. Calling it will revoke the current access/refresh token pair.
- Added a new class,
LoggingClient. It's aClientthat uses theLoggingNetworkclass so that requests to the Box API and its responses are logged. - Added a new class,
DevelopmentClientthat combinesLoggingClientwith the existingDeveloperTokenClient. This client is ideal for exploring the Box API or for use when developing your application. - Made the
oauthparameter toClientoptional. The constructor now accepts new parameters that it will use to construct theOAuth2instance it needs to auth with the Box API. - Changed the default User Agent string sent with requests to the Box API. It is now 'box-python-sdk-<version>'.
- Box objects have an improved
__repr__, making them easier to identify during debugging sessions. - Box objects now implement
__dir__, making them easier to explore. When created with a Box API response, these objects will now include the API response fields as attributes.
Make sure that
__all__is only defined once, as a list ofstr. Some programs (e.g. PyInstaller) naively parse __init__.py files, and if__all__is defined twice, the second one will be ignored. This can cause__all__to appear as a list ofunicodeon Python 2.Create wheel with correct conditional dependencies and license file.
Change the
licensemeta-data from the full license text, to just a short string, as specified in [1][2].[1] <https://docs.python.org/3.5/distutils/setupscript.html#additional-meta-data>
Include entire test/ directory in source distribution. test/__init__.py was previously missing.
Update documentation.
- Files now support getting a direct download url.
- Added key id parameter to JWT Auth.
Bugfixes
- Fixed import error for installations that don't have redis installed.
- Fixed use of
raw_inputin the developer token auth for py3 compatibility.
- Added a new class,
DeveloperTokenClientthat makes it easy to get started using the SDK with a Box developer token. It uses another new class,DeveloperTokenAuthfor auth.
Bugfixes
- Added limit, offset, and filter_term parameters to
client.users()to match up with the Box API.
- Fix
boxsdk.util.log.setup_logging()on Python 3.
- Add requests-toolbelt to setup.py (it was accidentally missing from 1.3.0).
- CPython 3.5 support.
- Support for cryptography>=1.0 on PyPy 2.6.
- Travis CI testing for CPython 3.5 and PyPy 2.6.0.
- Added a logging network class that logs requests and responses.
- Added new options for auth classes, including storing tokens in Redis and storing them on a remote server.
- Stream uploads of files from disk.
- The SDK now supports setting a password when creating a shared link.
Bugfixes
- Fixed an ImportError for installs that didn't install the [jwt] extras.
- Added support for Box Developer Edition. This includes JWT auth (auth as enterprise or as app user),
and
create_userfunctionality. - Added support for setting shared link expiration dates.
- Added support for setting shared link permissions.
- Added support for 'As-User' requests. See https://box-content.readme.io/#as-user-1
- Improved support for accessing shared items. Items returned from the
client.get_shared_itemmethod will remember the shared link (and the optionally provided shared link password) so methods called on the returned items will be properly authorized.
- Add context_info from failed requests to BoxAPIException instances.
Bugfixes
Item.remove_shared_link()was trying to return an incorrect (according to its own documentation) value, and was also attempting to calculate that value in a way that made an incorrect assumption about the API response. The latter problem caused invocations of the method to raise TypeError. The method now handles the response correctly, and correctly returns typebool.
- Added support for the Box accelerator API for premium accounts.
- Added support for preflight check during file uploads and updates.
- Added support to the search endpoint for metadata filters.
- Added support to the search endpoint for filtering based on result type and content types.
- Added support for the /shared_items endpoint.
client.get_shared_itemcan be used to get information about a shared link. See https://developers.box.com/docs/#shared-items
Bugfixes
- Certain endpoints (e.g. search, get folder items) no longer raise an exception when the response contains items that are neither files nor folders.
- A minor change to namespacing. The
OAuth2class can now be imported directly fromboxsdk. Demo code has been updated to reflect the change.
Features
- The SDK now supports Box metadata. See the metadata docs for more information.
- The object paging API has been improved. SDK extensions that need fine-grained control over when the next "page" of API results will be fetched can now do that.
Example Code
- The example code has been improved to be more robust and to work with all Python versions supported by the SDK (CPython 2.6-2.7, CPython 3.3-3.4, and PyPy).
- The example code has an example on how to use the new metadata feature.
- The README has improved code examples.
Bugfixes
- Oauth2 redirect URIs containing non-ASCII characters are now supported.