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.
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 toGCSClient
to resolve GCS Connector UUIDs to human readable Connector display names (#582)Remove nonexistent
monitor_ongoing
scope fromTransferScopes
(#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 alsoPOSIXStoragePolicies
andPOSIXStagingStoragePolicies
are added for declaring the storage gatewaypolicies
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 toGCSCollectionScopeBuilder
(#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 theglobus-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 transfersAdd
skip_activation_check
as an argument toDeleteData
andTransferData
The
sync_level
argument toTransferData
is now annotated more accurately to reject bad strings
Improve handling of array-style API responses (#575)
Response objects now define
__bool__
asbool(data)
. This means thatbool(response)
could beFalse
if the data is{}
,[]
,0
, or other falsey-types. Previously,__bool__
was not defined, meaning it was alwaysTrue
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 withlen(response)
globus_sdk.GroupsClient.get_my_groups
returns anArrayResponse
, 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 propertyheaders
which provides the case-insensitive mapping of header values from the responseGlobusAPIError
andGlobusHTTPResponse
now includehttp_reason
, a string property containing the “reason” from the responseBaseClient.request
andRequestsTransport.request
now have options for setting boolean optionsallow_redirects
andstream
, 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 MutableScope
ScopeBuilder
objects provide a method,make_mutable
, which converts from a scope name to aMutableScope
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 withTimerJob
for constructing data to pass to the Timer service for job creation, andTimerAPIError
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)¶
v3.5.0 (2022-03-02)¶
globus_sdk.IdentityMap
can now take a cache as an input. This allows multipleIdentityMap
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 theTransferClient
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 toGroupsClient.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
ontask_skipped_errors
andtask_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 of4.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
andSearchClient.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
, andget_role_list
(#507)Add
mapped_collection
andfilter
query arguments toGCSClient.get_collection_list
(#510)Add role methods to
GCSClient
(#513)GCSClient.get_role_list
lists endpoint or collection rolesGCSClient.create_role
creates a roleGCSClient.get_role
gets a single roleGCSClient.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’sbuild
tool, to resolve issues with wheel builds.
v3.3.0 (2022-01-25)¶
Add
update_group
method toGroupsClient
(#506)The
TransferData
andDeleteData
helper 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)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 unsupportedsync_level
values with aValueError
on initialization, rather than erroring at submission time. Thesync_level
has also had its type annotation fixed to allow forint
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 existingpaginated
methods, but correctly preserves type annotations. It is therefore preferable for users who are usingmypy
to do type checking. (#494)Paginator
objects 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)Document
globus_sdk.config.get_service_url
andglobus_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 onTransferData
andDeleteData
(#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 responseResponses now implement
http_status
andcontent_type
as properties without setters
v3.1.0 (2021-10-13)¶
Add
filter
as a supported parameter toTransferClient.task_list
(#484)The
filter
parameter toTransferClient.task_list
andTransferClient.operation_ls
can now be passed as aDict[str, str | List[str]]
. Documentation on theTransferClient
explains how this will be formatted, and is linked from the param docs forfilter
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)¶
v3.0.1 (2021-09-15)¶
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
andGuestCollectionDocument
(#468)Remove support for
bytes
values for fields consuming UUIDs (#471)Add support for specifying
config_dir
toLocalGlobusConnectPersonal
(#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
toGCSCollectionScopeBuilder
and addGCSEndpointScopeBuilder
. TheGCSClient
includes helpers for instantiating these scope builders (#448)GCSClient
supportsget_collection
anddelete_collection
.get_collection
uses a newUnpackingGCSResponse
response type (#451, #464)Remove
BaseClient.qjoin_path
(#452)The
additional_params
parameter toAuthClient.oauth2_get_authorize_url
has been renamed toquery_params
for consistency with other methods (#453)Enforce keyword-only arguments for most SDK-provied APIs (#453)
Fix annotations for
server_id
onTransferClient
methods (#455)Add
delete_destination_extra
param toTransferData
(#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 inquery_params
(#460)Fix
visibility
typo inGroupsClient
(#463)All type annotations for
Sequence
which could be relaxed toIterable
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 theGroupsManager
(#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
, andSearchQuery
) now inherit from a custom object, notdict
, 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
, oradditional_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 likemax_retries
may now be supplied directly astransport_params
(#430)
v3.0.0a4 (2021-06-28)¶
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 returnGlobusHTTPResponse
objects 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, aTransferClient
now supportsclient.paginated.endpoint_search()
. The arguments to this function are the same as the original method.- **
client.paginated.<method>
calls returnPaginator
objects, which support two types of iteration: by
pages()
and byitems()
. To replicate the same behavior as SDK v1.x and v2.xPaginatedResource
types, useitems()
, as inclient.paginated.endpoint_search("query").items()
v3.0.0a2 (2021-06-10)¶
v3.0.0a1 (2021-06-04)¶
Update documentation site style and layout (#423)
The interface for
GlobusAuthorizer
now definesget_authorization_header
instead 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 whendata
is 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.BaseClient
and its subclasses defineretry_policy
andtransport_class
class attributes which can be used to customize the retry behavior usedglobus-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, replacingset_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 fromBaseClient
(#407)Remove
auth_client=...
parameter toOAuthTokenResponse.decode_id_token
(#400)
v2.0.1 (2021-02-02)¶
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)¶
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 noContent-Type
header (#375)
v1.9.0 (2020-03-05)¶
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 newrefresh_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)¶
v1.7.0 (2018-12-18)¶
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)¶
v1.4.1 (2017-12-20)¶
v1.4.0 (2017-12-13)¶
v1.3.0 (2017-11-20)¶
v1.2.2 (2017-11-01)¶
v1.2.1 (2017-09-29)¶
Use PyJWT instead of python-jose for JWT support (#227)
v1.2.0 (2017-08-18)¶
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)