Skip to content

Releases: globus/globus-sdk-python

v3.21.0

16 Jun 21:46
3.21.0
560a22d
Compare
Choose a tag to compare
  • AuthAPIError will now parse a unique id found in the error subdocuments as the request_id attribute (#749)

  • Add a FlowsClient.update_run() method. (#744)

  • Add a FlowsClient.delete_run() method. (#747)

  • Add a FlowsClient.cancel_run() method. (#747)

  • Add an experimental subpackage. (#751)

v3.20.1

06 Jun 16:48
3.20.1
Compare
Choose a tag to compare
  • Fix TransferClient.operation_mkdir and TransferClient.operation_rename to no longer send null local_user by default (#741)

v3.20.0

05 Jun 21:00
3.20.0
Compare
Choose a tag to compare
  • Implemented FlowsClient.get_run(...) (#721)

  • Implemented FlowsClient.get_run_logs(...) (#722)

  • Implemented SpecificFlowClient.resume_run(...) (#723)

  • Behavior has changed slightly specifically for TimerAPIError. When parsing fails, the code will be Error and the messages will be empty. The detail field will be treated as the errors array for these errors when it is present and contains an array of objects.

  • ConsentRequiredInfo now accepts required_scope (singular) containing a single string as an alternative to required_scopes. However, it will parse both formats into a required_scopes list. (#726)

  • FlowsClient.list_flows now supports passing a non-string iterable of
    strings to orderby in order to indicate multiple orderings (#730)

  • Support pathlib.Path objects as filenames for the JSON and sqlite token storage adapters. (#734)

  • Several TransferClient methods, TransferData, and DeleteData now support the local_user, source_local_user, and destination_local_user parameters (#736)

  • The TransferRequestsTransport will no longer automatically retry errors with a code of EndpointError

  • Fix pagination on iterable gcs client routes (#738, #739)

    • GCSClient.get_storage_gateway_list

    • GCSClient.get_role_list

    • GCSClient.get_collection_list

    • GCSClient.get_user_credential_list

  • Error parsing in the SDK has been enhanced to better support JSON:API and related error formats with multiple sub-errors. Several attributes are added or changed. For most SDK users, the changes will be completely transparent or a minor improvement. (#725)

    • Error parsing now attempts to detect the format of the error data and will parse JSON:API data differently from non-JSON:API data. Furthermore, parsing is stricter about the expectations about fields and their types. JSON:API parsing now has its own distinct parsing path, followed only when the JSON:API mimetype is present.

    • A new attribute is added to API error objects, errors. This is a list of subdocuments parsed from the error data, especially relevant for JSON:API errors and similar formats. See the ErrorSubdocument documentation for details.

    • A new attribute is now present on API error objects, messages. This is a list of messages parsed from the error data, for errors with multiple messages. When there is only one message, messages will only contain one item.

    • The message field is now an alias for a joined string of messages. Assigning a string to message is supported for error subclasses, but is deprecated.

    • message will now be None when no messages can be parsed from the error data. Previously, the default for message would be an alias for text.

    • All error types now support request_id as an attribute, but it will default to None for errors which do not include a request_id.

    • An additional field is checked by default for error message data, title. This is useful when errors contain title but no detail field. The extraction of messages from errors has been made stricter, especially in the JSON:API case.

    • The code field of errors will no longer attempt to parse only the first code from multiple sub-errors. Instead, code will first parse a top-level code field, and then fallback to checking if all sub-errors have the same code value. The result is that certain errors which would populate a non-default code value no longer will, but the code will also no longer be misleading when multiple errors with different codes are present in an error object.

    • The code field of an error may now be None. This is specifically possible when the error format is detected to be known as JSON:API and there is no code present in any responses.

v3.19.0

14 Apr 15:50
3.19.0
Compare
Choose a tag to compare
  • Added FlowsClient.update_flow(...) (#710)

  • Support passing "include" as a transfer filter_rule method (#712)

  • Documentation for client methods has been improved to more consistently format and display examples and other information (#714)

  • The return type of AuthClient.get_identities is now correctly annotated as an iterable type, globus_sdk.GetIdentitiesResponse (#716)

  • Make the request-like interface for response objects and errors more uniform. (#715)

    • Both GlobusHTTPResponse and GlobusAPIError are updated to ensure that they have the following properties in common: http_status, http_reason, headers, content_type, text

    • GlobusAPIError.raw_text is deprecated in favor of text

    • GlobusHTTPResponse and GlobusAPIError have both gained a new property, binary_content, which returns the unencoded response data as bytes

v3.18.0

16 Mar 21:30
3.18.0
Compare
Choose a tag to compare
  • When users input empty requested_scopes values, these are now rejected with a usage error instead of being translated into the default set of requested_scopes

  • Behaviors which will change in version 4.0.0 of the globus-sdk now emit deprecation warnings.

  • Omitting requested_scopes or specifying it as None is now deprecated and will emit a warning. In version 4, users will always be required to specify their scopes when performing login flows. This applies to the following methods:

    • ConfidentialAppAuthClient.oauth2_client_credentials_tokens
    • AuthClient.oauth2_start_flow
  • SearchClient.update_entry and SearchClient.create_entry are officially deprecated and will emit a warning. These APIs are aliases of SearchClient.ingest, but their existence has caused confusion. Users are encouraged to switch to SearchClient.ingest instead (#695)

  • TransferData.add_item now defaults to omitting recursive rather than setting its value to False. This change better matches new Transfer API behaviors which treat the absence of the recursive flag as meaning autodetect, rather than the previous default of False. Setting the recursive flag can still have beneficial behaviors, but should not be necessary for many use-cases (#696)

  • Fix the type annotation for max_sleep on client transports to allow float values (#697)

  • ConfidentialAppAuthClient.oauth2_get_dependent_tokens now supports the refresh_tokens parameter to enable requests for dependent refresh tokens (#698)

v3.17.0

27 Feb 20:11
3.17.0
Compare
Choose a tag to compare
  • Remove support for python3.6 (#681)

  • Fix a typo in TransferClient.endpoint_manager_task_successful_transfers which prevented calls from being made correctly (#683)

  • Make MutableScope.scope_string a public instance attribute (was _scope_string) (#687)

  • MutableScope objects can now be used in the oauth2_start_flow and oauth2_client_credentials_tokens methods of AuthClient classes as part of requested_scopes (#689)

  • Globus Groups methods which required enums as arguments now also accept a variety of Literal strings in their annotations as well. This is coupled with changes to ensure that strings and enums are always serialized correctly in these cases. (#691)

v3.16.0

07 Feb 18:48
3.16.0
Compare
Choose a tag to compare
  • Fix the Timer code example (#672)

  • New documentation examples for Transfer Task submission in the presence of ConsentRequired errors (#673)

  • Improved GCS Collection datatype detection to support collection#1.6.0 and collection#1.7.0 documents (#675)

    • guest_auth_policy_id is now supported on MappedCollectionDcoument

    • user_message strings over 64 characters are now supported

  • Allow UUID values for the client_id parameter to AuthClient and its subclasses (#676)

  • The session_required_policies attribute of AuthorizationInfo is now parsed as a list of strings when present, and None when absent. (#678)

  • globus_sdk.ArrayResponse and globus_sdk.IterableResponse are now available as names. Previously, these were only importable from globus_sdk.response (#680)

  • ArrayResponse and IterableResponse have better error behaviors when the API data does not match their expected types (#680)

v3.15.1

13 Dec 18:26
3.15.1
fb9ac8b
Compare
Choose a tag to compare
  • AuthorizationParameterInfo now exposes session_required_policies (#658)

  • Fix a bug where TransferClient.endpoint_manager_task_list didn't handle the last_key argument when paginated (#662)

v3.15.0

22 Nov 22:16
3.15.0
Compare
Choose a tag to compare
  • Scope Names can be set explicitly in a ScopeBuilder (#641)

  • Introduced ScopeBuilder.scope_names property (#641)

  • Fixed SpecificFlowClient scope string (#641)

  • Improve the __str__ implementation for OAuthTokenResponse (#640)

  • When GlobusHTTPResponse contains a list, calls to get() will no longer fail with an AttributeError but will return the default value (None if unspecified) instead (#644)

  • Add support for interpret_globs and ignore_missing to DeleteData (#646)

  • A new object, globus_sdk.LocalGlobusConnectServer can be used to inspect the local installation of Globus Connect Server (#647)

    • The object supports properties for endpoint_id and domain_name

    • This only supports Globus Connect Server version 5

  • The filter argument to TransferClient.operation_ls now accepts a list to pass multiple filter params (#652)

  • Fix a bug in the type annotations for transport objects which restricted the size of status code tuples set as classvars (#651)

  • Improvements to MutableScope objects (#654)

    • MutableScope(...).serialize() is added, and str(MutableScope(...)) uses it

    • MutableScope.add_dependency now supports MutableScope objects as inputs

    • The optional argument to add_dependency is deprecated. MutableScope(...).add_dependency(MutableScope("foo", optional=True)) can be used to add an optional dependency

    • ScopeBuilder.make_mutable now accepts a keyword argument optional. This allows, for example, TransferScopes.make_mutable("all", optional=True)

v3.14.0

01 Nov 19:06
3.14.0
Compare
Choose a tag to compare
  • Add support for FlowsClient.get_flow and FlowsClient.delete_flow (#631, #626)
  • Add a close() method to SQLiteAdapter which closes the underlying connection (#628)
  • Python 3.11 is now officially supported (#628)