Globus-sdk

Latest version: v3.50.0

Safety actively analyzes 701475 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 16

3.50.0

--------------------

Added
~~~~~

- Subclasses of ``BaseClient`` may now specify ``base_url`` as class attribute. (:pr:`1125`)

Fixed
~~~~~

- Fixed an incorrect URL path in ``ComputeClient.get_task_batch``. (:pr:`1117`)

- Fix a bug in ``StorageGatewayDocument`` which stored any ``allowed_domains``
argument under an ``"allow_domains"`` key instead of the correct key,
``"allowed_domains"``. (:pr:`1120`)

Documentation
~~~~~~~~~~~~~

- Updated GlobusAppConfig docs to explain how to disable auto-login. (:pr:`1127`)

.. _changelog-3.49.0:

3.49.0

--------------------

Added
~~~~~

- Add ``filter_entity_type`` keyword argument on ``TransferClient.endpoint_search()``. (:pr:`1109`)

- Added the ``ComputeClientV3.register_endpoint()``, ``ComputeClientV3.update_endpoint()``
``ComputeClientV3.lock_endpoint()``, and ``ComputeClientV3.get_endpoint_allowlist()``
methods. (:pr:`1113`)

- Added the ``ComputeClientV2.get_version()`` and ``ComputeClientV2.get_result_amqp_url()``
methods. (:pr:`1114`)

.. _changelog-3.48.0:

3.48.0

--------------------

Added
~~~~~

- Added the ``ComputeClientV2.register_endpoint()``, ``ComputeClientV2.get_endpoint()``
``ComputeClientV2.get_endpoint_status()``, ``ComputeClientV2.get_endpoints()``,
``ComputeClientV2.delete_endpoint()``, and ``ComputeClientV2.lock_endpoint()``
methods. (:pr:`1110`)

Changed
~~~~~~~

- Removed identity ID consistency validation from ``ClientApp``. (:pr:`1111`)

Fixed
~~~~~

- Fixed a bug that would cause ``ClientApp`` token refreshes to fail. (:pr:`1111`)

.. _changelog-3.47.0:

3.47.0

--------------------

Added
~~~~~

- Add ``TimersClient.add_app_transfer_data_access_scope`` for ``TimersClient``
instances which are integrated with ``GlobusApp``. This method registers the
nested scope dependency for a ``data_access`` requirement for a transfer
timer. (:pr:`1074`)

- ``SearchQueryV1`` is a new class for submitting complex queries replacing
the legacy ``SearchQuery`` class. A deprecation warning has been added to the
``SearchQuery`` class. (:pr:`1079`)

- Created ``ComputeClientV2`` and ``ComputeClientV3`` classes to support Globus Compute
API versions 2 and 3, respectively. The canonical ``ComputeClient`` is now a subclass
of ``ComputeClientV2``, preserving backward compatibility. (:pr:`1096`)

- Added the ``ComputeClientV3.submit()``, ``ComputeClientV2.submit()``,
``ComputeClientV2.get_task()``, ``ComputeClientV2.get_task_batch()``,
and ``ComputeClientV2.get_task_group()`` methods. (:pr:`1094`)

Changed
~~~~~~~

- Improved error messaging around EOF errors when prompting for code during a command
line login flow (:pr:`1093`)

Deprecated
~~~~~~~~~~

- Deprecated the ``ComputeFunctionDocument`` and ``ComputeFunctionMetadata`` classes.
This change reflects an early design adjustment to better align with the existing
Globus Compute SDK. (:pr:`1092`)

Development
~~~~~~~~~~~

- Introduce a ``toxfile.py`` to ensure clean builds during development. (:pr:`1098`)

- The lazy importer used for the top-level ``globus_sdk`` module has been rewritten.
It produces identical results to the previous system. (:pr:`1100`)

.. _changelog-3.46.0:

3.46.0

--------------------

Python Support
~~~~~~~~~~~~~~

- Support Python 3.13. (:pr:`1058`)

Added
~~~~~

- Added an initial Globus Compute client class, :class:`globus_sdk.ComputeClient`.
(:pr:`1071`)

- Application errors are raised as a :class:`globus_sdk.ComputeAPIError`.

- A single method, ``ComputeClient.get_function`` is included initially to get
information about a registered function.

- Compute scopes are defined at ``globus_sdk.scopes.ComputeScopes`` or
``globus_sdk.ComputeClient.scopes``.

- Added the ``ComputeClient.register_function()`` and
``ComputeClient.delete_function()`` methods. (:pr:`1085`)

- ``ComputeClient.register_function()`` introduces new data model classes:
``ComputeFunctionDocument`` and ``ComputeFunctionMetadata``.

- Added the ``TransferClient.set_subscription_id()`` method. (:pr:`1073`)

- Added a new error type, ``globus_sdk.ValidationError``, used in certain cases of
``ValueError``\s caused by invalid content. (:pr:`1044`)

Removed
~~~~~~~

- Removed the ``skip_error_handling`` optional kwarg from the
``GlobusApp.get_authorizer(...)`` method interface. (:pr:`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.

- :ref:`gares` have been moved from
``globus_sdk.experimental.auth_requirements_error`` to ``globus_sdk.gare``.
(:pr:`1048`)

- The primary document type has been renamed from
``GlobusAuthRequirementsError`` to ``GARE``.

- The functions provided by this interface have been renamed to use
``gare`` in their naming: ``to_gare``, ``is_gare``, ``has_gares``, and
``to_gares``.

- :ref:`globus_apps` have been moved from ``globus_sdk.experimental.globus_app``
to ``globus_sdk`` and ``globus_sdk.globus_app``. (:pr:`1085`)

- :ref:`login_flow_managers` have been moved from
``globus_sdk.experimental.login_flow_managers`` to ``globus_sdk.login_flows``.
(:pr:`1057`)

- :ref:`token_storages` have been moved from
``globus_sdk.experimental.tokenstorage`` to ``globus_sdk.tokenstorage``.
(:pr:`1065`)

- :ref:`consents` have been moved from ``globus_sdk.experimental.consents`` to
``globus_sdk.scopes.consents``. (:pr:`1047`)

- The response classes for OAuth2 token grants now vary by the grant type. For
example, a ``refresh_token``-type grant now produces a
:class:`globus_sdk.OAuthRefreshTokenResponse`. This allows code handling responses
to more easily identify which grant type produced a response. (:pr:`1051`)

- The following new classes have been introduced:
:class:`globus_sdk.OAuthRefreshTokenResponse`,
:class:`globus_sdk.OAuthAuthorizationCodeResponse`, and
:class:`globus_sdk.OAuthClientCredentialsResponse`.

- The ``RenewingAuthorizer`` class 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 ``GlobusApp`` are now more
modular and extensible. The ``ValidatingTokenStorage`` class does not define
built-in validation behaviors, but instead contains a list of validator
objects, which can be extended and otherwise altered. (:pr:`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.

- ``LoginFlowManager``\s built with ``GlobusApp`` now generate a more
appropriate value for ``prefill_named_grant``, using the current
hostname if possible. (:pr:`1075`)


- Imports of ``globus_sdk.exc`` now defer importing ``requests`` so as to
reduce import-time performance impact the library is not needed. (:pr:`1044`)

The following error classes are now lazily loaded even when
``globus_sdk.exc`` is imported: ``GlobusConnectionError``,
``GlobusConnectionTimeoutError``, ``GlobusTimeoutError``, and ``NetworkError``.

Fixed
~~~~~

- Fixed the typing-time attributes of ``globus_sdk`` so that ``mypy`` and other
type checkers won't erroneously suppress errors about missing attributes.
(:pr:`1052`)

- Fixed the handling of Dependent Token and Refresh Token responses in
``TokenStorage`` and ``ValidatingTokenStorage`` such that ``id_token`` is only
parsed when appropriate. (:pr:`1055`)

- Fixed a bug where upgrading from access token to refresh token mode in a
``GlobusApp`` could result in multiple login prompts. (:pr:`1060`)

.. _changelog-3.45.0:

3.45.0

--------------------

Added
~~~~~

- The scope builder for ``SpecificFlowClient`` is now available for direct
access and use via ``globus_sdk.scopes.SpecificFlowScopeBuilder``. Callers can
initialize this class with a ``flow_id`` to get a scope builder for a
specific flow, e.g., ``SpecificFlowScopeBuilder(flow_id).user``.
``SpecificFlowClient`` now uses this class internally. (:pr:`1030`)

- ``TransferClient.add_app_data_access_scope`` now accepts iterables of
collection IDs as an alternative to individual collection IDs. (:pr:`1034`)

.. rubric:: Experimental

- Added ``login(...)``, ``logout(...)``, and ``login_required(...)`` to the
experimental ``GlobusApp`` construct. (:pr:`1041`)

- ``login(...)`` initiates a login flow if:

- the current entity requires a login to satisfy local scope requirements or
- ``auth_params``/``force=True`` is 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
~~~~~~~

.. rubric:: Experimental

- Made ``run_login_flow`` private in the experimental ``GlobusApp`` construct.
Usage sites should be replaced with either ``app.login()`` or
``app.login(force=True)``. (:pr:`1041`)

- **Old Usage**

.. code-block:: python

app = UserApp("my-app", client_id="<my-client-id>")
app.run_login_flow()

- **New Usage**

.. code-block:: python

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. (:pr:`1032`)

- Similarly, the error and scopes classes have been renamed and aliased:
``TimersAPIError`` replaces ``TimerAPIError`` and ``TimersScopes`` replaces
``TimerScopes``.

- Internal module names have been changed to ``timers`` from ``timer`` where
possible.

- The ``service_name`` attribute is left as ``timer`` for now, as it is
integrated into URL and ``_testing`` logic.

.. rubric:: Experimental

- The experimental ``TokenStorageProvider`` and ``LoginFlowManagerProvider``
protocols have been updated to require keyword-only arguments for their
``for_globus_app`` methods. This protects against potential ordering
confusion for their arguments. (:pr:`1028`)

- The ``default_scope_requirements`` for ``globus_sdk.FlowsClient`` has been
updated to list the Flows ``all`` scope. (:pr:`1029`)

- The ``CommandLineLoginFlowManager`` now exposes ``print_authorize_url`` and
``prompt_for_code`` as methods, which replace the ``login_prompt`` and
``code_prompt`` parameters. Users who wish to customize prompting behavior
now have a greater degree of control, and can effect this by subclassing the
``CommandLineLoginFlowManager``. (:pr:`1039`)

Example usage, which uses the popular ``click`` library to handle the
prompts:

.. code-block:: python

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_storage`` is now a public property, allowing users
direct access to the ``ValidatingTokenStorage`` used by the app to build
authorizers. (:pr:`1040`)

- The experimental ``GlobusApp`` construct's scope exploration interface has changed
from ``app.get_scope_requirements(resource_server: str) -> tuple[Scope]`` to
``app.scope_requirements``. The new property will return a deep copy of the internal
requirements dictionary mapping resource server to a list of Scopes. (:pr:`1042`)

Deprecated
~~~~~~~~~~

- ``TimerScopes`` is now a deprecated name. Use ``TimersScopes`` instead. (:pr:`1032`)

Fixed
~~~~~

.. rubric:: Experimental

- Container types in ``GlobusApp`` function argument annotations are now
generally covariant collections like ``Mapping`` rather than invariant
types like ``dict``. (:pr:`1035`)

Documentation
~~~~~~~~~~~~~

- The Globus Timers examples have been significantly enhanced and now leverage
more modern usage patterns. (:pr:`1032`)

.. _changelog-3.44.0:

Page 1 of 16

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.