From e47d0976d6f44a52901537c6304a73485f9b32e8 Mon Sep 17 00:00:00 2001 From: Yannick de Jong Date: Thu, 26 Mar 2026 16:22:01 +0100 Subject: [PATCH 1/2] Pin ruff an ty version --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6f728cf..a8ce59d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -166,7 +166,7 @@ testpaths = [ dev = [ "pytest>=8.3.5", "pytest-cov>=5.0.0", - "ruff>=0.15.0", - "ty>=0.0.13", + "ruff==0.15.7", + "ty==0.0.25", "imas-simdb[server, imas-validator, postgres, auth]" ] From 61f36393286f0a37400618c65a6b6a396392fdd8 Mon Sep 17 00:00:00 2001 From: Yannick de Jong Date: Thu, 26 Mar 2026 16:22:10 +0100 Subject: [PATCH 2/2] Fix ty issues --- src/simdb/cli/remote_api.py | 2 +- src/simdb/database/database.py | 8 ++++---- src/simdb/database/models/simulation.py | 6 +++--- src/simdb/imas/metadata.py | 4 ++-- src/simdb/remote/apis/metadata.py | 4 ++-- src/simdb/remote/apis/v1_2/simulations.py | 6 +++--- src/simdb/validation/validator.py | 4 ++-- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/simdb/cli/remote_api.py b/src/simdb/cli/remote_api.py index a131c73..1b97eb0 100644 --- a/src/simdb/cli/remote_api.py +++ b/src/simdb/cli/remote_api.py @@ -668,7 +668,7 @@ def _push_file( path: Path, uuid: uuid.UUID, file_type: str, - sim_data: Dict, + sim_data: Dict[str, Any], chunk_size: int, out_stream: IO, type: DataObject.Type, diff --git a/src/simdb/database/database.py b/src/simdb/database/database.py index ff3ea9c..d18fa72 100644 --- a/src/simdb/database/database.py +++ b/src/simdb/database/database.py @@ -316,7 +316,7 @@ def list_simulation_data( for name in meta_keys: if name in ("alias", "uuid"): continue - names_filters.append(m_b.c.element.ilike(name)) # type: ignore[union-attr] + names_filters.append(m_b.c.element.ilike(name)) # type: ignore if names_filters: query = query.filter(or_(*names_filters)) @@ -533,11 +533,11 @@ def query_meta_data( query = ( self.session.query(s_b, m_b) .outerjoin(Simulation.meta) - .filter(s_b.c.id.in_(sim_ids)) # type: ignore[union-attr] + .filter(s_b.c.id.in_(sim_ids)) # type: ignore ) - query = query.filter(m_b.c.element.in_(meta_keys)) # type: ignore[union-attr] + query = query.filter(m_b.c.element.in_(meta_keys)) # type: ignore else: - query = self.session.query(s_b).filter(s_b.c.id.in_(sim_ids)) # type: ignore[union-attr] + query = self.session.query(s_b).filter(s_b.c.id.in_(sim_ids)) # type: ignore if sort_query is not None: query = query.join(sort_query, Simulation.id == sort_query.c.id).order_by( diff --git a/src/simdb/database/models/simulation.py b/src/simdb/database/models/simulation.py index e0261ab..f347d66 100644 --- a/src/simdb/database/models/simulation.py +++ b/src/simdb/database/models/simulation.py @@ -28,7 +28,7 @@ # Patch to allow sphix doc generation from sqlalchemy.sql.elements import ClauseElement - ClauseElement.__bool__ = lambda self: True # type: ignore[invalid-assignment] + ClauseElement.__bool__ = lambda self: True # type: ignore import re @@ -357,8 +357,8 @@ def from_data_model(cls, data: SimulationData) -> "Simulation": def data( self, recurse: bool = False, meta_keys: Optional[List[str]] = None - ) -> Dict[str, Union[str, List]]: - data = { + ) -> Dict[str, Any]: + data: Dict[str, Any] = { "uuid": self.uuid, "alias": self.alias, "datetime": self.datetime.isoformat(), diff --git a/src/simdb/imas/metadata.py b/src/simdb/imas/metadata.py index 09c492b..b6cd38a 100644 --- a/src/simdb/imas/metadata.py +++ b/src/simdb/imas/metadata.py @@ -128,8 +128,8 @@ def load_imas_metadata(ids_dist, entry) -> dict: raise ValueError("Could not determine the latest DD version.") ids = imas.convert_ids(ids, latest_dd_version) for node in imas.util.tree_iter(ids): - metadata[extract_ids_path(str(node.coordinates)).replace("/", ".")] = ( # type: ignore[unresolved-attribute] - node.value # type: ignore[unresolved-attribute] + metadata[extract_ids_path(str(node.coordinates)).replace("/", ".")] = ( # type: ignore + node.value # type: ignore ) return metadata diff --git a/src/simdb/remote/apis/metadata.py b/src/simdb/remote/apis/metadata.py index dc47cf4..ed59394 100644 --- a/src/simdb/remote/apis/metadata.py +++ b/src/simdb/remote/apis/metadata.py @@ -10,7 +10,7 @@ @api.route("/metadata") class MetaData(Resource): - @cache.cached(key_prefix=cache_key) # type: ignore[invalid-argument-type] + @cache.cached(key_prefix=cache_key) # type: ignore @pydantic_validate(api) def get(self) -> MetadataKeyInfoList: return MetadataKeyInfoList.model_validate(current_app.db.list_metadata_keys()) @@ -18,7 +18,7 @@ def get(self) -> MetadataKeyInfoList: @api.route("/metadata/") class MetaDataValues(Resource): - @cache.cached(key_prefix=cache_key) # type: ignore[invalid-argument-type] + @cache.cached(key_prefix=cache_key) # type: ignore @pydantic_validate(api) def get(self, name: str) -> MetadataValueList: return MetadataValueList.model_validate( diff --git a/src/simdb/remote/apis/v1_2/simulations.py b/src/simdb/remote/apis/v1_2/simulations.py index 76f9bf5..eb39cc0 100644 --- a/src/simdb/remote/apis/v1_2/simulations.py +++ b/src/simdb/remote/apis/v1_2/simulations.py @@ -339,7 +339,7 @@ def post( @api.route("/simulation/") class Simulation(Resource): @requires_auth() - @cache.cached(key_prefix=cache_key) # type: ignore[invalid-argument-type] + @cache.cached(key_prefix=cache_key) # type: ignore @pydantic_validate(api) def get(self, sim_id: str, user: User) -> SimulationDataResponse: try: @@ -400,7 +400,7 @@ def delete(self, sim_id: str, user: User) -> SimulationDeleteResponse: @api.route("/simulation/metadata/") class SimulationMeta(Resource): @requires_auth() - @cache.cached(key_prefix=cache_key) # type: ignore[invalid-argument-type] + @cache.cached(key_prefix=cache_key) # type: ignore @pydantic_validate(api) def get(self, sim_id: str, user: User) -> MetadataDataList: simulation = current_app.db.get_simulation(sim_id) @@ -469,7 +469,7 @@ def post(self, sim_id, user: User) -> ValidationResult: @api.route("/trace/") class SimulationTrace(Resource): @requires_auth() - @cache.cached(key_prefix=cache_key) # type: ignore[invalid-argument-type] + @cache.cached(key_prefix=cache_key) # type: ignore @pydantic_validate(api) def get(self, sim_id: str, user: User) -> SimulationTraceData: return _build_trace(sim_id) diff --git a/src/simdb/validation/validator.py b/src/simdb/validation/validator.py index 629344b..8433360 100644 --- a/src/simdb/validation/validator.py +++ b/src/simdb/validation/validator.py @@ -22,8 +22,8 @@ class ValidationError(Exception): pass -class CustomValidator(cerberus.Validator): # type: ignore[misc] - types_mapping = cerberus.Validator.types_mapping.copy() # type: ignore[attr-defined] +class CustomValidator(cerberus.Validator): # type: ignore + types_mapping = cerberus.Validator.types_mapping.copy() # type: ignore types_mapping["numpy"] = cerberus.TypeDefinition("numpy", (np.ndarray,), ()) def _validate_exists(self, check_exists, field, value):