diff --git a/lib/galaxy/files/__init__.py b/lib/galaxy/files/__init__.py index 202b87fba21..e25948ee0ca 100644 --- a/lib/galaxy/files/__init__.py +++ b/lib/galaxy/files/__init__.py @@ -7,7 +7,6 @@ from typing import ( Any, NamedTuple, Protocol, - TYPE_CHECKING, ) from galaxy import exceptions @@ -27,8 +26,28 @@ from .plugins import ( FileSourcePluginsConfig, ) -if TYPE_CHECKING: - from galaxy.managers.context import ProvidesUserContext + +class ProvidesFileSourcesTransaction(Protocol): + """The slice of a Galaxy transaction ProvidesFileSourcesUserContext reads.""" + + @property + def anonymous(self) -> bool: ... + + @property + def user(self) -> Any: ... + + @property + def user_ftp_dir(self) -> str | None: ... + + @property + def user_is_admin(self) -> bool: ... + + @property + def user_vault(self) -> Any: ... + + @property + def app(self) -> Any: ... + log = logging.getLogger(__name__) @@ -375,7 +394,7 @@ OptionalUserContext = FileSourcesUserContext | None class ProvidesFileSourcesUserContext(FileSourcesUserContext, FileSourceDictifiable): """Implement a FileSourcesUserContext from a Galaxy ProvidesUserContext (e.g. trans).""" - def __init__(self, trans: "ProvidesUserContext", **kwargs): + def __init__(self, trans: ProvidesFileSourcesTransaction, **kwargs): self.trans = trans @property diff --git a/test/unit/files/test_drs.py b/test/unit/files/test_drs.py index f8e659f579e..62570bb38e9 100644 --- a/test/unit/files/test_drs.py +++ b/test/unit/files/test_drs.py @@ -13,9 +13,9 @@ import responses from galaxy.files import ( DictFileSourcesUserContext, + ProvidesFileSourcesTransaction, ProvidesFileSourcesUserContext, ) -from galaxy.managers.context import ProvidesUserContext from ._util import ( assert_realizes_as, assert_realizes_contains, @@ -46,7 +46,7 @@ def test_provides_file_sources_user_context_oidc_access_tokens(): class DummyTrans: user = DummyUser() - tokens = ProvidesFileSourcesUserContext(cast(ProvidesUserContext, DummyTrans())).oidc_access_tokens + tokens = ProvidesFileSourcesUserContext(cast(ProvidesFileSourcesTransaction, DummyTrans())).oidc_access_tokens assert tokens == {"oidc": "oidc-token", "keycloak": "keycloak-token"} @@ -56,7 +56,7 @@ def test_provides_file_sources_user_context_oidc_access_tokens_anonymous(): class DummyTrans: user = None - assert ProvidesFileSourcesUserContext(cast(ProvidesUserContext, DummyTrans())).oidc_access_tokens is None + assert ProvidesFileSourcesUserContext(cast(ProvidesFileSourcesTransaction, DummyTrans())).oidc_access_tokens is None def test_drs_http_headers_template_expansion():