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.
v4.1.0-pr-1342 (2025-11-25)¶
Python Support¶
Add support for Python 3.14. (#1340)
Added¶
GlobusAppand SDK client classes now support usage as context managers, and feature a newclose()method to close internal resources.close()is automatically called on exit. (#1326)In support of this, token storages now all feature a
close()method, which does nothing in the default implementation. Previously, only storages with underlying resources to manage featured aclose()method.GlobusAppwill close any token storage viaclose()if the token storage was created by the app on init. Explicitly created storages will not be closed and must be explicitly closed via theirclose()method.Any class inheriting from
BaseClientfeaturesclose(), which will close any transport object created during client construction.Transports which are created explicitly will not be closed by their clients, and must be explicitly closed.
Add
TimersClient.add_app_flow_user_scopeforTimersClientinstances which are integrated withGlobusApp. This method registers the specific flowuserscope dependency needed for a flow timer. (#1333)Added automatic Globus Auth Requirements Error (GARE) redriving to GlobusApp (#1339).
More details available at GlobusApp Integration
This feature is disabled by default but can be turned on by setting
auto_retry_gares=Truein a GlobusAppConfig.
Added a new
globus_sdk.experimental.gcs_downloadermodule which provides experimental tooling for downloading files from HTTPS GCS Collections. The module provides helper utilities and a centralGCSDownloaderclass for detecting requirements and downloading files. (#NUMBER)
Fixed¶
Fixed a resource leak in which a
GlobusAppwould create internal client objects and never close the associated transports. (#1326)
v4.1.0 (2025-10-23)¶
Added¶
- Updated
create_flowandupdate_flowto accept an authentication policy to assign to a flow. (#1334) Note: SDK support for this feature is being released in advance of service support, which will follow at a later time.
- Updated
v4.0.1 (2025-10-13)¶
Fixed¶
Fix the route for
TransferClient.set_subscription_admin_verified()(#1331)
v4.0.0 (2025-10-08)¶
No changes from v4.0.0b2
v4.0.0b2 (2025-09-24)¶
Added¶
On Python 3.11+, the SDK will populate the
__notes__of API errors with a message containing the full body of the error response.__notes__is part of the default presentation of a traceback. (#1299)
Removed¶
The following methods and parameters, which were deprecated in globus-sdk v3, have been removed (#1309):
The
skip_activation_checkparameter forTransferDataandDeleteData.The
recursive_symlinksparameter forTransferData.The
add_symlink_itemmethod ofTransferData.
Changed¶
Passing non-
Scopetypes toScope.with_dependencyandScope.with_dependenciesnow raises aTypeError. Previously, this was allowed at runtime but created an invalidScopeobject. (#1300)
v4.0.0b1 (2025-07-31)¶
Breaking Changes¶
The
RequestsTransportobject has been refactored to separate it from configuration which controls request retries. A newRetryConfigobject is introduced and provided asclient.retry_configon all client types. The interface for controlling these configurations has been updated. (#1275)The
transport_classattribute has been removed from client classes.Clients now accept
transport, an instance ofRequestsTransport, andretry_config, an instance ofRetryConfig, instead oftransport_params.Users seeking to customize the retry backoff, sleep maximum, and max retries should now use
retry_config, as these are no longer controlled throughtransport.The capabilities of the
RequestsTransport.tune()context manager have been divided intoRequestsTransport.tune()andRetryConfig.tune().The retry configuration is exposed to retry checks as an attribute of the
RequestCallerInfo, which is provided on theRetryContext. As a result, checks can examine the configuration.
Interfaces for normalizing scope data have changed. (#1289)
The
scopes_to_strfunction has been replaced withScopeParser.serialize.ScopeParser.serializewill raise an error if the serialized data is empty. A flag,reject_empty=False, can be passed to disable this check.The
scopes_to_scope_listfunction has been removed.
Removed¶
Removed the
filter_roleparameter toFlowsClient.list_flows. This parameter was deprecated inglobus-sdkversion 3. (#1291)Removed
SearchClient.update_entry. This method was deprecated inglobus-sdkversion 3. (#1292)Removed
SearchClient.create_entry. This method was deprecated inglobus-sdkversion 3. (#1293)Removed the
SearchQuerytype. Users should useSearchQueryV1instead.SearchQuerywas deprecated inglobus-sdkversion 3. (#1294)
Changed¶
The legacy token storage adapters are now only available from the
globus_sdk.token_storage.legacysubpackage.Users are encouraged to migrate to the newer tooling available directly from
globus_sdk.token_storage. (#1290)Update
warn_deprecatedto emitRemovedInV5Warningand removeRemovedInV4Warningclass (#1295)
v4.0.0a4 (2025-07-25)¶
Breaking Changes¶
The
function_dataargument toComputeClientV2.register_functionhas been renamed todatato be consistent with other usages.AuthClientno longer acceptsclient_idas a parameter and does not provide it as an attribute. This was deprecated in globus-sdk version 3. (#1271)
Added¶
Add
RequestCallerInfodata object toRequestsTransport.requestfor passing caller context information. (#1261)
Removed¶
The
TimerJob.from_transfer_dataclassmethod, which was deprecated in globus-sdk version 3, has been removed. Users should use theTransferTimerclass to construct timers which submit transfer tasks. (#1269)The
oauth2_validate_tokenmethod has been removed fromNativeAppAuthClientandConfidentialAppAuthClient. This method was deprecated in globus-sdk v3. (#1270)Removed
AuthClient.oauth2_userinfo. This method was deprecated inglobus-sdkversion 3. (#1272)Removed support for
ConfidentialAppAuthClient.get_identities. This usage was deprecated inglobus-sdkversion 3. (#1273)Users calling the Get Identities API on behalf of a client identity should instead get tokens for the client and use those tokens to call
AuthClient.get_identities. For example, by instantiating anAuthClientusing aClientCredentialsAuthorizer.This also means that it is no longer valid to use a
ConfidentialAppAuthClientto initialize anIdentityMap.
TransferClient.create_endpointhas been removed. This method primarily supported creation of GCSv4 servers and was deprecated inglobus-sdkv3. (#1276)GCSClient.connector_id_to_name()has been removed. It was deprecated inglobus-sdkversion 3. Users should useglobus_sdk.ConnectorTableinstead. (#1277)Removed support for Endpoint Activation, a feature which was specific to Globus Connect Server v4. (#1279)
Removed the activation methods:
TransferClient.endpoint_autoactivate,TransferClient.endpoint_activate,TransferClient.endpoint_deactivate, andTransferClient.endpoint_get_activation_requirementsRemoved the specialized
ActivationRequirementsResponseparsed response typeTransferClient.update_endpointwould previously check themyproxy_serverandoauth_serverparameters, which were solely used for the purpose of configuring activation. It no longer does so.
Removed the
ComputeClientalias. This name was deprecated inglobus-sdkversion 3. Users should useComputeClientV2orComputeClientV3instead. (#1282)Removed
GlobusAPIError.raw_text. This attribute was deprecated inglobus-sdkversion 3. Users should use thetextattribute instead. (#1283)Removed
TransferClientmethods for modifying “endpoint servers”, a feature specific to Globus Connect Server v4. Specifically,add_endpoint_server,update_endpoint_server, anddelete_endpoint_server. These methods were deprecated inglobus-sdkversion 3. (#1284)Removed the
ComputeFunctionDocumentandComputeFunctionMetadataclasses. These helpers were deprecated inglobus-sdkversion 3.Removed
TransferClient.operation_symlink. This method was deprecated inglobus-sdkversion 3. (#1286)
Changed¶
Renamed the
globus_sdk._testingsubpackage toglobus_sdk.testing. (#1251)Renamed the
globus_sdk.tokenstoragesubpackage toglobus_sdk.token_storageand removed theglobus_sdk.experimental.tokenstorage(#1252)Remove support for normalizing nested iterables of scopes, e.g.
[["scope1"], "scope2"](#1259)
v4.0.0a3 (2025-07-10)¶
Breaking Changes¶
All defaults of
Noneconverted toglobus_sdk.MISSINGfor all payload types in the Transfer client. (#1216)The
transfer_clientparameter toTransferDataandDeleteDatahas been removed. See the upgrading doc for transition details. (#1236)In Globus Auth client classes, defaults of
Noneare converted toMISSINGfor optional fields. (#1236)
Added¶
SpecificFlowClienthas a new method,add_app_transfer_data_access_scopewhich facilitates declaration of scope requirements when starting flows which interact with collections that needdata_accessscopes. (#1166)
Removed¶
globus_sdk.experimental.scope_parserhas been removed. Useglobus_sdk.scopesinstead. (#1236)
Changed¶
Scopeobjects are now immutable. (#1208)Scope.dependenciesis now a tuple, not a list.The
add_dependencymethod has been removed, since mutating aScopeis no longer possible.A new evolver method,
Scope.with_dependencyhas been added. It extends thedependenciestuple in a newScopeobject.A batch version of
Scope.with_dependencyhas been added,Scope.with_dependencies.An evolver for the
optionalfield of aScopeis also now available, namedScope.with_optional.
Scope parsing has been separated from the main
Scopeclass into a dedicatedScopeParserwhich provides parsing methods. (#1208)Use
globus_sdk.scopes.ScopeParserfor complex parsing use-cases. TheScopeParser.parseclassmethod parses strings into lists of scope objects.Scope.merge_scopeshas been moved toScopeParser.merge_scopes.Scope.parseis changed to callScopeParser.parseand verify that there is exactly one result, which it returns. This means thatScope.parsenow returns a singleScope, not alist[Scope].Scope.serializeandScope.deserializehave been removed as methods. Usestr(scope_object)as a replacement forserialize()andScope.parseas a replacement fordeserialize().
Payload types now inherit from
dictrather thanUserDict. ThePayloadWrapperutility class has been replaced withPayload. (#1222)Payload types are more consistent about encoding missing values using
MISSING. (#1222)The SDK’s
ScopeBuildertypes have been replaced withStaticScopeCollectionandDynamicScopeCollectiontypes. (#1237)Scopes provided as constants by the SDK are now
Scopeobjects, not strings. They can be converted to strings trivially withstr(scope).The various scope builder types have been renamed.
SpecificFlowScopes,GCSEndpointScopes, andGCSCollectionScopesreplaceSpecificFlowScopeBuilder,GCSEndpointScopeBuilder, andGCSCollectionScopeBuilder.
The
ScopeBuildertypes have been simplified and improved as the newScopeCollectiontypes. (#1237)ScopeBuilderis replaced withStaticScopeCollectionandDynamicScopeCollection. Thescopesattribute of client classes is now a scope collection.The attributes of
ScopeCollections areScopeobjects, not strings.ScopeCollections define__iter__, yielding the provided scopes, but not__str__.
v4.0.0a2 (2025-06-05)¶
Breaking Changes¶
The SDK version is no longer available in
globus_sdk.version.__version__. (#1195)Packages that want to query the SDK version must use
importlib.metadata:import importlib.metadata GLOBUS_SDK_VERSION = importlib.metadata.distribution("globus_sdk").version
The legacy
MutableScopetype has been removed. (#1198)The
make_mutablemethod onScopeBuilderobjects has also been removed as a consequence of this change.
Defaults of
Nonewere converted toglobus_sdk.MISSINGfor multiple client methods and payload types, covering Compute, Flows, Groups, GCS, and Search. (#1205, #1207, #1212, #1214)
Removed¶
globus_sdk.experimental.auth_requirements_errorhas been removed. Useglobus_sdk.gareinstead. (#1202)GlobusAPIErrorno longer provides a setter formessage. Themessageproperty is now read-only. (#1204)Deprecated aliases for
TimersClient,TimersScopes, andTimersAPIErrorhave been removed. (#1206)
v4.0.0a1 (2025-05-20)¶
Breaking Changes¶
The SDK no longer sets default scopes for direct use of client credentials and auth client login flow methods. Users should either use
GlobusAppobjects, which can specify scopes based on the clients in use, or else pass a list of scopes explicitly tooauth2_client_credentials_tokensoroauth2_start_flow. (#1186)The default
GlobusAPIError.codevalue is nowNonewhencodeis not supplied in the error body. Previously, the default was"Error". (#1190)The default
TimersAPIError.codevalue is nowNonewhen an error which appears to be validation-related has nocode. Previously, the default was"ValidationError". (#1191)SDK client classes no longer define nor prepend a
base_pathattribute to paths. Make sure to use the full path now when using client methods. (#1185)Updated MappedCollectionDoc and GuestCollectionDoc with MissingType. (#1189)
v3.65.0 (2025-10-02)¶
Added¶
Development¶
Fix a Poetry deprecation warning in the test suite. (#1320)
v3.64.0 (2025-09-24)¶
Added¶
Added
SearchClient.update_indexas a method for modifying index names and descriptions. (#1310)
Deprecated¶
The following Transfer features have been deprecated: (#1308, #1309)
The
add_symlink_itemmethod ofTransferData. This is not supported by any collections.The
recursive_symlinksparameter toTransferData. This is not supported by any collections.The
skip_activation_checkparameter toTransferDataandDeleteData. This no longer has any effect when set.
v3.63.0 (2025-09-04)¶
Renamed the
GroupsClientmethodset_subscription_admin_verified_idtoset_subscription_admin_verified. (#1302)GroupsClient.set_subscription_admin_verified_idstill exists but emits a deprecation warning.
v3.62.0 (2025-07-31)¶
Added support for setting a group’s
subscription_idviaGroupsClient.set_subscription_admin_verified_id. (#1287)
v3.61.0 (2025-07-23)¶
Deprecated¶
v3.60.0 (2025-07-09)¶
Added¶
Recognize
dependent_consent_requirederrors from the Auth API as a Globus Auth Requirements Error (GARE) and support converting them to GAREs. (#1246)
Fixed¶
Accept authorization parameters containing dependent scopes when
app.login()is called with a GARE’s authorization parameters. (#1247)
v3.59.0 (2025-07-01)¶
Added¶
Development¶
Convert the CHANGELOG to Markdown-compatible headers.
This resolves rendering issues in Dependabot PRs in the CLI, and simplifies compatibility between RST and Markdown.
v3.58.0 (2025-06-16)¶
Added¶
Add the
SpecificFlow.validate_run()method. (#1221)
Fixed¶
Fix an error which caused the
restrict_transfers_to_high_assurancefield to be malformed when set on a collection payload type. (#1211)
v3.57.0 (2025-06-04)¶
Added¶
Globus Connect Server collection document classes now support attributes up to document version 1.15.0. (#1197)
Deprecated¶
Importing scope parsing tools from
globus_sdk.experimentalnow emits a deprecation warning. These names were previously deprecated in documentation only. (#1201)
Documentation¶
Remove the badges at the top of the README. (#1194)
v3.56.1 (2025-05-20)¶
Fixed¶
Fix the type annotation on
filter_rolesforFlowsClientto allow non-list iterables. (#1183)
v3.56.0 (2025-05-05)¶
Added¶
Transport objects now provide a
close()method for closing resources which belong to them, primarily the underlying session. (#1171)Add
activity_notification_policyto GuestCollectionDocument, associating it with GCS collection document version 1.14.0. (#1172)FlowsClient.list_flowsandFlowsClient.list_runsnow support thefilter_rolesparameter to filter results by one or more roles. (#1174)AuthLoginClientnow supports asession_messagewhen constructing an OAuth2 authorization URL. (#1179)LoginFlowManagerwill now use asession_messagepresent in the suppliedGlobusAuthorizationParametersas part of the login flow. (#1179)
Changed¶
When parsing GAREs using
to_gareandto_gares, the root document is now considered a possible location for a GARE when subdocument errors are present on aGlobusAPIErrorobject. Previously, the root document would only be considered in the absence of subdocument errors. (#1173)
Deprecated¶
filter_roleparameter forFlowsClient.list_flowsis deprecated. Usefilter_rolesinstead. (#1174)
v3.55.0 (2025-04-18)¶
Added¶
FlowsClient.create_flowandFlowsClient.update_flownow supportrun_managersandrun_monitors. (#1164)SpecificFlowClient.run_flow()now supportsactivity_notification_policyas an argument, allowing users to select when their run will notify them. A new helper,RunActivityNotificationPolicy, makes construction of valid policies easier. (#1167)
Changed¶
The initialization of a client with a
GlobusApphas been improved and is now available under the publicattach_globus_appmethod on client classes. Attaching an app is only valid for clients which were initialized without an app or authorizer. (#1137)When a
GlobusAppis used with a client, that client’sapp_scopesattribute will now always be populated with the scopes that it passed back to the app. (#1137)
v3.54.0 (2025-04-02)¶
Changed¶
Added the optional
required_mfafield toAuthClient.create_policy()andAuthClient.update_policy()request bodies. (#1159)
v3.53.0 (2025-03-25)¶
Added¶
Index listing in Globus Search is now available via
SearchClient.index_list. (#1155)
Changed¶
The
reprforglobus_sdk.gare.GAREhas been enhanced to be more informative. (#1156)
Documentation¶
v3.52.0 (2025-03-19)¶
Added¶
The
transportattached to clients now exposesheadersas a readable and writable dict of headers which will be included in every request. Headers provided to the transport’srequest()method overwrite these, as before. (#1140)
Changed¶
Updates to
X-Globus-Client-InfoinRequestsTransport.headersare now synchronized via a callback mechanism. Direct manipulations of theinfoslist will not result in headers being updated – callers wishing to modify these data should rely only on theadd()andclear()methods of theGlobusClientInfoobject. (#1140)globus_sdklogging no longer emits any INFO-level log messages. All INFO messages have been downgraded to DEBUG. (#1146)
Documentation¶
The tutorial documentation has been rewritten. (#1145)
v3.51.0 (2025-03-06)¶
Added¶
Most client classes now have their
__doc__attribute modified at runtime to provide betterhelp()and sphinx documentation. (#1131)Introduce
globus_sdk.IDTokenDecoder, which implementsid_tokendecoding. (#1136)For integration with
GlobusApp, a new builder protocol is defined,IDTokenDecoderProvider. This defines instantiation within the context of an app.When
OAuthTokenResponse.decode_id_tokenis called, it now internally instantiates anIDTokenDecoderand uses it to perform the decode.IDTokenDecoderobjects cache OpenID configuration data and JWKs after looking them up. If a decoder is used multiple times, it will reuse the cached data.Token storage constructs can now contain an
IDTokenDecoderin theirid_token_decoderattribute. The decoder is used preferentially when trying to read thesubfield from anid_tokento store.GlobusAppConfigcan now containid_token_decoder, anIDTokenDecoderorIDTokenDecoderProvider. The default isIDTokenDecoder.GlobusAppinitialization will now use the config’sid_token_decoderand attach theIDTokenDecoderto the token storage which is used.
ConnectorTablehas a new classmethod,extendwhich allows users to add new connectors to the mapping.ConnectorTable.extend()returns a new connector table subclass and does not modify the original. (#1021)Add
ComputeClientV3.register_function()method. (#1142)
Changed¶
The SDK now defaults JWT leeway to 300 seconds when decoding
id_tokens; the previous leeway was 0.5 seconds. Users should find that they are much less prone to validation errors when working in VMs or other scenarios which can cause significant clock drift. (#1135)
v3.50.0 (2025-01-14)¶
Added¶
Subclasses of
BaseClientmay now specifybase_urlas class attribute. (#1125)
Fixed¶
Documentation¶
Updated GlobusAppConfig docs to explain how to disable auto-login. (#1127)
v3.49.0 (2024-12-04)¶
Added¶
Add
filter_entity_typekeyword argument onTransferClient.endpoint_search(). (#1109)Added the
ComputeClientV3.register_endpoint(),ComputeClientV3.update_endpoint()ComputeClientV3.lock_endpoint(), andComputeClientV3.get_endpoint_allowlist()methods. (#1113)Added the
ComputeClientV2.get_version()andComputeClientV2.get_result_amqp_url()methods. (#1114)
v3.48.0 (2024-11-21)¶
Added¶
Added the
ComputeClientV2.register_endpoint(),ComputeClientV2.get_endpoint()ComputeClientV2.get_endpoint_status(),ComputeClientV2.get_endpoints(),ComputeClientV2.delete_endpoint(), andComputeClientV2.lock_endpoint()methods. (#1110)
Changed¶
Removed identity ID consistency validation from
ClientApp. (#1111)
Fixed¶
Fixed a bug that would cause
ClientApptoken refreshes to fail. (#1111)
v3.47.0 (2024-11-08)¶
Added¶
Add
TimersClient.add_app_transfer_data_access_scopeforTimersClientinstances which are integrated withGlobusApp. This method registers the nested scope dependency for adata_accessrequirement for a transfer timer. (#1074)SearchQueryV1is a new class for submitting complex queries replacing the legacySearchQueryclass. A deprecation warning has been added to theSearchQueryclass. (#1079)Created
ComputeClientV2andComputeClientV3classes to support Globus Compute API versions 2 and 3, respectively. The canonicalComputeClientis now a subclass ofComputeClientV2, preserving backward compatibility. (#1096)Added the
ComputeClientV3.submit(),ComputeClientV2.submit(),ComputeClientV2.get_task(),ComputeClientV2.get_task_batch(), andComputeClientV2.get_task_group()methods. (#1094)
Changed¶
Improved error messaging around EOF errors when prompting for code during a command line login flow (#1093)
Deprecated¶
Deprecated the
ComputeFunctionDocumentandComputeFunctionMetadataclasses. This change reflects an early design adjustment to better align with the existing Globus Compute SDK. (#1092)
Development¶
v3.46.0 (2024-10-15)¶
Python Support¶
Support Python 3.13. (#1058)
Added¶
Added an initial Globus Compute client class,
globus_sdk.ComputeClient. (#1071)Application errors are raised as a
globus_sdk.ComputeAPIError.A single method,
ComputeClient.get_functionis included initially to get information about a registered function.Compute scopes are defined at
globus_sdk.scopes.ComputeScopesorglobus_sdk.ComputeClient.scopes.
Added the
ComputeClient.register_function()andComputeClient.delete_function()methods. (#1085)ComputeClient.register_function()introduces new data model classes:ComputeFunctionDocumentandComputeFunctionMetadata.
Added the
TransferClient.set_subscription_id()method. (#1073)Added a new error type,
globus_sdk.ValidationError, used in certain cases ofValueErrors caused by invalid content. (#1044)
Removed¶
Removed the
skip_error_handlingoptional kwarg from theGlobusApp.get_authorizer(...)method interface. (#1060)
Changed¶
All previously experimental modules have been moved into main module namespaces and are no longer experimental. Aliases will remain in the experimental namespaces with a deprecation warning until SDKv4.
Globus Auth Requirements Errors (GAREs) have been moved from
globus_sdk.experimental.auth_requirements_errortoglobus_sdk.gare. (#1048)The primary document type has been renamed from
GlobusAuthRequirementsErrortoGARE.The functions provided by this interface have been renamed to use
garein their naming:to_gare,is_gare,has_gares, andto_gares.
GlobusApps have been moved from
globus_sdk.experimental.globus_apptoglobus_sdkandglobus_sdk.globus_app. (#1085)Login Flow Managers have been moved from
globus_sdk.experimental.login_flow_managerstoglobus_sdk.login_flows. (#1057)Token Storages have been moved from
globus_sdk.experimental.tokenstoragetoglobus_sdk.tokenstorage. (#1065)Consents have been moved from
globus_sdk.experimental.consentstoglobus_sdk.scopes.consents. (#1047)
The response classes for OAuth2 token grants now vary by the grant type. For example, a
refresh_token-type grant now produces aglobus_sdk.OAuthRefreshTokenResponse. This allows code handling responses to more easily identify which grant type produced a response. (#1051)The following new classes have been introduced:
globus_sdk.OAuthRefreshTokenResponse,globus_sdk.OAuthAuthorizationCodeResponse, andglobus_sdk.OAuthClientCredentialsResponse.The
RenewingAuthorizerclass is now a generic over the response type which it handles, and the subtypes of authorizers are specialized for their types of responses. e.g.,class RefreshTokenAuthorizer(RenewingAuthorizer[OAuthRefreshTokenResponse]).
The mechanisms of token data validation inside of
GlobusAppare now more modular and extensible. TheValidatingTokenStorageclass does not define built-in validation behaviors, but instead contains a list of validator objects, which can be extended and otherwise altered. (#1061)These changes allow more validation criteria around token data to be handled within the
ValidatingTokenStorage. This changes error behaviors to avoid situations in which multiple errors are raised serially by different layers of GlobusApp.
LoginFlowManagers built withGlobusAppnow generate a more appropriate value forprefill_named_grant, using the current hostname if possible. (#1075)Imports of
globus_sdk.excnow defer importingrequestsso as to reduce import-time performance impact the library is not needed. (#1044)The following error classes are now lazily loaded even when
globus_sdk.excis imported:GlobusConnectionError,GlobusConnectionTimeoutError,GlobusTimeoutError, andNetworkError.
Fixed¶
Fixed the typing-time attributes of
globus_sdkso thatmypyand other type checkers won’t erroneously suppress errors about missing attributes. (#1052)Fixed the handling of Dependent Token and Refresh Token responses in
TokenStorageandValidatingTokenStoragesuch thatid_tokenis only parsed when appropriate. (#1055)Fixed a bug where upgrading from access token to refresh token mode in a
GlobusAppcould result in multiple login prompts. (#1060)
v3.45.0 (2024-09-06)¶
Added¶
The scope builder for
SpecificFlowClientis now available for direct access and use viaglobus_sdk.scopes.SpecificFlowScopeBuilder. Callers can initialize this class with aflow_idto get a scope builder for a specific flow, e.g.,SpecificFlowScopeBuilder(flow_id).user.SpecificFlowClientnow uses this class internally. (#1030)TransferClient.add_app_data_access_scopenow accepts iterables of collection IDs as an alternative to individual collection IDs. (#1034)
Experimental
Added
login(...),logout(...), andlogin_required(...)to the experimentalGlobusAppconstruct. (#1041)login(...)initiates a login flow if:the current entity requires a login to satisfy local scope requirements or
auth_params/force=Trueis passed to the method.
logout(...)remove and revokes the current entity’s app-associated tokens.login_required(...)returns a boolean indicating whether the app believes a login is required to satisfy local scope requirements.
Removed¶
Experimental
Made
run_login_flowprivate in the experimentalGlobusAppconstruct. Usage sites should be replaced with eitherapp.login()orapp.login(force=True). (#1041)Old Usage
app = UserApp("my-app", client_id="<my-client-id>") app.run_login_flow()
New Usage
app = UserApp("my-app", client_id="<my-client-id>") app.login(force=True)
Changed¶
The client for Globus Timers has been renamed to
TimersClient. The prior name,TimerClient, has been retained as an alias. (#1032)Similarly, the error and scopes classes have been renamed and aliased:
TimersAPIErrorreplacesTimerAPIErrorandTimersScopesreplacesTimerScopes.Internal module names have been changed to
timersfromtimerwhere possible.The
service_nameattribute is left astimerfor now, as it is integrated into URL and_testinglogic.
Experimental
The experimental
TokenStorageProviderandLoginFlowManagerProviderprotocols have been updated to require keyword-only arguments for theirfor_globus_appmethods. This protects against potential ordering confusion for their arguments. (#1028)The
default_scope_requirementsforglobus_sdk.FlowsClienthas been updated to list the Flowsallscope. (#1029)The
CommandLineLoginFlowManagernow exposesprint_authorize_urlandprompt_for_codeas methods, which replace thelogin_promptandcode_promptparameters. Users who wish to customize prompting behavior now have a greater degree of control, and can effect this by subclassing theCommandLineLoginFlowManager. (#1039)Example usage, which uses the popular
clicklibrary to handle the prompts:import click from globus_sdk.experimental.login_flow_manager import CommandLineLoginFlowManager class ClickLoginFlowManager(CommandLineLoginFlowManager): def print_authorize_url(self, authorize_url: str) -> None: click.echo(click.style("Login here for a code:", fg="yellow")) click.echo(authorize_url) def prompt_for_code(self) -> str: return click.prompt("Enter the code here:")
GlobusApp.token_storageis now a public property, allowing users direct access to theValidatingTokenStorageused by the app to build authorizers. (#1040)The experimental
GlobusAppconstruct’s scope exploration interface has changed fromapp.get_scope_requirements(resource_server: str) -> tuple[Scope]toapp.scope_requirements. The new property will return a deep copy of the internal requirements dictionary mapping resource server to a list of Scopes. (#1042)
Deprecated¶
TimerScopesis now a deprecated name. UseTimersScopesinstead. (#1032)
Fixed¶
Experimental
Container types in
GlobusAppfunction argument annotations are now generally covariant collections likeMappingrather than invariant types likedict. (#1035)
Documentation¶
The Globus Timers examples have been significantly enhanced and now leverage more modern usage patterns. (#1032)
v3.44.0 (2024-08-02)¶
Added¶
Added a reference to the new Flows all scope under
globus_sdk.scopes.FlowsScopes.all. (#1016)
Experimental
Added support for
ScopeCollectionTypeto GlobusApp’s__init__andadd_scope_requirementsmethods. (#1020)
Changed¶
Updated
ScopeCollectionTypeto be defined recursively. (#1020)TransferClient.add_app_data_access_scopenow raises an error if it is given an invalid collection ID. (#1022)
Experimental
Changed the experimental
GlobusAppclass in the following way (#1017):app_nameis no longer required (defaults to “Unnamed Globus App”)Token storage now defaults to including the client id in the path.
Old (unix) :
~/.globus/app/{app_name}/tokens.jsonNew (unix):
~/.globus/app/{client_id}/{app_name}/tokens.jsonOld (win):
~\AppData\Local\globus\app\{app_name}\tokens.jsonNew (win):
~\AppData\Local\globus\app\{client_id}\{app_name}\tokens.json
GlobusAppConfig.token_storagenow accepts shorthand string references:"json"to use aJSONTokenStorage,"sqlite"to use aSQLiteTokenStorageand"memory"to use aMemoryTokenStorage.GlobusAppConfig.token_storagealso now accepts aTokenStorageProvider, a class with afor_globus_app(...) -> TokenStorageclass method.Renamed the experimental
FileTokenStorageattribute.filenameto.filepath.
Changed the experimental
GlobusAppclass in the following ways (#1018):LoginFlowManagersnow insertGlobusApp.app_nameinto any native client login flows as theprefill_named_grant.GlobusAppConfignow accepts alogin_redirect_uriparameter to specify the redirect URI for a login flow.Invalid when used with a
LocalServerLoginFlowManager.Defaults to
"https://auth.globus.org/v2/web/auth-code"for native client flows. Raises an error if not set for confidential ones.
UserAppnow allows for the use of confidential client flows with the use of either aLocalServerLoginFlowManageror a configuredlogin_redirect_uri.GlobusAppConfig.login_flow_managernow accepts shorthand string references"command-line"to use aCommandLineLoginFlowManagerand"local-server"to use aLocalServerLoginFlowManager.GlobusAppConfig.login_flow_manageralso now accepts aLoginFlowManagerProvider, a class with afor_globus_app(...) -> LoginFlowManagerclass method.
Development¶
Added a scope normalization function
globus_sdk.scopes.scopes_to_scope_listto translate fromScopeCollectionTypeto a list ofScopeobjects. (#1020)
v3.43.0 (2024-07-25)¶
Added¶
The
TransferClient.task_listmethod now supportsorderbyas a parameter. (#1011)
Changed¶
The
SQLiteTokenStoragecomponent inglobus_sdk.experimentalhas been changed in several ways to improve its interface. (#1004):memory:is no longer accepted as a database name. Attempts to use it will trigger errors directing users to useMemoryTokenStorageinstead.Parent directories for a target file are automatically created, and this behavior is inherited from the
FileTokenStoragebase class. (This was previously a feature only of theJSONTokenStorage.)The
config_storagetable has been removed from the generated database schema, the schema version number has been incremented to2, and methods and parameters related to manipulation ofconfig_storagehave been removed.
Documentation¶
Added a new experimental “Updated Examples” section which rewrites and reorders many examples to aid in discovery. (#1008)
GlobusApp,UserApp`, and ``ClientAppclass reference docs. (#1013)Added a narrative example titled
Using a GlobusAppdetailing the basics of constructing and using a GlobusApp. (#1013)Remove unwritten example updates from toctree. (#1014)
v3.42.0 (2024-07-15)¶
Python Support¶
Remove support for Python 3.7. (#997)
Added¶
Add
globus_sdk.ConnectorTablewhich provides information on supported Globus Connect Server connectors. This object maps names to IDs and vice versa. (#955)Support adding query parameters to
ConfidentialAppAuthClient.oauth2_token_introspectvia aquery_paramsargument. (#984)Add
get_gcs_infoas a helper method toGCSClientfor getting information from a Globus Connect Server’sinfoAPI route.Add
endpoint_client_idas a property toGCSClient.Clients will now emit a
X-Globus-Client-Infoheader which reports the version of theglobus-sdkwhich was used to send a request. Users may customize this header further by modifying theglobus_client_infoobject attached to the transport object. (#990)
Experimental
Add a new abstract class,
TokenStorage, toexperimental.TokenStorageexpands the functionality ofStorageAdapterbut is not fully backwards compatible. (#980)FileTokenStorage,JSONTokenStorage,MemoryTokenStorageandSQLiteTokenStorageare new concrete implementations ofTokenStorage.
Add
ValidatingStorageAdaptertoexperimental, which validates that identity is maintained and scope requirements are met on token storage/retrieval. (#978, #980)Add a new abstract class,
AuthorizerFactorytoexperimental.AuthorizerFactoryprovides an interface for getting aGlobusAuthorizerfrom aValidatingTokenStorage. (#985)AccessTokenAuthorizerFactory,RefreshTokenAuthorizerFactory, andClientCredentialsAuthorizerFactoryare new concrete implementations ofAuthorizerFactory.
Add a new abstract class,
GlobusApptoexperimental. AGlobusAppis an abstraction which allows users to define their authorization requirements implicitly and explicitly, attach that state to their various clients, and drive login flows. (#986)UserAppandClientAppare new implementations ofGlobusAppwhich handle authentications for user-login and client-credentials.
GlobusAppConfigis an object which can be used to controlGlobusAppbehaviors.
Add
appas an optional argument toBaseClientwhich will accept aGlobusAppto handle authentication, token validation, and token storage when using the client.Add
default_scope_requirementsas a property toBaseClientfor subclasses to define scopes to automatically be used with aGlobusApp. The default implementation raises aNotImplementedError.Add
add_app_scopetoBaseClientas an interface for adding additional scope requirements to itsapp.AuthClient,FlowsClient,GCSClient,GroupsClient,SearchClient,TimerClient, andTransferClientall addappas an optional argument and definedefault_scope_requirementsso that they can be used with aGlobusApp.Add
add_app_data_access_scopetoTransferClientas an interface for adding a dependent data access scope requirements needed for interacting with standard Globus Connect Server mapped collections to itsapp.Auto-login (overridable in config) GlobusApp login retry on token validation error. (#994)
Added the configuration parameter
GlobusAppConfig.environment. (#1001)
Changed¶
GCSClientinstances now have a non-Noneresource_serverproperty.GlobusAuthorizationParametersno longer enforces that at least one field is set. (#989)Improved the validation and checking used inside of
globus_sdk.tokenstorage.SimpleJSONFileAdapterandglobus_sdk.experimental.tokenstorage.JSONTokenStorage. (#997)
Deprecated¶
GCSClient.connector_id_to_namehas been deprecated. UseConnectorTable.lookupinstead. (#955)
Fixed¶
Experimental
When a
JSONTokenStorageis used, the containing directory will be automatically be created if it doesn’t exist. (#998)GlobusApp.add_scope_requirementsnow has the side effect of clearing the authorizer cache for any referenced resource servers. (#1000)GlobusAuthorizer.scope_requirementswas made private and a new method for accessing scope requirements was added atGlobusAuthorizer.get_scope_requirements. (#1000)A
GlobusAppwill now auto-create an Auth consent client for dependent scope evaluation against consents as a part of instantiation. (#1000)Fixed a bug where specifying dependent tokens in a new
GlobusAppwould cause the app to infinitely prompt for log in. (#1002)Fixed a
GlobusAppbug which would cause LocalServerLoginFlowManager to error on MacOS when versions earlier than Python 3.11. (#1003)
Documentation¶
Document how to manage Globus SDK warnings. (#988)
v3.41.0 (2024-04-26)¶
Added¶
Added a new AuthClient method
get_consentsand supporting local data objects. These allows a client to poll and interact with the current Globus Auth consent state of a particular identity rooted at their client. (#971)Added
LoginFlowManagerandCommandLineLoginFLowManagerto experimental (#972)Added
LocalServerLoginFlowManagerto experimental (#977)Added support to
FlowsClientfor thevalidate_flowoperation of the Globus Flows service. (#979)
v3.40.0 (2024-04-15)¶
Added¶
Add
globus_sdk.tokenstorage.MemoryAdapterfor the simplest possible in-memory token storage mechanism. (#964)ConfidentialAppAuthClient.oauth2_get_dependent_tokensnow supports thescopeparameter as a string or iterable of strings. (#965)Moved scope parsing out of experimental. The
Scopeconstruct is now importable from the top levelglobus_sdkmodule. (#966)Support updating subscriptions assigned to flows in the Flows service. (#974)
Development¶
Fix concurrency problems in the test suite caused by isort’s
.isortedtemporary files. (#973)
v3.39.0 (2024-03-06)¶
Added¶
Added
TransferClient.operation_stathelper method for getting the status of a path on a collection (#961)
v3.38.0 (2024-03-01)¶
Added¶
IterableGCSResponseandUnpackingGCSResponseare now available as top-level exported names. (#956)Add
GroupsClient.get_group_by_subscription_idfor resolving subscriptions to groups. This also expands the_testingdata forget_groupto include a subscription group case. (#957)Added
promptto the recognized Globus Authorization Requirements Errorauthorization_parametersfields. (#958)
v3.37.0 (2024-02-14)¶
Added¶
All of the basic HTTP methods of
BaseClientand its derived classes which accept adataparameter for a request body, e.g.TransferClient.postorGroupsClient.put, now allow thedatato be passed in the form of already encodedbytes. (#951)
Fixed¶
Update
ensure_datatypeto work with documents that setDATA_TYPEtoMISSINGinstead of omitting it (#952)
v3.36.0 (2024-02-12)¶
Added¶
Added support for GCS endpoint get & update operations (#933)
gcs_client.get_endpoint()gcs_client.update_endpoint(EndpointDocument(...))
TransferClient.endpoint_manager_task_list()now supportsfilter_endpoint_useas a parameter. (#948)FlowsClient.create_flownow supportssubscription_idas a parameter. (#949)
v3.35.0 (2024-01-29)¶
Added¶
Added a
session_required_mfaparameter to theAuthorizationParameterInfoerror info object andoauth2_get_authorize_urlmethod (#939)
Changed¶
The argument specification for
AuthClient.create_policywas incorrect. The corrected method will emit deprecation warnings if called with positional arguments, as the corrected version uses keyword-only arguments. (#936)
Deprecated¶
TransferClient.operation_symlinkis now officially deprecated and will emit aRemovedInV4Warningif used. (#942)
Fixed¶
Included documentation in
AuthorizationParameterInfoforsession_required_policies(#939)
v3.34.0 (2024-01-02)¶
Added¶
Add the
delete_protectedfield toMappedCollectionDocument. (#920)
Changed¶
Minor improvements to handling of paths and URLs. (#922)
Request paths which start with the
base_pathof a client are now normalized to avoid duplicating thebase_path.When a
GCSClientis initialized with an HTTPS URL, if the URL does not end with the/apisuffix, that suffix will automatically be appended. This allows thegcs_manager_urlfield from Globus Transfer to be used verbatim as the address for aGCSClient.
Deprecated¶
NativeAppAuthClient.oauth2_validate_tokenandConfidentialAppAuthClient.oauth2_validate_tokenhave been deprecated, as their usage is discouraged by the Auth service. (#921)
Development¶
v3.33.0.post0 (2023-12-05)¶
Documentation¶
Remove references to the Tutorial Endpoints from documentation. (#915)
v3.33.0 (2023-12-04)¶
Added¶
Support custom CA certificate bundles. (#903)
Previously, SSL/TLS verification allowed only a boolean
TrueorFalsevalue. It is now possible to specify a CA certificate bundle file using the existingverify_sslparameter orGLOBUS_SDK_VERIFY_SSLenvironment variable.This may be useful for interacting with Globus through certain proxy firewalls.
Fixed¶
Fix the type annotation for
globus_sdk.IdentityMapinit, which incorrectly rejectedConfidentialAppAuthClient. (#912)
v3.32.0 (2023-11-09)¶
Added¶
Note
These changes pertain to methods of the client objects in the SDK which interact with Globus Auth client registration. To disambiguate, we refer to the Globus Auth entities below as “Globus Auth clients” or specify “in Globus Auth”, as appropriate.
Globus Auth clients objects now have methods for interacting with client and project APIs. (#884)
NativeAppAuthClient.create_native_app_instancecreates a new native app instance in Globus Auth for a client.ConfidentialAppAuthClient.create_child_clientcreates a child client in Globus Auth for a confidential app.AuthClient.get_projectlooks up a project.AuthClient.get_policylooks up a policy document.AuthClient.get_policieslists all policies in all projects for which the current user is an admin.AuthClient.create_policycreates a new policy.AuthClient.update_policyupdates an existing policy.AuthClient.delete_policydeletes a policy.AuthClient.get_clientlooks up a Globus Auth client by ID or FQDN.AuthClient.get_clientslists all Globus Auth clients for which the current user is an admin.AuthClient.create_clientcreates a new client in Globus Auth.AuthClient.update_clientupdates an existing client in Globus Auth.AuthClient.delete_clientdeletes a client in Globus Auth.AuthClient.get_client_credentialslists all client credentials for a given Globus Auth client.AuthClient.create_client_credentialcreates a new client credential for a given Globus Auth client.AuthClient.delete_client_credentialdeletes a client credential.AuthClient.get_scopelooks up a scope.AuthClient.get_scopeslists all scopes in all projects for which the current user is an admin.AuthClient.create_scopecreates a new scope.AuthClient.update_scopeupdates an existing scope.AuthClient.delete_scopedeletes a scope.
A helper object has been defined for dependent scope manipulation via the scopes APIs,
globus_sdk.DependentScopeSpec(#884)
Fixed¶
When serializing
TransferTimerdata, do not convert to UTC if the input was a valid datetime with an offset. (#900)
v3.31.0 (2023-11-01)¶
Added¶
Add support for the new Transfer Timer creation method, in the form of a client method,
TimerClient.create_timer, and a payload builder type,TransferTimer(#887)create_timeronly supports dict data andTransferTimer, not the previousTimerJobtypeAdditional helper classes,
RecurringTimerScheduleandOneceTimerSchedule, are provided to help build theTransferTimerpayload
Request encoding in the SDK will now automatically convert any
uuid.UUIDobjects into strings. Previously this was functionality provided by certain methods, but now it is universal. (#892)
Deprecated¶
Creation of timers to run transfers using
TimerJobis now deprecated (#887)
v3.30.0 (2023-10-27)¶
Added¶
TransferClient.operation_lsnow supports thelimitandoffsetparameters (#868)A new sentinel value,
globus_sdk.MISSING, has been introduced. It is used for method calls which need to distinguish missing parameters from an explicitNoneused to signifynull(#885)globus_sdk.MISSINGis now supported in payload data for all methods, and will be automatically removed from the payload before sending to the server
Changed¶
GroupPoliciesobjects now treat an explicit instantiation withhigh_assurance_timeout=Noneas setting the timeout tonull(#885)
v3.29.0 (2023-10-12)¶
Changed¶
The inheritance structure used for Globus Auth client classes has changed. (#849)
A new class,
AuthLoginClient, is the base forNativeAppAuthClientandConfidentialAppAuthClient. These classes no longer inherit fromAuthClient, and therefore no longer inherit certain methods which would never succeed if called.AuthClientis now the only class which provides functionality for accessing Globus Auth APIs.AuthClientno longer includes methods for OAuth 2 login flows which would only be valid to call onAuthLoginClientsubclasses.
Deprecated¶
Several features of Auth client classes are now deprecated. (#849)
Setting
AuthClient.client_idor accessing it as an attribute is deprecated and will emit a warning.ConfidentialAppAuthClient.get_identitieshas been preserved as a valid call, but will emit a warning. Users wishing to access this API via client credentials should prefer to get an access token using a client credential callout, and then use that token to callAuthClient.get_identities().
The
AuthClient.oauth2_userinfomethod has been deprecated in favor ofAuthClient.userinfo. Callers should prefer the new method name. (#865)
v3.28.0 (2023-08-30)¶
Python Support¶
Add support for Python 3.12. (#808)
Added¶
Add a
promptkeyword parameter toAuthClient.oauth2_get_authorize_url(). (#813)Setting this parameter requires users to authenticate with an identity provider, even if they are already logged in. Doing so can help avoid errors caused by unexpected session required policies, which would otherwise require a second, follow-up login flow.
promptcould previously only be set via thequery_paramskeyword parameter. It is now more discoverable.Add
TimerClient.pause_jobandTimerClient.resume_jobfor pausing and resuming timers. (#827)
Documentation¶
Add an example script which handles creating and running a flow. (#826)
Development¶
Added responses to
_testingreflecting an inactive Timers job (#828)
v3.27.0 (2023-08-11)¶
Added¶
Add a
FlowsClient.get_run_definition()method. (#799)
Changed¶
FlowsClient.get_run_logs()now uses anIterableRunLogsResponse. (#797)
v3.26.0 (2023-08-07)¶
Added¶
New components are introduced to the experimental subpackage. See the SDK Experimental documentation for more details.
Add tools which manipulate Globus Auth Requirements error data.
globus_sdk.experimental.auth_requirements_errorprovides a data container class,GlobusAuthRequirementsError, and functions for converting and validating data against this shape. (#768)Introduce an experimental Globus Auth scope parser in
globus_sdk.experimental.scope_parser(#752)
Changed¶
The
scopesclass attribute ofSpecificFlowClientis now specialized to ensure that type checkers will allow access toSpecificFlowClientscopes andresource_servervalues withoutcasting. The value used is a specialized stub which raises useful errors when class-based access is performed. Thescopesinstance attribute is unchanged. (#793)
v3.25.0 (2023-07-20)¶
Added¶
The
jwt_paramsargument todecode_id_token()now allows"leeway"to be included to pass aleewayparameter to pyjwt. (#790)
Fixed¶
decode_id_token()defaulted to having no tolerance for clock drift. Slight clock drift could lead to JWT claim validation errors. The new default is 0.5s which should be sufficient for most cases. (#790)
Documentation¶
New scripts in the example gallery demonstrate usage of the Globus Auth Developer APIs to List, Create, Delete, and Update Projects. (#777)
v3.24.0 (2023-07-18)¶
Added¶
Changed¶
The enforcement logic for URLs in
BaseClientinstantiation has been improved to only require thatservice_namebe set ifbase_urlis not provided. (#786)This change primarily impacts subclasses, which no longer need to set the
service_nameclass variable if they ensure that thebase_urlis always passed with a non-null value.Direct instantiation of
BaseClientis now possible, although not recommended for most use-cases.
v3.23.0 (2023-07-06)¶
Added¶
Add
AuthClientmethods to support the Projects APIs for listing, creating, updating, and deleting projects.globus_sdk._testingnow exposes a method,construct_errorwhich makes it simpler to explicitly construct and return a Globus SDK error object for testing. This is used in the SDK’s own testsuite and is available for_testingusers. (#770)AuthClient.oauth2_get_authorize_urlnow supports the following parameters for session management:session_required_identities,session_required_single_domain, andsession_required_policies. Each of these accept list inputs, as returned byErrorInfo.authorization_parameters. (#773)
Changed¶
AuthClient,NativeAppAuthClient, andConfidentialAppAuthClienthave had their init signatures updated to explicitly list available parameters. (#764)Type annotations for these classes are now more accurate
The
NativeAppAuthClientandConfidentialAppAuthClientclasses do not acceptauthorizerin their init signatures. Previously this was accepted but raised aGlobusSDKUsageError. Attempting to pass anauthorizerwill now result in aTypeError.
session_required_policiesparsing inAuthorizationParameterInfonow supports the policies being returned as alist[str]in addition to supportingstr(#769)
Fixed¶
Documentation¶
The
_testingdocumentation has been expanded with a dropdown view of the response contents for each method. In support of this, client method testing docs have been reorganized into a page per service. (#767)
v3.22.0 (2023-06-22)¶
Added¶
Add support for
AuthClient.get_identity_providersfor looking up Identity Providers by domain or ID in Globus Auth (#757)Add a method to the Globus Search client,
SearchClient.batch_delete_by_subject(#760)Add
AuthScopes.manage_projectsto scope data. This is also accessible asAuthClient.scopes.manage_projects(#761)
Documentation¶
Alpha features of globus-sdk are now documented in the “Unstable” doc section (#753)
v3.21.0 (2023-06-16)¶
Added¶
v3.20.1 (2023-06-06)¶
Fixed¶
Fix
TransferClient.operation_mkdirandTransferClient.operation_renameto no longer send nulllocal_userby default (#741)
v3.20.0 (2023-06-05)¶
Added¶
Implemented
FlowsClient.get_run(...)(#721)Implemented
FlowsClient.get_run_logs(...)(#722)Implemented
SpecificFlowClient.resume_run(...)(#723)ConsentRequiredInfonow acceptsrequired_scope(singular) containing a single string as an alternative torequired_scopes. However, it will parse both formats into arequired_scopeslist. (#726)FlowsClient.list_flowsnow supports passing a non-string iterable of strings toorderbyin order to indicate multiple orderings (#730)Support
pathlib.Pathobjects as filenames for the JSON and sqlite token storage adapters. (#734)Several
TransferClientmethods,TransferData, andDeleteDatanow support thelocal_user,source_local_user, anddestination_local_userparameters (#736)
Changed¶
Behavior has changed slightly specifically for
TimerAPIError. When parsing fails, thecodewill beErrorand themessageswill be empty. Thedetailfield will be treated as theerrorsarray for these errors when it is present and contains an array of objects.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,messageswill only contain one item.The
messagefield is now an alias for a joined string ofmessages. Assigning a string tomessageis supported for error subclasses, but is deprecated.messagewill now beNonewhen no messages can be parsed from the error data. Previously, the default formessagewould be an alias fortext.All error types now support
request_idas an attribute, but it will default toNonefor errors which do not include arequest_id.An additional field is checked by default for error message data,
title. This is useful when errors containtitlebut nodetailfield. The extraction of messages from errors has been made stricter, especially in the JSON:API case.The
codefield of errors will no longer attempt to parse only the firstcodefrom multiple sub-errors. Instead,codewill first parse a top-levelcodefield, and then fallback to checking if all sub-errors have the samecodevalue. The result is that certain errors which would populate a non-defaultcodevalue no longer will, but thecodewill also no longer be misleading when multiple errors with different codes are present in an error object.The
codefield of an error may now beNone. This is specifically possible when the error format is detected to be known as JSON:API and there is nocodepresent in any responses.
Fixed¶
v3.19.0 (2023-04-14)¶
Added¶
Added
FlowsClient.update_flow(...)(#710)Support passing “include” as a transfer
filter_rulemethod (#712)Make the request-like interface for response objects and errors more uniform. (#715)
Both
GlobusHTTPResponseandGlobusAPIErrorare updated to ensure that they have the following properties in common:http_status,http_reason,headers,content_type,textGlobusHTTPResponseandGlobusAPIErrorhave both gained a new property,binary_content, which returns the unencoded response data as bytes
Deprecated¶
GlobusAPIError.raw_textis deprecated in favor oftext
Fixed¶
The return type of
AuthClient.get_identitiesis now correctly annotated as an iterable type,globus_sdk.GetIdentitiesResponse(#716)
Documentation¶
Documentation for client methods has been improved to more consistently format and display examples and other information (#714)
v3.18.0 (2023-03-16)¶
Added¶
ConfidentialAppAuthClient.oauth2_get_dependent_tokensnow supports therefresh_tokensparameter to enable requests for dependent refresh tokens (#698)
Changed¶
Behaviors which will change in version 4.0.0 of the
globus-sdknow emit deprecation warnings.TransferData.add_itemnow defaults to omittingrecursiverather than setting its value toFalse. This change better matches new Transfer API behaviors which treat the absence of therecursiveflag as meaning autodetect, rather than the previous default ofFalse. Setting the recursive flag can still have beneficial behaviors, but should not be necessary for many use-cases (#696)
Deprecated¶
Omitting
requested_scopesor specifying it asNoneis 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_tokensAuthClient.oauth2_start_flow
SearchClient.update_entryandSearchClient.create_entryare officially deprecated and will emit a warning. These APIs are aliases ofSearchClient.ingest, but their existence has caused confusion. Users are encouraged to switch toSearchClient.ingestinstead (#695)
Fixed¶
When users input empty
requested_scopesvalues, these are now rejected with a usage error instead of being translated into the default set ofrequested_scopesFix the type annotation for
max_sleepon client transports to allowfloatvalues (#697)
v3.17.0 (2023-02-27)¶
Python Support¶
Remove support for python3.6 (#681)
Added¶
MutableScopeobjects can now be used in theoauth2_start_flowandoauth2_client_credentials_tokensmethods ofAuthClientclasses as part ofrequested_scopes(#689)
Changed¶
Make
MutableScope.scope_stringa public instance attribute (was_scope_string) (#687)Globus Groups methods which required enums as arguments now also accept a variety of
Literalstrings in their annotations as well. This is coupled with changes to ensure that strings and enums are always serialized correctly in these cases. (#691)
Fixed¶
Fix a typo in
TransferClient.endpoint_manager_task_successful_transferswhich prevented calls from being made correctly (#683)
v3.16.0 (2023-02-07)¶
Added¶
Allow UUID values for the
client_idparameter toAuthClientand its subclasses (#676)
Changed¶
Improved GCS Collection datatype detection to support
collection#1.6.0andcollection#1.7.0documents (#675)guest_auth_policy_idis now supported onMappedCollectionDcoumentuser_messagestrings over 64 characters are now supported
The
session_required_policiesattribute ofAuthorizationInfois now parsed as a list of strings when present, andNonewhen absent. (#678)globus_sdk.ArrayResponseandglobus_sdk.IterableResponseare now available as names. Previously, these were only importable fromglobus_sdk.response(#680)
Fixed¶
ArrayResponseandIterableResponsehave better error behaviors when the API data does not match their expected types (#680)
Documentation¶
v3.15.1 (2022-12-13)¶
Added¶
AuthorizationParameterInfo now exposes session_required_policies (#658)
Fixed¶
Fix a bug where
TransferClient.endpoint_manager_task_listdidn’t handle thelast_keyargument when paginated (#662)
v3.15.0 (2022-11-22)¶
Added¶
Scope Names can be set explicitly in a
ScopeBuilder(#641)Introduced
ScopeBuilder.scope_namesproperty (#641)Add support for
interpret_globsandignore_missingtoDeleteData(#646)A new object,
globus_sdk.LocalGlobusConnectServercan be used to inspect the local installation of Globus Connect Server (#647)The object supports properties for
endpoint_idanddomain_nameThis only supports Globus Connect Server version 5
The filter argument to TransferClient.operation_ls now accepts a list to pass multiple filter params (#652)
Improvements to
MutableScopeobjects (#654)MutableScope(...).serialize()is added, andstr(MutableScope(...))uses itMutableScope.add_dependencynow supportsMutableScopeobjects as inputsScopeBuilder.make_mutablenow accepts a keyword argumentoptional. This allows, for example,TransferScopes.make_mutable("all", optional=True)
Changed¶
Deprecated¶
The
optionalargument toadd_dependencyis deprecated.MutableScope(...).add_dependency(MutableScope("foo", optional=True))can be used to add an optional dependency
Fixed¶
v3.14.0 (2022-11-01)¶
Python Support¶
Python 3.11 is now officially supported (#628)
Added¶
v3.13.0 (2022-10-13)¶
Added¶
Add
connect_paramstoSQLiteAdapter, enabling customization of the sqlite connection (#613)Add
FlowsClient.create_flow(...)(#614)Add
globus_sdk.SpecificFlowClientto manage interactions performed against a specific flow (#616)Add support to
FlowsClient.list_flowsfor pagination and theorderbyparameter (#621, #622)
Documentation¶
Fix rst formatting for a few nested bullet points in existing changelog (#619)
v3.12.0 (2022-09-21)¶
Added¶
Add Mapped Collection policy helper types for constructing
policiesdata. (#607) The following new types are introduced:CollectionPolicies(the base class for these types)POSIXCollectionPoliciesPOSIXStagingCollectionPoliciesGoogleCloudStorageCollectionPolicies
Fixed¶
v3.11.0 (2022-08-30)¶
Added¶
Implement
__dir__for the lazy importer inglobus_sdk. This enables tab completion in the interpreter and other features with rely upondir(globus_sdk)(#603)Add an initial Globus Flows client class,
globus_sdk.FlowsClient(#604)globus_sdk.FlowsAPIErroris the error class for this clientFlowsClient.list_flowsis implemented as a method for listing deployed flows, with some of the filtering parameters of this API supported as keyword argumentsThe scopes for the Globus Flows API can be accessed via
globus_sdk.scopes.FlowsScopesorglobus_sdk.FlowsClient.scopes
Changed¶
Adjust behaviors of
TransferDataandTimerJobto makeTimerJob.from_transfer_datawork and to defer requesting thesubmission_iduntil the task submission call (#602)TransferDataavoids passingnullfor several values when they are omitted, ranging from optional parameters toadd_itemtoskip_activation_checkTransferDataandDeleteDatanow support usage in which thetransfer_clientparameters isNone. In these cases, ifsubmission_idis omitted, it will be omitted from the document, allowing the creation of a partial task submsision document with nosubmission_idTimerJob.from_transfer_datawill now raise aValueErrorif the input document containssubmission_idorskip_activation_checkTransferClient.submit_transferandTransferClient.submit_deletenow check to see if the data being sent contains asubmission_id. If it does not,get_submission_idis called automatically and set as thesubmission_idon the payload. The newsubmission_idis 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)
v3.10.1 (2022-07-11)¶
Changed¶
Use
setattrin the lazy-importer. This makes attribute access after imports faster by several orders of magnitude. (#591)
Documentation¶
Add guest collection example script to docs (#590)
v3.10.0 (2022-06-27)¶
Removed¶
Remove nonexistent
monitor_ongoingscope fromTransferScopes(#583)
Added¶
v3.9.0 (2022-06-02)¶
Added¶
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_gatewayNew helper classes for constructing storage gateway documents.
StorageGatewayDocumentis the main one, but alsoPOSIXStoragePoliciesandPOSIXStagingStoragePoliciesare added for declaring the storage gatewaypoliciesfield. More policy helpers will be added in future versions.
Add support for more
StorageGatewayPoliciesdocuments. (#562) The following types are now available:BlackPearlStoragePoliciesBoxStoragePoliciesCephStoragePoliciesGoogleDriveStoragePoliciesGoogleCloudStoragePoliciesOneDriveStoragePoliciesAzureBlobStoragePoliciesS3StoragePoliciesActiveScaleStoragePoliciesIrodsStoragePoliciesHPSSStoragePolicies
Add
httpsscope toGCSCollectionScopeBuilder(#563)ScopeBuilderobjects now implement__str__for easy viewing. For example,print(globus_sdk.TransferClient.scopes)(#568)Several improvements to Transfer helper objects (#573)
Add
TransferData.add_filter_rulefor adding filter rules (exclude rules) to transfersAdd
skip_activation_checkas an argument toDeleteDataandTransferDataThe
sync_levelargument toTransferDatais now annotated more accurately to reject bad strings
Changed¶
Update the fields used to extract
AuthAPIErrormessages (#566)Imports from
globus_sdkare 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 theglobus-sdk’s SemVer guarantees, but it is expected to remain stable for the foreseeable future.
Improve handling of array-style API responses (#575)
Response objects now define
__bool__asbool(data). This means thatbool(response)could beFalseif the data is{},[],0, or other falsey-types. Previously,__bool__was not defined, meaning it was alwaysTrueglobus_sdk.response.ArrayResponseis 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 withlen(response)globus_sdk.GroupsClient.get_my_groupsreturns anArrayResponse, meaning the response data can now be iterated and otherwise used
v3.8.0 (2022-05-04)¶
Added¶
Several changes expose more details of HTTP requests (#551)
GlobusAPIErrorhas a new propertyheaderswhich provides the case-insensitive mapping of header values from the responseGlobusAPIErrorandGlobusHTTPResponsenow includehttp_reason, a string property containing the “reason” from the responseBaseClient.requestandRequestsTransport.requestnow have options for setting boolean optionsallow_redirectsandstream, 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 infrom globus_sdk.scopes import MutableScopeScopeBuilderobjects provide a method,make_mutable, which converts from a scope name to aMutableScopeobject. See documentation on scopes for usage details
v3.7.0 (2022-04-08)¶
Added¶
Add a client for the Timer service (#548)
Add
TimerClientclass, along withTimerJobfor constructing data to pass to the Timer service for job creation, andTimerAPIErrorModify
globus_sdk.configutilities to provide URLs for Actions and Timer services
Fixed¶
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)¶
Added¶
v3.5.0 (2022-03-02)¶
Added¶
globus_sdk.IdentityMapcan now take a cache as an input. This allows multipleIdentityMapinstances 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 support for
includeas a parameter toGroupsClient.get_group.includecan be a string or iterable of strings (#528)Add a new method to tokenstorage,
SQLiteAdapter.iter_namespaces, which iterates over all namespaces visible in the token database (#529)
Changed¶
Documentation¶
Enhance documentation for all of the parameters on methods of
GroupsClient
v3.4.2 (2022-02-18)¶
Fixed¶
Fix the pagination behavior for
TransferClientontask_skipped_errorsandtask_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)¶
Fixed¶
The
typing_extensionsrequirement in package metadata now sets a lower bound of4.0, to force upgrades of installations to get a new enough version (#518)
v3.4.0 (2022-02-11)¶
Added¶
Support pagination on
SearchClient.post_search(#507)Add support for scroll queries to
SearchClient.SearchClient.scrollandSearchClient.paginated.scrollare now available as methods, and a new helper class,SearchScrollQuery, can be used to easily construct scrolling queries. (#507)Add methods to
SearchClientfor managing index roles.create_role,delete_role, andget_role_list(#507)Add
mapped_collectionandfilterquery arguments toGCSClient.get_collection_list(#510)Add role methods to
GCSClient(#513)GCSClient.get_role_listlists endpoint or collection rolesGCSClient.create_rolecreates a roleGCSClient.get_rolegets a single roleGCSClient.delete_roledeletes a role
The response from
AuthClient.get_identitiesnow supports iteration, returning results from the"identities"array (#514)
v3.3.1 (2022-01-25)¶
Fixed¶
Packaging bugfix.
globus-sdkis now built with pypa’sbuildtool, to resolve issues with wheel builds.
v3.3.0 (2022-01-25)¶
Added¶
Add
update_groupmethod toGroupsClient(#506)The
TransferDataandDeleteDatahelper objects now accept the following parameters:notify_on_succeeded,notify_on_failed, andnotify_on_inactive. All three are boolean parameters with a default ofTrue. (#502)Add
Paginator.wrapas a method for getting a paginated methods. This interface is more verbose than the existingpaginatedmethods, but correctly preserves type annotations. It is therefore preferable for users who are usingmypyto do type checking. (#494)
Changed¶
Paginatorobjects are now generics over a type var for their page type. The page type is bounded byGlobusHTTPResponse, and most type-checker behaviors will remain unchanged (#495)
Fixed¶
Several minor bugs have been found and fixed (#504)
Exceptions raised in the SDK always use
raise ... fromsyntax 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-8TransferDatawill now reject unsupportedsync_levelvalues with aValueErroron initialization, rather than erroring at submission time. Thesync_levelhas also had its type annotation fixed to allow forintvalues.Several instances of undocumented parameters have been discovered, and these are now rectified.
Documentation¶
Document
globus_sdk.config.get_service_urlandglobus_sdk.config.get_webapp_url(#496)Internally, these are updated to be able to default to the
GLOBUS_SDK_ENVIRONMENTsetting, so specifying an environment is no longer required
v3.2.1 (2021-12-13)¶
Python Support¶
Update to avoid deprecation warnings on python 3.10 (#499)
v3.2.0 (2021-12-02)¶
Added¶
Add
iter_itemsas a method onTransferDataandDeleteData(#488)Add the
resource_serverproperty to client classes and objects. For example,TransferClient.resource_serverandGroupsClient().resource_serverare now usable to get the resource server string for the relevant services.resource_serveris documented as part ofglobus_sdk.BaseClientand may beNone. (#489)The implementation of several properties of
GlobusHTTPResponsehas changed (#497)Responses have a new property,
headers, a case-insensitive dict of headers from the responseResponses now implement
http_statusandcontent_typeas properties without setters
Changed¶
ClientCredentialsAuthorizer now accepts
Union[str, Iterable[str]]as the type for scopes (#498)
Fixed¶
Fix type annotations on client methods with paginated variants (#491)
v3.1.0 (2021-10-13)¶
Added¶
Add
filteras a supported parameter toTransferClient.task_list(#484)The
filterparameter toTransferClient.task_listandTransferClient.operation_lscan now be passed as aDict[str, str | List[str]]. Documentation on theTransferClientexplains how this will be formatted, and is linked from the param docs forfilteron each method (#484)
Changed¶
Adjust package metadata for
cryptographydependency, specifyingcryptography>=3.3.1and no upper bound. This is meant to help mitigate issues in which an oldercryptographyversion is installed gets used in spite of it being incompatible withpyjwt[crypto]>=2.0(#486)
v3.0.3 (2021-10-11)¶
Fixed¶
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)¶
Changed¶
Produce more debug logging when SDK logs are enabled (#480)
Fixed¶
Update the minimum dependency versions to lower bounds which are verified to work with the testsuite (#482)
v3.0.1 (2021-09-15)¶
Added¶
ScopeBuilderobjects now define the type of__getattr__formypyto know that dynamic attributes are strings (#472)
Fixed¶
Fix malformed PEP508
python_versionbound in dev dependencies (#474)
Development¶
Fix remaining
type: ignoreusages in globus-sdk (#473)
v3.0.0 (2021-09-14)¶
Removed¶
Remove support for
bytesvalues for fields consuming UUIDs (#471)
Added¶
Add
filter_is_errorparameter 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,
MappedCollectionDcoumentandGuestCollectionDocument(#468)Add support for specifying
config_dirtoLocalGlobusConnectPersonal(#470)
v3.0.0b4 (2021-09-01)¶
Removed¶
Remove
BaseClient.qjoin_path(#452)
Added¶
Add a new
GCSClientclass for interacting with GCS Manager APIs (#447)GCSClientsupportsget_collectionanddelete_collection.get_collectionuses a newUnpackingGCSResponseresponse type (#451, #464)Add
delete_destination_extraparam toTransferData(#456)TransferClient.endpoint_manager_task_listnow takes filters as named keyword arguments, not only inquery_params(#460)
Changed¶
Rename
GCSScopeBuildertoGCSCollectionScopeBuilderand addGCSEndpointScopeBuilder. TheGCSClientincludes helpers for instantiating these scope builders (#448)The
additional_paramsparameter toAuthClient.oauth2_get_authorize_urlhas been renamed toquery_paramsfor consistency with other methods (#453)Enforce keyword-only arguments for most SDK-provided APIs (#453)
All type annotations for
Sequencewhich could be relaxed toIterablehave been updated (#465)
Fixed¶
Documentation¶
v3.0.0b3 (2021-08-13)¶
Added¶
Flesh out the
GroupsClientand 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 theGroupsManager(#435, #443)globus-sdk now provides much more complete type annotations coverage, allowing type checkers like
mypyto catch a much wider range of usage errors (#442)
v3.0.0b2 (2021-07-16)¶
Added¶
Add scope constants and scope construction helpers. See new documentation on scopes and ScopeBuilders for details (#437, #440)
API Errors now have an attached
infoobject with parsed error data where applicable. See the ErrorInfo documentation for details (#441)
Changed¶
v3.0.0b1 (2021-07-02)¶
Added¶
Add support for
TransferClient.get_shared_endpoint_list(#434)
Changed¶
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, oradditional_fieldsdictionary, depending on the context (#433)The interface for retry parameters has been simplified.
RetryPolicyobjects have been merged into the transport object, and retry parameters likemax_retriesmay now be supplied directly astransport_params(#430)
v3.0.0a4 (2021-06-28)¶
Added¶
Add
BaseClientto the top-level exports ofglobus_sdk, so it can now be accessed under the nameglobus_sdk.BaseClient
Fixed¶
Fix several paginators which were broken in
3.0.0a3(#431)
Documentation¶
Autodocumentation of paginated methods (#432)
v3.0.0a3 (2021-06-25)¶
Changed¶
Pagination has changed significantly. (#418)
Methods which support pagination like
TransferClient.endpoint_searchno longer return an iterablePaginatedResourcetype. Instead, these client methods returnGlobusHTTPResponseobjects with a single page of results.Paginated variants of these methods are available by renaming a call from
client.<method>toclient.paginated.<method>. So, for example, aTransferClientnow supportsclient.paginated.endpoint_search(). The arguments to this function are the same as the original method.client.paginated.<method>calls returnPaginatorobjects, which support two types of iteration: bypages()and byitems(). To replicate the same behavior as SDK v1.x and v2.xPaginatedResourcetypes, useitems(), as inclient.paginated.endpoint_search("query").items()
v3.0.0a2 (2021-06-10)¶
Added¶
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
Changed¶
Refactor response classes (#425)
v3.0.0a1 (2021-06-04)¶
Removed¶
Added¶
globus-sdknow provides PEP561 typing data (#420)OAuthTokenResponse.decode_id_tokencan now be provided a JWK and openid configuration as parameters.AuthClientimplements 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)
Changed¶
The interface for
GlobusAuthorizernow definesget_authorization_headerinstead ofset_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=...andtext_body=..., usedata=...combined withencoding="json",encoding="form", orencoding="text"to format payload data.encoding="json"is the default whendatais a dict.By default, requests are retried automatically on potentially transient error codes (e.g.
http_status=500) and network errors with exponential backoffglobus_sdk.BaseClientand its subclasses defineretry_policyandtransport_classclass attributes which can be used to customize the retry behavior usedThe JWT dependency has been updated to
pyjwt>=2,<3(#416)The config files in
~/.globus.cfgand/etc/globus.cfgare no longer used. Configuration can now be done via environment variables (#409)BaseClient.app_nameis a property with a custom setter, replacingset_app_name(#415)
Documentation¶
Update documentation site style and layout (#423)
v2.0.1 (2021-02-02)¶
Python Support¶
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 (2021-01-29)¶
Added¶
Add support for task skipped errors via
TransferClient.task_skipped_errorsandTransferClient.endpoint_manager_task_skipped_errors(#393)
Development¶
v1.10.0 (2020-12-18)¶
Fixed¶
Add support for pyinstaller installation of globus-sdk (#387)
v1.9.1 (2020-08-27)¶
Fixed¶
Fix
GlobusHTTPResponseto handle responses with noContent-Typeheader (#375)
v1.9.0 (2020-03-05)¶
Added¶
Changed¶
Don’t append trailing slashes when no path is given to a low-level client method like
get()(#364)
Development¶
v1.8.0 (2019-07-11)¶
Added¶
Add a property to paginated results which shows if more results are available (#346)
Fixed¶
Documentation¶
Update docs to state that Globus SDK uses semver (#357)
v1.7.1 (2019-02-21)¶
Added¶
Allow arbitrary keyword args to
TransferData.add_item()andDeleteData.add_item(), which passthrough to the item bodies (#339)
Development¶
v1.7.0 (2018-12-18)¶
Added¶
Development¶
v1.6.1 (2018-10-30)¶
Changed¶
Replace egg distribution format with wheels (#314)
Development¶
Internal maintenance
v1.6.0 (2018-08-29)¶
Python Support¶
Officially add support for python 3.7 (#300)
Removed¶
Added¶
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)
Add the patch() method to BaseClient and its subclasses, sending an HTTP PATCH request (#302)
Changed¶
Fixed¶
Correct handling of environment=”production” as an argument to client construction (#307)
Documentation¶
v1.5.0 (2018-02-09)¶
Added¶
Add support for retrieving a local Globus Connect Personal endpoint’s UUID (#276)
Fixed¶
Fix bug in search client parameter handling (#274)
v1.4.1 (2017-12-20)¶
Added¶
Support connection timeouts. Default timeout of 60 seconds (#264)
Fixed¶
Send
Content-Type: application/jsonon requests with JSON request bodies (#266)
v1.4.0 (2017-12-13)¶
Added¶
Changed¶
v1.3.0 (2017-11-20)¶
Python Support¶
Improve error message when installation onto python2.6 is attempted (#245)
Changed¶
Raise errors on client instantiation when
GLOBUS_SDK_ENVIRONMENTappears to be invalid, supportGLOBUS_SDK_ENVIRONMENT=preview(#247)
v1.2.2 (2017-11-01)¶
Added¶
Allow client classes to accept
base_urlas an argument to_init__()(#241)
Changed¶
Fixed¶
Fix packaging to not include testsuite (#232)
v1.2.1 (2017-09-29)¶
Changed¶
Use PyJWT instead of python-jose for JWT support (#227)
v1.2.0 (2017-08-18)¶
Added¶
Add Transfer symlink support (#218)
Fixed¶
Documentation¶
Doc Updates & Minor Improvements
v1.1.1 (2017-05-19)¶
Fixed¶
Use correct paging style when making
endpoint_manager_task_listcalls (#210)
v1.1.0 (2017-05-01)¶
Python Support¶
Add python 3.6 to supported platforms (#180)
Added¶
Changed¶
Documentation¶
Development¶
Numerous improvements to testsuite
v1.0.0 (2017-04-10)¶
Added¶
Adds
AuthAPIErrorwith more flexible error payload handling (#175)
v0.7.2 (2017-04-05)¶
Added¶
Add
AuthClient.validate_token(#172)
Fixed¶
Bugfix for
on_refreshusers ofRefreshTokenAuthorizerandClientCredentialsAuthorizer(#173)
v0.7.1 (2017-04-03)¶
Removed¶
Remove deprecated
oauth2_start_flow_*methods (#170)
Added¶
v0.7.0 (2017-03-30)¶
Removed¶
Remove all properties of
OAuthTokenResponseother thanby_resource_server(#162)
Fixed¶
Make
OAuthTokenResponse.decode_id_token()respectssl_verify=noconfiguration (#161)
v0.6.0 (2017-03-21)¶
Added¶
Add
deadlinesupport toTransferDataandDeleteData(#159)
Changed¶
Fixed¶
Fixup OAuth2 PKCE to be spec-compliant (#154)
v0.5.1 (2017-02-25)¶
Added¶
Add support for the
prefill_named_grantoption to the Native App authorization flow (#143)