Skip to content

Releases: globus/globus-sdk-python

v3.13.0

13 Oct 15:32
3.13.0
Compare
Choose a tag to compare
  • Add connect_params to SQLiteAdapter, enabling customization of the sqlite connection (#613)

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

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

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

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

v3.12.0

21 Sep 19:32
3.12.0
Compare
Choose a tag to compare
  • Add Mapped Collection policy helper types for constructing policies data. (#607)
    The following new types are introduced:

    • CollectionPolicies (the base class for these types)
    • POSIXCollectionPolicies
    • POSIXStagingCollectionPolicies
    • GoogleCloudStorageCollectionPolicies
  • Fix bug where UserCredential policies were being converted to a string (#608)

  • Corrected the Flows service resource_server string to flows.globus.org (#612)

v3.11.0

30 Aug 16:35
3.11.0
Compare
Choose a tag to compare
  • Adjust behaviors of TransferData and TimerJob to make TimerJob.from_transfer_data work and to defer requesting the submission_id until the task submission call (#602)
    • TransferData avoids passing null for several values when they are omitted, ranging from optional parameters to add_item to skip_activation_check
    • TransferData and DeleteData now support usage in which the transfer_client parameters is None. In these cases, if submission_id is omitted, it will be omitted from the document, allowing the creation of a partial task submsision document with no submission_id
    • TimerJob.from_transfer_data will now raise a ValueError if the input document contains submission_id or skip_activation_check
    • TransferClient.submit_transfer and TransferClient.submit_delete now check to see if the data being sent contains a submission_id. If it does not, get_submission_id is called automatically and set as the submission_id on the payload. The new submission_id is set on the object passed to these methods, meaning that these methods are now side-effecting.

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

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

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

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

    • globus_sdk.FlowsAPIError is the error class for this client
    • FlowsClient.list_flows is implemented as a method for listing deployed flows, with some of the filtering parameters of this API supported as keyword arguments
    • The scopes for the Globus Flows API can be accessed via globus_sdk.scopes.FlowsScopes or globus_sdk.FlowsClient.scopes

v3.10.1

11 Jul 18:21
3.10.1
Compare
Choose a tag to compare
  • Add guest collection example script to docs (#590)
  • Use setattr in the lazy-importer. This makes attribute access after imports faster by several orders of magnitude. (#591)

v3.10.0

27 Jun 18:34
3.10.0
Compare
Choose a tag to compare
  • Add User Credential methods to GCSClient (#582)

    • get_user_credential_list
    • get_user_credential
    • create_user_credential
    • update_user_credential
    • delete_user_credential
  • Add connector_id_to_name helper to GCSClient to resolve GCS Connector UUIDs to human readable Connector display names (#582)

  • Remove nonexistent monitor_ongoing scope from TransferScopes (#583)

v3.9.0

02 Jun 17:39
3.9.0
Compare
Choose a tag to compare
  • Add helper objects and methods for interacting with Globus Connect Server Storage Gateways (#554)

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

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

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

    • BlackPearlStoragePolicies
    • BoxStoragePolicies
    • CephStoragePolicies
    • GoogleDriveStoragePolicies
    • GoogleCloudStoragePolicies
    • OneDriveStoragePolicies
    • AzureBlobStoragePolicies
    • S3StoragePolicies
    • ActiveScaleStoragePolicies
    • IrodsStoragePolicies
    • HPSSStoragePolicies
  • Add https scope to GCSCollectionScopeBuilder (#563)

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

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

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

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

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

  • Several improvements to Transfer helper objects (#573)

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

    • Add skip_activation_check as an argument to DeleteData and TransferData

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

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

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

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

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

v3.8.0

04 May 17:53
3.8.0
Compare
Choose a tag to compare
  • Several changes expose more details of HTTP requests (#551)

    • GlobusAPIError has a new property headers which provides the case-insensitive mapping of header values from the response
    • GlobusAPIError and GlobusHTTPResponse now include http_reason, a string property containing the "reason" from the response
    • BaseClient.request and RequestsTransport.request now have options for setting boolean options allow_redirects and stream, controlling how requests are processed
  • New tools for working with optional and dependent scope strings (#553)

    • A new class is provided for constructing optional and dependent scope strings, MutableScope. Import as in from globus_sdk.scopes import MutableScope
    • ScopeBuilder objects provide a method, make_mutable, which converts from a scope name to a MutableScope object. See documentation on scopes for usage details

v3.7.0

08 Apr 19:00
3.7.0
Compare
Choose a tag to compare
  • Add a client for the Timer service (#548)
    • Add TimerClient class, along with TimerJob for constructing data to pass to the Timer service for job creation, and TimerAPIError
    • Modify globus_sdk.config utilities to provide URLs for Actions and Timer services
  • Fix annotations to allow request data to be a string. This is supported at runtime but was missing from annotations. (#549)

v3.6.0

18 Mar 20:33
3.6.0
Compare
Choose a tag to compare
  • ScopeBuilder objects now support known_url_scopes, and known scope arguments to a ScopeBuilder may now be of type str in addition to list[str] (#536)
  • Add the RequestsTransport.tune contextmanager to the transport layer, allowing the settings on the transport to be set temporarily (#540)

v3.5.0

02 Mar 23:19
3.5.0
Compare
Choose a tag to compare
  • globus_sdk.IdentityMap can now take a cache as an input. This allows multiple IdentityMap instances to share the same storage cache. Any mutable mapping type is valid, so the cache can be backed by a database or other storage (#500)

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

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

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

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

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