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.

v3.19.0 (2023-04-14)#

  • 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 (2023-03-16)#

  • 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 (2023-02-27)#

  • 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 (2023-02-07)#

  • 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 (2022-12-13)#

  • 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 (2022-11-22)#

  • 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 (2022-11-01)#

  • 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)

v3.13.0 (2022-10-13)#

  • Add connect_params to SQLiteAdapter, enabling customization of the sqlite connection (#613)

  • Add FlowsClient.create_flow(...) (#614)

  • Add globus_sdk.SpecificFlowClient to manage interactions performed against a specific flow (#616)

  • Fix rst formatting for a few nested bullet points in existing changelog (#619)

  • Add support to FlowsClient.list_flows for pagination and the orderby parameter (#621, #622)

v3.12.0 (2022-09-21)#

  • Add Mapped Collection policy helper types for constructing policies data. (#607) The following new types are introduced:

    • CollectionPolicies (the base class for these types)

    • POSIXCollectionPolicies

    • POSIXStagingCollectionPolicies

    • GoogleCloudStorageCollectionPolicies

  • Fix bug where UserCredential policies were being converted to a string (#608)

  • Corrected the Flows service resource_server string to (#612)

v3.11.0 (2022-08-30)#

  • Adjust behaviors of TransferData and TimerJob to make TimerJob.from_transfer_data work and to defer requesting the submission_id until the task submission call (#602)

    • TransferData avoids passing null for several values when they are omitted, ranging from optional parameters to add_item to skip_activation_check

    • TransferData and DeleteData now support usage in which the transfer_client parameters is None. In these cases, if submission_id is omitted, it will be omitted from the document, allowing the creation of a partial task submsision document with no submission_id

    • TimerJob.from_transfer_data will now raise a ValueError if the input document contains submission_id or skip_activation_check

    • TransferClient.submit_transfer and TransferClient.submit_delete now check to see if the data being sent contains a submission_id. If it does not, get_submission_id is called automatically and set as the submission_id on the payload. The new submission_id is set on the object passed to these methods, meaning that these methods are now side-effecting.

The newly recommended usage for TransferData and DeleteData is to pass the endpoints as named parameters:

# -- for TransferData --
# old usage
transfer_client = TransferClient()
transfer_data = TransferData(transfer_client, ep1, ep2)
# new (recommended) usage
transfer_data = TransferData(source_endpoint=ep1, destination_endpoint=ep2)

# -- for DeleteData --
# old usage
transfer_client = TransferClient()
delete_data = TransferData(transfer_client, ep)
# new (recommended) usage
delete_data = DeleteData(endpoint=ep)
  • Implement __dir__ for the lazy importer in globus_sdk. This enables tab completion in the interpreter and other features with rely upon dir(globus_sdk) (#603)

  • Add an initial Globus Flows client class, globus_sdk.FlowsClient (#604)

    • globus_sdk.FlowsAPIError is the error class for this client

    • FlowsClient.list_flows is implemented as a method for listing deployed flows, with some of the filtering parameters of this API supported as keyword arguments

    • The scopes for the Globus Flows API can be accessed via globus_sdk.scopes.FlowsScopes or globus_sdk.FlowsClient.scopes

v3.10.1 (2022-07-11)#

  • Add guest collection example script to docs (#590)

  • Use setattr in the lazy-importer. This makes attribute access after imports faster by several orders of magnitude. (#591)

v3.10.0 (2022-06-27)#

  • Add User Credential methods to GCSClient (#582)

    • get_user_credential_list

    • get_user_credential

    • create_user_credential

    • update_user_credential

    • delete_user_credential

  • Add connector_id_to_name helper to GCSClient to resolve GCS Connector UUIDs to human readable Connector display names (#582)

  • Remove nonexistent monitor_ongoing scope from TransferScopes (#583)

v3.9.0 (2022-06-02)#

  • Add helper objects and methods for interacting with Globus Connect Server Storage Gateways (#554)

    • New methods on GCSClient: create_storage_gateway, get_storage_gateway, get_storage_gateway_list, update_storage_gateway, delete_storage_gateway

    • New helper classes for constructing storage gateway documents. StorageGatewayDocument is the main one, but also POSIXStoragePolicies and POSIXStagingStoragePolicies are added for declaring the storage gateway policies field. More policy helpers will be added in future versions.

  • Add support for more StorageGatewayPolicies documents. (#562) The following types are now available:

    • BlackPearlStoragePolicies

    • BoxStoragePolicies

    • CephStoragePolicies

    • GoogleDriveStoragePolicies

    • GoogleCloudStoragePolicies

    • OneDriveStoragePolicies

    • AzureBlobStoragePolicies

    • S3StoragePolicies

    • ActiveScaleStoragePolicies

    • IrodsStoragePolicies

    • HPSSStoragePolicies

  • Add https scope to GCSCollectionScopeBuilder (#563)

  • Update the fields used to extract AuthAPIError messages (#566)

  • ScopeBuilder objects now implement __str__ for easy viewing. For example, print(globus_sdk.TransferClient.scopes) (#568)

  • Imports from globus_sdk are now evaluated lazily via module-level __getattr__ on python 3.7+ (#571)

    • This improves the performance of imports for almost all use-cases, in some cases by over 80%

    • The method globus_sdk._force_eager_imports() can be used to force non-lazy imports, for latency sensitive applications which wish to control when the time cost of import evaluation is paid. This method is private and is therefore is not covered under the globus-sdk’s SemVer guarantees, but it is expected to remain stable for the foreseeable future.

  • Several improvements to Transfer helper objects (#573)

    • Add TransferData.add_filter_rule for adding filter rules (exclude rules) to transfers

    • Add skip_activation_check as an argument to DeleteData and TransferData

    • The sync_level argument to TransferData is now annotated more accurately to reject bad strings

  • Improve handling of array-style API responses (#575)

    • Response objects now define __bool__ as bool(data). This means that bool(response) could be False if the data is {}, [], 0, or other falsey-types. Previously, __bool__ was not defined, meaning it was always True

    • globus_sdk.response.ArrayResponse is a new class which describes responses which are expected to hold a top-level array. It satisfies the sequence protocol, allowing indexing with integers and slices, iteration over the array data, and length checking with len(response)

    • globus_sdk.GroupsClient.get_my_groups returns an ArrayResponse, meaning the response data can now be iterated and otherwise used

v3.8.0 (2022-05-04)#

  • Several changes expose more details of HTTP requests (#551)

    • GlobusAPIError has a new property headers which provides the case-insensitive mapping of header values from the response

    • GlobusAPIError and GlobusHTTPResponse now include http_reason, a string property containing the “reason” from the response

    • BaseClient.request and RequestsTransport.request now have options for setting boolean options allow_redirects and stream, controlling how requests are processed

  • New tools for working with optional and dependent scope strings (#553)

    • A new class is provided for constructing optional and dependent scope strings, MutableScope. Import as in from globus_sdk.scopes import MutableScope

    • ScopeBuilder objects provide a method, make_mutable, which converts from a scope name to a MutableScope object. See documentation on scopes for usage details

v3.7.0 (2022-04-08)#

  • Add a client for the Timer service (#548)

    • Add TimerClient class, along with TimerJob for constructing data to pass to the Timer service for job creation, and TimerAPIError

    • Modify globus_sdk.config utilities to provide URLs for Actions and Timer services

  • Fix annotations to allow request data to be a string. This is supported at runtime but was missing from annotations. (#549)

v3.6.0 (2022-03-18)#

  • ScopeBuilder objects now support known_url_scopes, and known scope arguments to a ScopeBuilder may now be of type str in addition to list[str] (#536)

  • Add the RequestsTransport.tune contextmanager to the transport layer, allowing the settings on the transport to be set temporarily (#540)

v3.5.0 (2022-03-02)#

  • globus_sdk.IdentityMap can now take a cache as an input. This allows multiple IdentityMap instances to share the same storage cache. Any mutable mapping type is valid, so the cache can be backed by a database or other storage (#500)

  • Add TransferRequestsTransport class that does not retry ExternalErrors. This fixes cases in which the TransferClient incorrectly retried requests (#522)

  • Use the “reason phrase” as a failover for stringified API errors with no body (#524)

  • Add support for include as a parameter to GroupsClient.get_group. include can be a string or iterable of strings (#528)

  • Enhance documentation for all of the parameters on methods of GroupsClient

  • Add a new method to tokenstorage, SQLiteAdapter.iter_namespaces, which iterates over all namespaces visible in the token database (#529)

v3.4.2 (2022-02-18)#

  • Fix the pagination behavior for TransferClient on task_skipped_errors and task_successful_transfers, and apply the same fix to the endpoint manager variants of these methods. Prior to the fix, paginated calls would return a single page of results and then stop (#520)

v3.4.1 (2022-02-11)#

  • The typing_extensions requirement in package metadata now sets a lower bound of 4.0, to force upgrades of installations to get a new enough version (#518)

v3.4.0 (2022-02-11)#

  • Support pagination on SearchClient.post_search (#507)

  • Add support for scroll queries to SearchClient. SearchClient.scroll and SearchClient.paginated.scroll are now available as methods, and a new helper class, SearchScrollQuery, can be used to easily construct scrolling queries. (#507)

  • Add methods to SearchClient for managing index roles. create_role, delete_role, and get_role_list (#507)

  • Add mapped_collection and filter query arguments to GCSClient.get_collection_list (#510)

  • Add role methods to GCSClient (#513)

    • GCSClient.get_role_list lists endpoint or collection roles

    • GCSClient.create_role creates a role

    • GCSClient.get_role gets a single role

    • GCSClient.delete_role deletes a role

  • The response from AuthClient.get_identities now supports iteration, returning results from the "identities" array (#514)

v3.3.1 (2022-01-25)#

  • Packaging bugfix. globus-sdk is now built with pypa’s build tool, to resolve issues with wheel builds.

v3.3.0 (2022-01-25)#

  • Add update_group method to GroupsClient (#506)

  • The TransferData and DeleteData helper objects now accept the following parameters: notify_on_succeeded, notify_on_failed, and notify_on_inactive. All three are boolean parameters with a default of True. (#502)

  • Several minor bugs have been found and fixed (#504)

    • Exceptions raised in the SDK always use raise ... from syntax where appropriate. This corrects exception chaining in the local endpoint and several response objects.

    • The encoding of files opened by the SDK is now always UTF-8

    • TransferData will now reject unsupported sync_level values with a ValueError on initialization, rather than erroring at submission time. The sync_level has also had its type annotation fixed to allow for int values.

    • Several instances of undocumented parameters have been discovered, and these are now rectified.

  • Add Paginator.wrap as a method for getting a paginated methods. This interface is more verbose than the existing paginated methods, but correctly preserves type annotations. It is therefore preferable for users who are using mypy to do type checking. (#494)

  • Paginator objects are now generics over a type var for their page type. The page type is bounded by GlobusHTTPResponse, and most type-checker behaviors will remain unchanged (#495)

  • Document globus_sdk.config.get_service_url and globus_sdk.config.get_webapp_url (#496)

    • Internally, these are updated to be able to default to the GLOBUS_SDK_ENVIRONMENT setting, so specifying an environment is no longer required

v3.2.1 (2021-12-13)#

  • Update to avoid deprecation warnings on python 3.10 (#499)

v3.2.0 (2021-12-02)#

  • Add iter_items as a method on TransferData and DeleteData (#488)

  • Add the resource_server property to client classes and objects. For example, TransferClient.resource_server and GroupsClient().resource_server are now usable to get the resource server string for the relevant services. resource_server is documented as part of globus_sdk.BaseClient and may be None. (#489)

  • Fix type annotations on client methods with paginated variants (#491)

  • ClientCredentialsAuthorizer now accepts Union[str, Iterable[str]] as the type for scopes (#498)

  • The implementation of several properties of GlobusHTTPResponse has changed (#497)

    • Responses have a new property, headers, a case-insensitive dict of headers from the response

    • Responses now implement http_status and content_type as properties without setters

v3.1.0 (2021-10-13)#

  • Add filter as a supported parameter to TransferClient.task_list (#484)

  • The filter parameter to TransferClient.task_list and TransferClient.operation_ls can now be passed as a Dict[str, str | List[str]]. Documentation on the TransferClient explains how this will be formatted, and is linked from the param docs for filter on each method (#484)

  • Adjust package metadata for cryptography dependency, specifying cryptography>=3.3.1 and no upper bound. This is meant to help mitigate issues in which an older cryptography version is installed gets used in spite of it being incompatible with pyjwt[crypto]>=2.0 (#486)

v3.0.3 (2021-10-11)#

  • Fix several internal decorators which were destroying type information about decorated functions. Type signatures of many methods are therefore corrected (#485)

v3.0.2 (2021-09-29)#

  • Update the minimum dependency versions to lower bounds which are verified to work with the testsuite (#482)

  • Produce more debug logging when SDK logs are enabled (#480)

v3.0.1 (2021-09-15)#

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

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

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

v3.0.0 (2021-09-14)#

  • 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 (2021-09-01)#

  • 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)

  • The additional_params parameter to AuthClient.oauth2_get_authorize_url has been renamed to query_params for consistency with other methods (#453)

  • Enforce keyword-only arguments for most SDK-provided 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 (2021-08-13)#

  • 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 (2021-07-16)#

  • 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 (2021-07-02)#

  • 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 (2021-06-28)#

  • 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 (2021-06-25)#

  • 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 (2021-06-10)#

  • 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 (2021-06-04)#

  • 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 (2021-02-02)#


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 (2021-01-29)#

  • 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 (2020-12-18)#

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

v1.9.1 (2020-08-27)#

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

v1.9.0 (2020-03-05)#

  • 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 (2019-07-11)#

  • 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 (2019-02-21)#

  • 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 (2018-12-18)#

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

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

v1.6.1 (2018-10-30)#

  • Replace egg distribution format with wheels (#314)

  • Internal maintenance

v1.6.0 (2018-08-29)#

  • 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 (2018-02-09)#

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

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

v1.4.1 (2017-12-20)#

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

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

v1.4.0 (2017-12-13)#

  • 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 (2017-11-20)#

  • 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 (2017-11-01)#

  • 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 (2017-09-29)#

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

v1.2.0 (2017-08-18)#

  • Add Transfer symlink support (#218)

  • Better handle UTF-8 inputs (#208)

  • Fix endpoint manager resume (#224)

  • Doc Updates & Minor Improvements

v1.1.1 (2017-05-19)#

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

v1.1.0 (2017-05-01)#

  • 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 (2017-04-10)#

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

v0.7.2 (2017-04-05)#

  • Add AuthClient.validate_token (#172)

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

v0.7.1 (2017-04-03)#

  • 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 (2017-03-30)#

  • 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 (2017-03-21)#

  • 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 (2017-02-25)#

  • 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)