Skip to content

Commit cd11d22

Browse files
committed
Merge branch 'release_24.1' into release_24.2
2 parents 40fc61c + b731dde commit cd11d22

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

lib/galaxy/model/__init__.py

+11-6
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,12 @@
230230
from galaxy.util.sanitize_html import sanitize_html
231231

232232
if TYPE_CHECKING:
233+
from sqlalchemy.sql.expression import BindParameter
234+
233235
from galaxy.objectstore import (
234236
BaseObjectStore,
235237
ObjectStorePopulator,
238+
QuotaSourceMap,
236239
)
237240
from galaxy.schema.invocation import InvocationMessageUnion
238241

@@ -674,9 +677,9 @@ def stderr(self, stderr):
674677
"""
675678

676679

677-
def calculate_user_disk_usage_statements(user_id, quota_source_map, for_sqlite=False):
680+
def calculate_user_disk_usage_statements(user_id: int, quota_source_map: "QuotaSourceMap", for_sqlite: bool = False):
678681
"""Standalone function so can be reused for postgres directly in pgcleanup.py."""
679-
statements = []
682+
statements: List[Tuple[str, Dict[str, Any]]] = []
680683
default_quota_enabled = quota_source_map.default_quota_enabled
681684
default_exclude_ids = quota_source_map.default_usage_excluded_ids()
682685
default_cond = "dataset.object_store_id IS NULL" if default_quota_enabled and default_exclude_ids else ""
@@ -692,7 +695,7 @@ def calculate_user_disk_usage_statements(user_id, quota_source_map, for_sqlite=F
692695
UPDATE galaxy_user SET disk_usage = ({default_usage})
693696
WHERE id = :id
694697
"""
695-
params = {"id": user_id}
698+
params: Dict[str, Any] = {"id": user_id}
696699
if default_exclude_ids:
697700
params["exclude_object_store_ids"] = default_exclude_ids
698701
statements.append((default_usage, params))
@@ -1161,25 +1164,27 @@ def calculate_disk_usage_default_source(self, object_store):
11611164
usage = sa_session.scalar(sql_calc, params)
11621165
return usage
11631166

1164-
def calculate_and_set_disk_usage(self, object_store):
1167+
def calculate_and_set_disk_usage(self, object_store: "BaseObjectStore"):
11651168
"""
11661169
Calculates and sets user disk usage.
11671170
"""
11681171
self._calculate_or_set_disk_usage(object_store=object_store)
11691172

1170-
def _calculate_or_set_disk_usage(self, object_store):
1173+
def _calculate_or_set_disk_usage(self, object_store: "BaseObjectStore"):
11711174
"""
11721175
Utility to calculate and return the disk usage. If dryrun is False,
11731176
the new value is set immediately.
11741177
"""
11751178
assert object_store is not None
11761179
quota_source_map = object_store.get_quota_source_map()
11771180
sa_session = object_session(self)
1181+
assert sa_session
1182+
assert sa_session.bind
11781183
for_sqlite = "sqlite" in sa_session.bind.dialect.name
11791184
statements = calculate_user_disk_usage_statements(self.id, quota_source_map, for_sqlite)
11801185
for sql, args in statements:
11811186
statement = text(sql)
1182-
binds = []
1187+
binds: List[BindParameter] = []
11831188
for key, _ in args.items():
11841189
expand_binding = key.endswith("s")
11851190
binds.append(bindparam(key, expanding=expand_binding))

lib/galaxy/objectstore/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ def to_dict(self) -> Dict[str, Any]:
403403
raise NotImplementedError()
404404

405405
@abc.abstractmethod
406-
def get_quota_source_map(self):
406+
def get_quota_source_map(self) -> "QuotaSourceMap":
407407
"""Return QuotaSourceMap describing mapping of object store IDs to quota sources."""
408408

409409
@abc.abstractmethod
@@ -715,7 +715,7 @@ def parse_badges_from_config_xml(clazz, badges_xml):
715715
badges.append({"type": type, "message": message})
716716
return badges
717717

718-
def get_quota_source_map(self):
718+
def get_quota_source_map(self) -> "QuotaSourceMap":
719719
# I'd rather keep this abstract... but register_singleton wants it to be instantiable...
720720
raise NotImplementedError()
721721

scripts/cleanup_datasets/pgcleanup.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,8 @@ def recalculate_disk_usage(self):
401401
statements = calculate_user_disk_usage_statements(user_id, quota_source_map)
402402

403403
for sql, args in statements:
404-
sql, _ = re.subn(r"\:([\w]+)", r"%(\1)s", sql)
404+
sql = sql.replace("%", "%%")
405+
sql = re.sub(r"\:([\w]+)", r"%(\1)s", sql)
405406
new_args = {}
406407
for key, val in args.items():
407408
if isinstance(val, list):

0 commit comments

Comments
 (0)