CHANGELOG

See Versioning Policy for our versioning policy.

The upgrading doc is a good reference if you are upgrading to a major new version of the SDK.

Unreleased

v3.0.1

  • ScopeBuilder objects now define the type of __getattr__ for mypy to know that dynamic attributes are strings (#472)

  • Fix type remaining ignore usages in globus-sdk (#473)

  • Fix malformed PEP508 python_version bound in dev dependencies (#474)

v3.0.0

  • Add filter_is_error parameter to advanced task list (#467)

  • Add a LocalGlobusConnectPersonal.get_owner_info() for looking up local user information from gridmap (#466)

  • Add support for GCS collection create and update. This includes new data helpers, MappedCollectionDcoument and GuestCollectionDocument (#468)

  • Remove support for bytes values for fields consuming UUIDs (#471)

  • Add support for specifying config_dir to LocalGlobusConnectPersonal (#470)

v3.0.0b4

  • Minor fix to wheel builds: do not declare wheels as universal (#444)

  • Add a new GCSClient class for interacting with GCS Manager APIs (#447)

  • Rename GCSScopeBuilder to GCSCollectionScopeBuilder and add GCSEndpointScopeBuilder. The GCSClient includes helpers for instantiating these scope builders (#448)

  • GCSClient supports get_collection and delete_collection. get_collection uses a new UnpackingGCSResponse response type (#451, #464)

  • Remove BaseClient.qjoin_path (#452)

  • Enforce keyword-only arguments for most SDK-provied APIs (#453)

  • Fix annotations for server_id on TransferClient methods (#455)

  • Add delete_destination_extra param to TransferData (#456)

  • Ensure all TransferClient method parameters are documented (#449, #454, #457, #458, #459, #461, #462)

  • TransferClient.endpoint_manager_task_list now takes filters as named keyword arguments, not only in query_params (#460)

  • Fix visibility typo in GroupsClient (#463)

  • All type annotations for Sequence which could be relaxed to Iterable have been updated (#465)

v3.0.0b3

  • Flesh out the GroupsClient and add helpers for interacting with the Globus Groups service, including enumerated constants, payload builders, and a high-level client for doing non-batch operations called the GroupsManager (#435, #443)

  • globus-sdk now provides much more complete type annotations coverage, allowing type checkers like mypy to catch a much wider range of usage errors (#442)

v3.0.0b2

  • Add scope constants and scope construction helpers. See new documentation on scopes and ScopeBuilders for details (#437, #440)

  • Improve the rendering of API exceptions in stack traces to include the method, URI, and authorization scheme (if recognized) (#439)

  • Payload helper objects (TransferData, DeleteData, and SearchQuery) now inherit from a custom object, not dict, but they are still dict-like in behavior (#438)

  • API Errors now have an attached info object with parsed error data where applicable. See the ErrorInfo documentation for details (#441)

v3.0.0b1

  • Add support for TransferClient.get_shared_endpoint_list (#434)

  • Passthrough parameters to SDK methods for query params and body params are no longer accepted as extra keyword arguments. Instead, they must be passed explicitly in a query_params, body_params, or additional_fields dictionary, depending on the context (#433)

  • The interface for retry parameters has been simplified. RetryPolicy objects have been merged into the transport object, and retry parameters like max_retries may now be supplied directly as transport_params (#430)

v3.0.0a4

  • Fix several paginators which were broken in 3.0.0a3 (#431)

  • Add BaseClient to the top-level exports of globus_sdk, so it can now be accessed under the name globus_sdk.BaseClient

  • Autodocumentation of paginated methods (#432)

v3.0.0a3

  • Pagination has changed significantly. (#418)

** Methods which support pagination like TransferClient.endpoint_search no

longer return an iterable PaginatedResource type. Instead, these client methods return GlobusHTTPResponse objects with a single page of results.

** Paginated variants of these methods are available by renaming a call from

client.<method> to client.paginated.<method>. So, for example, a TransferClient now supports client.paginated.endpoint_search(). The arguments to this function are the same as the original method.

** client.paginated.<method> calls return Paginator objects, which

support two types of iteration: by pages() and by items(). To replicate the same behavior as SDK v1.x and v2.x PaginatedResource types, use items(), as in client.paginated.endpoint_search("query").items()

v3.0.0a2

  • Refactor response classes (#425)

  • A new subpackage is available for public use, globus_sdk.tokenstorage (#405)

  • Add client for Globus Groups API, globus_sdk.GroupsClient. Includes a dedicated error class, globus_sdk.GroupsAPIError

v3.0.0a1

  • Update documentation site style and layout (#423)

  • The interface for GlobusAuthorizer now defines get_authorization_header instead of set_authorization_header, and additional keyword arguments are not allowed (#422)

  • New Transport layer handles HTTP details, variable payload encodings, and automatic request retries (#417)

  • Instead of json_body=... and text_body=..., use data=... combined with encoding="json", encoding="form", or encoding="text" to format payload data. encoding="json" is the default when data is a dict.

  • By default, requests are retried automatically on potentially transient error codes (e.g. http_status=500) and network errors with exponential backoff

  • globus_sdk.BaseClient and its subclasses define retry_policy and transport_class class attributes which can be used to customize the retry behavior used

  • globus-sdk now provides PEP561 typing data (#420)

  • The JWT dependency has been updated to pyjwt>=2,<3 (#416)

  • The config files in ~/.globus.cfg and /etc/globus.cfg are no longer used. Configuration can now be done via environment variables (#409)

  • BaseClient.app_name is a property with a custom setter, replacing set_app_name (#415)

  • OAuthTokenResponse.decode_id_token can now be provided a JWK and openid configuration as parameters. AuthClient implements methods for fetching these data, so that they can be fetched and stored outside of this call. There is no automatic caching of these data. (#403)

  • Remove allowed_authorizer_types restriction from BaseClient (#407)

  • Remove auth_client=... parameter to OAuthTokenResponse.decode_id_token (#400)

v2.0.1

Note

globus-sdk version 2.0.0 was yanked due to a release issue. Version 2.0.1 is the first 2.x version.

v1.11.0

  • Add support for task skipped errors via TransferClient.task_skipped_errors and TransferClient.endpoint_manager_task_skipped_errors (#393)

  • Internal maintenance (#389, #390, #391, #392)

v1.10.0

  • Add support for pyinstaller installation of globus-sdk (#387)

v1.9.1

  • Fix GlobusHTTPResponse to handle responses with no Content-Type header (#375)

v1.9.0

  • Add globus_sdk.IdentityMap, a mapping-like object for Auth ID lookups (#367)

  • Minor documentation and build improvements (#369, #362)

  • Don’t append trailing slashes when no path is given to a low-level client method like get() (#364)

  • Add external_checksum and checksum_algorithm to TransferData.add_item() named arguments (#365)

v1.8.0

  • Add a property to paginated results which shows if more results are available (#346)

  • Update docs to state that Globus SDK uses semver (#357)

  • Fix RefreshTokenAuthorizer to handle a new refresh_token being sent back by Auth (#359)

  • Fix typo in endpoint_search log message (#355)

  • Fix Globus Web App activation links in docs (#356)

v1.7.1

  • Allow arbitrary keyword args to TransferData.add_item() and DeleteData.add_item(), which passthrough to the item bodies (#339)

  • Minor internal improvements (#342, #343)

v1.7.0

  • Add get_task and get_task_list to SearchClient (#335, #336)

  • Internal maintenance and testing improvements (#331, #334, #333)

v1.6.1

  • Replace egg distribution format with wheels (#314)

  • Internal maintenance

v1.6.0

  • Correct handling of environment=”production” as an argument to client construction (#307)

  • RenewingAuthorizer and its subclasses now expose the check_expiration_time method (#309)

  • Allow parameters to be passed to customize the request body of ConfidentialAppAuthClient.oauth2_get_dependent_tokens (#308)

  • Use sha256 hashes of tokens (instead of last 5 chars) in debug logging (#305)

  • Add the patch() method to BaseClient and its subclasses, sending an HTTP PATCH request (#302)

  • Officially add support for python 3.7 (#300)

  • Make pickling SDK objects safer (but still not officially supported!) (#284)

  • Malformed SDK usage may now raise GlobusSDKUsageError instead of ValueError. GlobusSDKUsageError inherits from ValueError (#281)

  • Numerous documentation improvements (#279, #294, #296, #297)

v1.5.0

  • Add support for retrieving a local Globus Connect Personal endpoint’s UUID (#276)

  • Fix bug in search client parameter handling (#274)

v1.4.1

  • Send Content-Type: application/json on requests with JSON request bodies (#266)

  • Support connection timeouts. Default timeout of 60 seconds (#264)

v1.4.0

  • Access token response data by way of scope name (#261)

  • Make cryptography a strict requirement, globus-sdk[jwt] is no longer necessary (#257, #260)

  • Simplify OAuthTokenResponse.decode_id_token to not require the client as an argument (#255)

  • Add (beta) SearchClient class (#259)

v1.3.0

  • Improve error message when installation onto python2.6 is attempted (#245)

  • Raise errors on client instantiation when GLOBUS_SDK_ENVIRONMENT appears to be invalid, support GLOBUS_SDK_ENVIRONMENT=preview (#247)

v1.2.2

  • Allow client classes to accept base_url as an argument to _init__() (#241)

  • Fix packaging to not include testsuite (#232)

  • Improve docs on TransferClient helper classes (#231, #233)

v1.2.1

  • Use PyJWT instead of python-jose for JWT support (#227)

v1.2.0

  • Add Transfer symlink support (#218)

  • Better handle UTF-8 inputs (#208)

  • Fix endpoint manager resume (#224)

  • Doc Updates & Minor Improvements

v1.1.1

  • Use correct paging style when making endpoint_manager_task_list calls (#210)

v1.1.0

  • Add endpoint_manager methods to TransferClient (#191, #199, #200, #201, #203)

  • Change “identities_set” to “identity_set” for token introspection (#163)

  • Fix docs references to oauth2_start_flow_* (#190)

  • Support iterable requested_scopes everywhere (#185)

  • Add python 3.6 to supported platforms (#180)

  • Remove “Beta” from docs (#179)

  • Update dev status classifier to 5, prod (#178)

  • Numerous improvements to testsuite

v1.0.0

  • Adds AuthAPIError with more flexible error payload handling (#175)

v0.7.2

  • Add AuthClient.validate_token (#172)

  • Bugfix for on_refresh users of RefreshTokenAuthorizer and ClientCredentialsAuthorizer (#173)

v0.7.1

  • Remove deprecated oauth2_start_flow_* methods (#170)

  • Add the ClientCredentialsAuthorizer (#164)

  • Add jwt extra install target. pip install "globus_sdk[jwt]" installs python-jose (#169)

v0.7.0

  • Make OAuthTokenResponse.decode_id_token() respect ssl_verify=no configuration (#161)

  • Remove all properties of OAuthTokenResponse other than by_resource_server (#162)

v0.6.0

  • Opt out of the Globus Auth behavior where a GET of an identity username will provision that identity (#145)

  • Fixup OAuth2 PKCE to be spec-compliant (#154)

  • Wrap some requests network-related errors in custom exceptions (#155)

  • Add deadline support to TransferData and DeleteData (#159)

v0.5.1

  • Add support for the prefill_named_grant option to the Native App authorization flow (#143)

  • Unicode string improvements (#129)

  • Better handle unexpected error payloads (#135)