See :ref:`versioning` for our versioning policy.
The :ref:`upgrading <upgrading>` doc is a good reference if you are upgrading to a major new version of the SDK.
- Added
FlowsClient.update_flow(...)(:pr:`710`) - Support passing "include" as a transfer
filter_rulemethod (:pr:`712`) - Documentation for client methods has been improved to more consistently format and display examples and other information (:pr:`714`)
- The return type of
AuthClient.get_identitiesis now correctly annotated as an iterable type,globus_sdk.GetIdentitiesResponse(:pr:`716`) - Make the request-like interface for response objects and errors more uniform. (:pr:`715`)
- Both
GlobusHTTPResponseandGlobusAPIErrorare updated to ensure that they have the following properties in common:http_status,http_reason,headers,content_type,text GlobusAPIError.raw_textis deprecated in favor oftextGlobusHTTPResponseandGlobusAPIErrorhave both gained a new property,binary_content, which returns the unencoded response data as bytes
- Both
- When users input empty
requested_scopesvalues, these are now rejected with a usage error instead of being translated into the default set ofrequested_scopes - Behaviors which will change in version 4.0.0 of the
globus-sdknow emit deprecation warnings. - 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 (:pr:`695`)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 (:pr:`696`)- Fix the type annotation for max_sleep on client transports to allow float values (:pr:`697`)
ConfidentialAppAuthClient.oauth2_get_dependent_tokensnow supports therefresh_tokensparameter to enable requests for dependent refresh tokens (:pr:`698`)
- Remove support for python3.6 (:pr:`681`)
- Fix a typo in
TransferClient.endpoint_manager_task_successful_transferswhich prevented calls from being made correctly (:pr:`683`) - Make
MutableScope.scope_stringa public instance attribute (was_scope_string) (:pr:`687`) MutableScopeobjects can now be used in theoauth2_start_flowandoauth2_client_credentials_tokensmethods ofAuthClientclasses as part ofrequested_scopes(:pr:`689`)- 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. (:pr:`691`)
- Fix the Timer code example (:pr:`672`)
- New documentation examples for Transfer Task submission in the presence of
ConsentRequirederrors (:pr:`673`) - Improved GCS Collection datatype detection to support
collection#1.6.0andcollection#1.7.0documents (:pr:`675`)guest_auth_policy_idis now supported onMappedCollectionDcoumentuser_messagestrings over 64 characters are now supported
- Allow UUID values for the
client_idparameter toAuthClientand its subclasses (:pr:`676`) - The
session_required_policiesattribute ofAuthorizationInfois now parsed as a list of strings when present, andNonewhen absent. (:pr:`678`) globus_sdk.ArrayResponseandglobus_sdk.IterableResponseare now available as names. Previously, these were only importable fromglobus_sdk.response(:pr:`680`)ArrayResponseandIterableResponsehave better error behaviors when the API data does not match their expected types (:pr:`680`)
- AuthorizationParameterInfo now exposes session_required_policies (:pr:`658`)
- Fix a bug where
TransferClient.endpoint_manager_task_listdidn't handle thelast_keyargument when paginated (:pr:`662`)
- Scope Names can be set explicitly in a
ScopeBuilder(:pr:`641`) - Introduced
ScopeBuilder.scope_namesproperty (:pr:`641`) - Fixed SpecificFlowClient scope string (:pr:`641`)
- Improve the
__str__implementation forOAuthTokenResponse(:pr:`640`) - When
GlobusHTTPResponsecontains a list, calls toget()will no longer fail with anAttributeErrorbut will return the default value (Noneif unspecified) instead (:pr:`644`) - Add support for
interpret_globsandignore_missingtoDeleteData(:pr:`646`) - A new object,
globus_sdk.LocalGlobusConnectServercan be used to inspect the local installation of Globus Connect Server (:pr:`647`)- The object supports properties for
endpoint_idanddomain_name - This only supports Globus Connect Server version 5
- The object supports properties for
- The filter argument to TransferClient.operation_ls now accepts a list to pass multiple filter params (:pr:`652`)
- Fix a bug in the type annotations for transport objects which restricted the size of status code tuples set as classvars (:pr:`651`)
- Improvements to
MutableScopeobjects (:pr:`654`)MutableScope(...).serialize()is added, andstr(MutableScope(...))uses itMutableScope.add_dependencynow supportsMutableScopeobjects as inputs- The
optionalargument toadd_dependencyis deprecated.MutableScope(...).add_dependency(MutableScope("foo", optional=True))can be used to add an optional dependency ScopeBuilder.make_mutablenow accepts a keyword argumentoptional. This allows, for example,TransferScopes.make_mutable("all", optional=True)
- Add support for
FlowsClient.get_flowandFlowsClient.delete_flow(:pr:`631`, :pr:`626`) - Add a
close()method toSQLiteAdapterwhich closes the underlying connection (:pr:`628`) - Python 3.11 is now officially supported (:pr:`628`)
- Add
connect_paramstoSQLiteAdapter, enabling customization of the sqlite connection (:pr:`613`) - Add
FlowsClient.create_flow(...)(:pr:`614`) - Add
globus_sdk.SpecificFlowClientto manage interactions performed against a specific flow (:pr:`616`) - Fix rst formatting for a few nested bullet points in existing changelog (:pr:`619`)
- Add support to
FlowsClient.list_flowsfor pagination and theorderbyparameter (:pr:`621`, :pr:`622`)
- Add Mapped Collection policy helper types for constructing
policiesdata. (:pr:`607`) The following new types are introduced:CollectionPolicies(the base class for these types)POSIXCollectionPoliciesPOSIXStagingCollectionPoliciesGoogleCloudStorageCollectionPolicies
- Fix bug where
UserCredentialpolicies were being converted to a string (:pr:`608`) - Corrected the Flows service
resource_serverstring toflows.globus.org(:pr:`612`)
- Adjust behaviors of
TransferDataandTimerJobto makeTimerJob.from_transfer_datawork and to defer requesting thesubmission_iduntil the task submission call (:pr:`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)- Implement
__dir__for the lazy importer inglobus_sdk. This enables tab completion in the interpreter and other features with rely upondir(globus_sdk)(:pr:`603`) - Add an initial Globus Flows client class,
globus_sdk.FlowsClient(:pr:`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 arguments- The scopes for the Globus Flows API can be accessed via
globus_sdk.scopes.FlowsScopesorglobus_sdk.FlowsClient.scopes
- Add guest collection example script to docs (:pr:`590`)
- Use
setattrin the lazy-importer. This makes attribute access after imports faster by several orders of magnitude. (:pr:`591`)
- Add User Credential methods to
GCSClient(:pr:`582`)get_user_credential_listget_user_credentialcreate_user_credentialupdate_user_credentialdelete_user_credential
- Add
connector_id_to_namehelper toGCSClientto resolve GCS Connector UUIDs to human readable Connector display names (:pr:`582`) - Remove nonexistent
monitor_ongoingscope fromTransferScopes(:pr:`583`)
- Add helper objects and methods for interacting with Globus Connect Server
Storage Gateways (:pr:`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.
StorageGatewayDocumentis the main one, but alsoPOSIXStoragePoliciesandPOSIXStagingStoragePoliciesare added for declaring the storage gatewaypoliciesfield. More policy helpers will be added in future versions.
- New methods on
- Add support for more
StorageGatewayPoliciesdocuments. (:pr:`562`) The following types are now available:BlackPearlStoragePoliciesBoxStoragePoliciesCephStoragePoliciesGoogleDriveStoragePoliciesGoogleCloudStoragePoliciesOneDriveStoragePoliciesAzureBlobStoragePoliciesS3StoragePoliciesActiveScaleStoragePoliciesIrodsStoragePoliciesHPSSStoragePolicies
- Add
httpsscope toGCSCollectionScopeBuilder(:pr:`563`) - Update the fields used to extract
AuthAPIErrormessages (:pr:`566`) ScopeBuilderobjects now implement__str__for easy viewing. For example,print(globus_sdk.TransferClient.scopes)(:pr:`568`)- Imports from
globus_sdkare now evaluated lazily via module-level__getattr__on python 3.7+ (:pr:`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 (:pr:`573`)
- Add
TransferData.add_filter_rulefor adding filter rules (exclude rules) to transfers - Add
skip_activation_checkas an argument toDeleteDataandTransferData - The
sync_levelargument toTransferDatais now annotated more accurately to reject bad strings
- Add
- Improve handling of array-style API responses (:pr:`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 alwaysTrue globus_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
- Response objects now define
- Several changes expose more details of HTTP requests (:pr:`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 (:pr:`553`)
- A new class is provided for constructing optional and dependent scope
strings,
MutableScope. Import as infrom globus_sdk.scopes import MutableScope ScopeBuilderobjects provide a method,make_mutable, which converts from a scope name to aMutableScopeobject. See documentation on scopes for usage details
- A new class is provided for constructing optional and dependent scope
strings,
- Add a client for the Timer service (:pr:`548`)
- Add
TimerClientclass, along withTimerJobfor constructing data to pass to the Timer service for job creation, andTimerAPIError - Modify
globus_sdk.configutilities to provide URLs for Actions and Timer services
- Add
- Fix annotations to allow request data to be a string. This is supported at runtime but was missing from annotations. (:pr:`549`)
ScopeBuilderobjects now supportknown_url_scopes, and known scope arguments to aScopeBuildermay now be of typestrin addition tolist[str](:pr:`536`)- Add the
RequestsTransport.tunecontextmanager to the transport layer, allowing the settings on the transport to be set temporarily (:pr:`540`)
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 (:pr:`500`)- Add
TransferRequestsTransportclass that does not retry ExternalErrors. This fixes cases in which theTransferClientincorrectly retried requests (:pr:`522`) - Use the "reason phrase" as a failover for stringified API errors with no body (:pr:`524`)
- Add support for
includeas a parameter toGroupsClient.get_group.includecan be a string or iterable of strings (:pr:`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 (:pr:`529`)
- 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 (:pr:`520`)
- The
typing_extensionsrequirement in package metadata now sets a lower bound of4.0, to force upgrades of installations to get a new enough version (:pr:`518`)
- Support pagination on
SearchClient.post_search(:pr:`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. (:pr:`507`) - Add methods to
SearchClientfor managing index roles.create_role,delete_role, andget_role_list(:pr:`507`) - Add
mapped_collectionandfilterquery arguments toGCSClient.get_collection_list(:pr:`510`) - Add role methods to
GCSClient(:pr:`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 (:pr:`514`)
- Packaging bugfix.
globus-sdkis now built with pypa'sbuildtool, to resolve issues with wheel builds.
- Add
update_groupmethod toGroupsClient(:pr:`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. (:pr:`502`) - Several minor bugs have been found and fixed (:pr:`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-8 TransferDatawill 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.
- Exceptions raised in the SDK always use
- 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. (:pr:`494`) 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 (:pr:`495`)- Document
globus_sdk.config.get_service_urlandglobus_sdk.config.get_webapp_url(:pr:`496`)- Internally, these are updated to be able to default to the
GLOBUS_SDK_ENVIRONMENTsetting, so specifying an environment is no longer required
- Internally, these are updated to be able to default to the
- Update to avoid deprecation warnings on python 3.10 (:pr:`499`)
- Add
iter_itemsas a method onTransferDataandDeleteData(:pr:`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. (:pr:`489`)
- Fix type annotations on client methods with paginated variants (:pr:`491`)
- ClientCredentialsAuthorizer now accepts
Union[str, Iterable[str]]as the type for scopes (:pr:`498`) - The implementation of several properties of
GlobusHTTPResponsehas changed (:pr:`497`)- Responses have a new property,
headers, a case-insensitive dict of headers from the response - Responses now implement
http_statusandcontent_typeas properties without setters
- Responses have a new property,
- Add
filteras a supported parameter toTransferClient.task_list(:pr:`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 (:pr:`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 (:pr:`486`)
- Fix several internal decorators which were destroying type information about decorated functions. Type signatures of many methods are therefore corrected (:pr:`485`)
- Update the minimum dependency versions to lower bounds which are verified to work with the testsuite (:pr:`482`)
- Produce more debug logging when SDK logs are enabled (:pr:`480`)
ScopeBuilderobjects now define the type of__getattr__formypyto know that dynamic attributes are strings (:pr:`472`)- Fix remaining
type: ignoreusages in globus-sdk (:pr:`473`) - Fix malformed PEP508
python_versionbound in dev dependencies (:pr:`474`)
- Add
filter_is_errorparameter to advanced task list (:pr:`467`) - Add a
LocalGlobusConnectPersonal.get_owner_info()for looking up local user information from gridmap (:pr:`466`) - Add support for GCS collection create and update. This includes new data
helpers,
MappedCollectionDcoumentandGuestCollectionDocument(:pr:`468`) - Remove support for
bytesvalues for fields consuming UUIDs (:pr:`471`) - Add support for specifying
config_dirtoLocalGlobusConnectPersonal(:pr:`470`)
- Minor fix to wheel builds: do not declare wheels as universal (:pr:`444`)
- Add a new
GCSClientclass for interacting with GCS Manager APIs (:pr:`447`) - Rename
GCSScopeBuildertoGCSCollectionScopeBuilderand addGCSEndpointScopeBuilder. TheGCSClientincludes helpers for instantiating these scope builders (:pr:`448`) GCSClientsupportsget_collectionanddelete_collection.get_collectionuses a newUnpackingGCSResponseresponse type (:pr:`451`, :pr:`464`)- Remove
BaseClient.qjoin_path(:pr:`452`) - The
additional_paramsparameter toAuthClient.oauth2_get_authorize_urlhas been renamed toquery_paramsfor consistency with other methods (:pr:`453`) - Enforce keyword-only arguments for most SDK-provided APIs (:pr:`453`)
- Fix annotations for
server_idonTransferClientmethods (:pr:`455`) - Add
delete_destination_extraparam toTransferData(:pr:`456`) - Ensure all
TransferClientmethod parameters are documented (:pr:`449`, :pr:`454`, :pr:`457`, :pr:`458`, :pr:`459`, :pr:`461`, :pr:`462`) TransferClient.endpoint_manager_task_listnow takes filters as named keyword arguments, not only inquery_params(:pr:`460`)- Fix
visibilitytypo inGroupsClient(:pr:`463`) - All type annotations for
Sequencewhich could be relaxed toIterablehave been updated (:pr:`465`)
- 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(:pr:`435`, :pr:`443`) - globus-sdk now provides much more complete type annotations coverage,
allowing type checkers like
mypyto catch a much wider range of usage errors (:pr:`442`)
- Add scope constants and scope construction helpers. See new documentation on :ref:`scopes and ScopeBuilders <scopes>` for details (:pr:`437`, :pr:`440`)
- Improve the rendering of API exceptions in stack traces to include the method, URI, and authorization scheme (if recognized) (:pr:`439`)
- Payload helper objects (
TransferData,DeleteData, andSearchQuery) now inherit from a custom object, notdict, but they are still dict-like in behavior (:pr:`438`) - API Errors now have an attached
infoobject with parsed error data where applicable. See the :ref:`ErrorInfo documentation <error_info>` for details (:pr:`441`)
- Add support for
TransferClient.get_shared_endpoint_list(:pr:`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_fieldsdictionary, depending on the context (:pr:`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(:pr:`430`)
- Fix several paginators which were broken in
3.0.0a3(:pr:`431`) - Add
BaseClientto the top-level exports ofglobus_sdk, so it can now be accessed under the nameglobus_sdk.BaseClient - Autodocumentation of paginated methods (:pr:`432`)
- Pagination has changed significantly. (:pr:`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()
- Methods which support pagination like
- Refactor response classes (:pr:`425`)
- A new subpackage is available for public use,
globus_sdk.tokenstorage(:pr:`405`) - Add client for Globus Groups API,
globus_sdk.GroupsClient. Includes a dedicated error class,globus_sdk.GroupsAPIError
- Update documentation site style and layout (:pr:`423`)
- The interface for
GlobusAuthorizernow definesget_authorization_headerinstead ofset_authorization_header, and additional keyword arguments are not allowed (:pr:`422`) - New Transport layer handles HTTP details, variable payload encodings, and automatic request retries (:pr:`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 backoff globus_sdk.BaseClientand its subclasses defineretry_policyandtransport_classclass attributes which can be used to customize the retry behavior usedglobus-sdknow provides PEP561 typing data (:pr:`420`)- The JWT dependency has been updated to
pyjwt>=2,<3(:pr:`416`) - The config files in
~/.globus.cfgand/etc/globus.cfgare no longer used. Configuration can now be done via environment variables (:pr:`409`) BaseClient.app_nameis a property with a custom setter, replacingset_app_name(:pr:`415`)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. (:pr:`403`)- Remove
allowed_authorizer_typesrestriction fromBaseClient(:pr:`407`) - Remove
auth_client=...parameter toOAuthTokenResponse.decode_id_token(:pr:`400`)
Note
globus-sdk version 2.0.0 was yanked due to a release issue. Version 2.0.1 is the first 2.x version.
- Add support for task skipped errors via
TransferClient.task_skipped_errorsandTransferClient.endpoint_manager_task_skipped_errors(:pr:`393`) - Internal maintenance (:pr:`389`, :pr:`390`, :pr:`391`, :pr:`392`)
- Add support for pyinstaller installation of globus-sdk (:pr:`387`)
- Fix
GlobusHTTPResponseto handle responses with noContent-Typeheader (:pr:`375`)
- Add
globus_sdk.IdentityMap, a mapping-like object for Auth ID lookups (:pr:`367`) - Minor documentation and build improvements (:pr:`369`, :pr:`362`)
- Don't append trailing slashes when no path is given to a low-level client method like
get()(:pr:`364`) - Add
external_checksumandchecksum_algorithmtoTransferData.add_item()named arguments (:pr:`365`)
- Add a property to paginated results which shows if more results are available (:pr:`346`)
- Update docs to state that Globus SDK uses semver (:pr:`357`)
- Fix
RefreshTokenAuthorizerto handle a newrefresh_tokenbeing sent back by Auth (:pr:`359`) - Fix typo in endpoint_search log message (:pr:`355`)
- Fix Globus Web App activation links in docs (:pr:`356`)
- Allow arbitrary keyword args to
TransferData.add_item()andDeleteData.add_item(), which passthrough to the item bodies (:pr:`339`) - Minor internal improvements (:pr:`342`, :pr:`343`)
- Add
get_taskandget_task_listtoSearchClient(:pr:`335`, :pr:`336`) - Internal maintenance and testing improvements (:pr:`331`, :pr:`334`, :pr:`333`)
- Replace egg distribution format with wheels (:pr:`314`)
- Internal maintenance
- Correct handling of environment="production" as an argument to client construction (:pr:`307`)
- RenewingAuthorizer and its subclasses now expose the check_expiration_time method (:pr:`309`)
- Allow parameters to be passed to customize the request body of ConfidentialAppAuthClient.oauth2_get_dependent_tokens (:pr:`308`)
- Use sha256 hashes of tokens (instead of last 5 chars) in debug logging (:pr:`305`)
- Add the patch() method to BaseClient and its subclasses, sending an HTTP PATCH request (:pr:`302`)
- Officially add support for python 3.7 (:pr:`300`)
- Make pickling SDK objects safer (but still not officially supported!) (:pr:`284`)
- Malformed SDK usage may now raise GlobusSDKUsageError instead of ValueError. GlobusSDKUsageError inherits from ValueError (:pr:`281`)
- Numerous documentation improvements (:pr:`279`, :pr:`294`, :pr:`296`, :pr:`297`)
- Add support for retrieving a local Globus Connect Personal endpoint's UUID (:pr:`276`)
- Fix bug in search client parameter handling (:pr:`274`)
- Send
Content-Type: application/jsonon requests with JSON request bodies (:pr:`266`) - Support connection timeouts. Default timeout of 60 seconds (:pr:`264`)
- Access token response data by way of scope name (:pr:`261`)
- Make
cryptographya strict requirement, globus-sdk[jwt] is no longer necessary (:pr:`257`, :pr:`260`) - Simplify OAuthTokenResponse.decode_id_token to not require the client as an argument (:pr:`255`)
- Add (beta) SearchClient class (:pr:`259`)
- Improve error message when installation onto python2.6 is attempted (:pr:`245`)
- Raise errors on client instantiation when
GLOBUS_SDK_ENVIRONMENTappears to be invalid, supportGLOBUS_SDK_ENVIRONMENT=preview(:pr:`247`)
- Allow client classes to accept
base_urlas an argument to_init__()(:pr:`241`) - Fix packaging to not include testsuite (:pr:`232`)
- Improve docs on
TransferClienthelper classes (:pr:`231`, :pr:`233`)
- Use PyJWT instead of python-jose for JWT support (:pr:`227`)
- Add Transfer symlink support (:pr:`218`)
- Better handle UTF-8 inputs (:pr:`208`)
- Fix endpoint manager resume (:pr:`224`)
- Doc Updates & Minor Improvements
- Use correct paging style when making
endpoint_manager_task_listcalls (:pr:`210`)
- Add endpoint_manager methods to TransferClient (:pr:`191`, :pr:`199`, :pr:`200`, :pr:`201`, :pr:`203`)
- Change "identities_set" to "identity_set" for token introspection (:pr:`163`)
- Fix docs references to
oauth2_start_flow_*(:pr:`190`) - Support iterable requested_scopes everywhere (:pr:`185`)
- Add python 3.6 to supported platforms (:pr:`180`)
- Remove "Beta" from docs (:pr:`179`)
- Update dev status classifier to 5, prod (:pr:`178`)
- Numerous improvements to testsuite
- Adds
AuthAPIErrorwith more flexible error payload handling (:pr:`175`)
- Add
AuthClient.validate_token(:pr:`172`) - Bugfix for
on_refreshusers ofRefreshTokenAuthorizerandClientCredentialsAuthorizer(:pr:`173`)
- Remove deprecated
oauth2_start_flow_*methods (:pr:`170`) - Add the
ClientCredentialsAuthorizer(:pr:`164`) - Add
jwtextra install target.pip install "globus_sdk[jwt]"installspython-jose(:pr:`169`)
- Make
OAuthTokenResponse.decode_id_token()respectssl_verify=noconfiguration (:pr:`161`) - Remove all properties of
OAuthTokenResponseother thanby_resource_server(:pr:`162`)
- Opt out of the Globus Auth behavior where a
GETof an identity username will provision that identity (:pr:`145`) - Fixup OAuth2 PKCE to be spec-compliant (:pr:`154`)
- Wrap some
requestsnetwork-related errors in custom exceptions (:pr:`155`) - Add
deadlinesupport toTransferDataandDeleteData(:pr:`159`)