diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index dc506e5d2d..aa1e633d5a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ --- repos: - repo: https://github.com/psf/black-pre-commit-mirror - rev: 25.12.0 + rev: 26.1.0 hooks: - id: black args: [--target-version=py35] diff --git a/omeroweb/api/api_marshal.py b/omeroweb/api/api_marshal.py index 0c43324888..74ef4ff7e4 100644 --- a/omeroweb/api/api_marshal.py +++ b/omeroweb/api/api_marshal.py @@ -19,7 +19,6 @@ """Helper functions for views that handle object trees.""" - from omero_marshal import get_encoder diff --git a/omeroweb/api/api_query.py b/omeroweb/api/api_query.py index 05154dbc2a..9486db0ad5 100644 --- a/omeroweb/api/api_query.py +++ b/omeroweb/api/api_query.py @@ -19,7 +19,6 @@ """Helper functions for views that handle object trees.""" - from omero.rtypes import unwrap, wrap, rlong from omero.sys import ParametersI from . import api_settings @@ -27,7 +26,6 @@ from .api_marshal import marshal_objects from copy import deepcopy - MAX_LIMIT = max(1, api_settings.API_MAX_LIMIT) DEFAULT_LIMIT = max(1, api_settings.API_LIMIT) diff --git a/omeroweb/api/decorators.py b/omeroweb/api/decorators.py index e27a92789f..3c9138f636 100644 --- a/omeroweb/api/decorators.py +++ b/omeroweb/api/decorators.py @@ -35,7 +35,6 @@ NotFoundError, ) - logger = logging.getLogger(__name__) diff --git a/omeroweb/testlib/__init__.py b/omeroweb/testlib/__init__.py index 6f962a31bd..4ce9c36b5d 100644 --- a/omeroweb/testlib/__init__.py +++ b/omeroweb/testlib/__init__.py @@ -20,6 +20,7 @@ """ Library for Web integration tests """ + import json import warnings diff --git a/omeroweb/urls.py b/omeroweb/urls.py index 4f74fb62fa..809eedc5de 100755 --- a/omeroweb/urls.py +++ b/omeroweb/urls.py @@ -104,13 +104,10 @@ def redirect_urlpatterns(): regex = "^%s/" % label urlpatterns.append(re_path(regex, include(urlmodule))) except ImportError: - print( - """Failed to import %s + print("""Failed to import %s Please check if the app is installed and the versions of the app and OMERO.web are compatible - """ - % urlmodule - ) + """ % urlmodule) raise else: logger.debug("Module not found: %s" % urlmodule) diff --git a/omeroweb/utils.py b/omeroweb/utils.py index 7145ffea33..6034d96329 100644 --- a/omeroweb/utils.py +++ b/omeroweb/utils.py @@ -27,7 +27,6 @@ from django.urls import reverse from django.urls import NoReverseMatch - logger = logging.getLogger(__name__) diff --git a/omeroweb/webadmin/custom_forms.py b/omeroweb/webadmin/custom_forms.py index 4d817bb665..7aa44040cd 100644 --- a/omeroweb/webadmin/custom_forms.py +++ b/omeroweb/webadmin/custom_forms.py @@ -34,7 +34,6 @@ from django.utils.encoding import smart_str from django.core.validators import validate_email, EMPTY_VALUES - ################################################################## # Fields diff --git a/omeroweb/webclient/show.py b/omeroweb/webclient/show.py index 2929f1d703..fd8d666ed1 100644 --- a/omeroweb/webclient/show.py +++ b/omeroweb/webclient/show.py @@ -970,9 +970,7 @@ def paths_to_tag(conn, experimenter_id=None, tagset_id=None, tag_id=None): left outer join tagset.annotationLinks ttlink left outer join ttlink.child.details.owner towner where %s - """ % " and ".join( - where_clause - ) + """ % " and ".join(where_clause) tagsets = qs.projection(q, params, service_opts) for e in tagsets: @@ -1004,9 +1002,7 @@ def paths_to_tag(conn, experimenter_id=None, tagset_id=None, tag_id=None): from TagAnnotation tag left outer join tag.details.owner towner where %s - """ % " and ".join( - where_clause - ) + """ % " and ".join(where_clause) tagsets = qs.projection(q, params, service_opts) for e in tagsets: diff --git a/omeroweb/webclient/tree.py b/omeroweb/webclient/tree.py index 83350a3d8b..3e658a40a2 100644 --- a/omeroweb/webclient/tree.py +++ b/omeroweb/webclient/tree.py @@ -238,9 +238,7 @@ def marshal_experimenters(conn, group_id=-1, page=1, limit=settings.PAGE): experimenter.email from Experimenter experimenter %s order by lower(experimenter.omeName), experimenter.id - """ % ( - where_clause - ) + """ % (where_clause) for e in qs.projection(q, params, service_opts): experimenters.append(_marshal_experimenter(conn, e[0:5])) return experimenters @@ -364,9 +362,7 @@ def marshal_projects( from Project project %s order by lower(project.name), project.id - """ % ( - where_clause - ) + """ % (where_clause) for e in qs.projection(q, params, service_opts): e = unwrap(e) @@ -476,21 +472,17 @@ def marshal_datasets( # If this is a query to get datasets with no parent project elif orphaned: - where_clause.append( - """ + where_clause.append(""" not exists ( select pdlink from ProjectDatasetLink as pdlink where pdlink.child = dataset.id ) - """ - ) + """) q += """ %s order by lower(dataset.name), dataset.id - """ % build_clause( - where_clause, "where", "and" - ) + """ % build_clause(where_clause, "where", "and") for e in qs.projection(q, params, service_opts): e = unwrap(e) @@ -720,17 +712,14 @@ def marshal_images( image.acquisitionDate as acqDate """ - q = ( - """ + q = """ select new map(image.id as id, image.archived as archived, image.name as name, image.details.owner.id as ownerId, image as image_details_permissions, image.fileset.id as filesetId %s) - """ - % extraValues - ) + """ % extraValues from_join_clauses.append("Image image") @@ -768,14 +757,12 @@ def marshal_images( # Also discount any images which are part of a screen. No need to # take owner into account on this because we don't want them in # orphans either way - where_clause.append( - """ + where_clause.append(""" not exists ( select ws from WellSample ws where ws.image.id = image.id ) - """ - ) + """) # If this is a query to get images in a share if share_id is not None: @@ -916,8 +903,7 @@ def marshal_screens(conn, group_id=-1, experimenter_id=-1, page=1, limit=setting params.addId(experimenter_id) where_clause = "where screen.details.owner.id = :id" qs = conn.getQueryService() - q = ( - """ + q = """ select new map(screen.id as id, screen.name as name, screen.details.owner.id as ownerId, @@ -927,9 +913,7 @@ def marshal_screens(conn, group_id=-1, experimenter_id=-1, page=1, limit=setting from Screen screen %s order by lower(screen.name), screen.id - """ - % where_clause - ) + """ % where_clause for e in qs.projection(q, params, service_opts): e = unwrap(e) @@ -1040,21 +1024,17 @@ def marshal_plates( where_clause.append("slink.parent.id = :sid") # If this is a query to get plates with no parent screens elif orphaned: - where_clause.append( - """ + where_clause.append(""" not exists ( select splink from ScreenPlateLink as splink where splink.child = plate.id ) - """ - ) + """) q += """ %s order by lower(plate.name), plate.id - """ % build_clause( - where_clause, "where", "and" - ) + """ % build_clause(where_clause, "where", "and") for e in qs.projection(q, params, service_opts): e = unwrap(e) @@ -1371,30 +1351,23 @@ def marshal_tags( # Orphaned tags are those not tagged by a 'tagset' if orphaned: - where_clause.append( - """ + where_clause.append(""" not exists ( select aalink from AnnotationAnnotationLink as aalink where aalink.child = tag.id and aalink.parent.ns = '%s' ) - """ - % omero.constants.metadata.NSINSIGHTTAGSET - ) + """ % omero.constants.metadata.NSINSIGHTTAGSET) # Restricted by the specified user if experimenter_id is not None and experimenter_id != -1: params.addId(experimenter_id) - where_clause.append( - """ + where_clause.append(""" tag.details.owner.id = :id - """ - ) + """) q += """ %s order by tag.id - """ % build_clause( - where_clause, "where", "and" - ) + """ % build_clause(where_clause, "where", "and") for e in qs.projection(q, params, service_opts): e = unwrap(e) @@ -1477,8 +1450,7 @@ def marshal_tagged( params.add("tid", rlong(tag_id)) # Projects - q = ( - """ + q = """ select distinct new map(obj.id as id, obj.name as name, lower(obj.name) as lowername, @@ -1490,9 +1462,7 @@ def marshal_tagged( join obj.annotationLinks alink where alink.child.id=:tid %s - """ - % common_clause - ) + """ % common_clause projects = [] for e in qs.projection(q, params, service_opts): @@ -1508,8 +1478,7 @@ def marshal_tagged( tagged["projects"] = projects # Datasets - q = ( - """ + q = """ select distinct new map(obj.id as id, obj.name as name, lower(obj.name) as lowername, @@ -1521,9 +1490,7 @@ def marshal_tagged( join obj.annotationLinks alink where alink.child.id=:tid %s - """ - % common_clause - ) + """ % common_clause datasets = [] for e in qs.projection(q, params, service_opts): @@ -1585,8 +1552,7 @@ def marshal_tagged( tagged["images"] = images # Screens - q = ( - """ + q = """ select distinct new map(obj.id as id, obj.name as name, lower(obj.name) as lowername, @@ -1598,9 +1564,7 @@ def marshal_tagged( join obj.annotationLinks alink where alink.child.id=:tid %s - """ - % common_clause - ) + """ % common_clause screens = [] for e in qs.projection(q, params, service_opts): @@ -1616,8 +1580,7 @@ def marshal_tagged( tagged["screens"] = screens # Plate - q = ( - """ + q = """ select distinct new map(obj.id as id, obj.name as name, lower(obj.name) as lowername, @@ -1629,9 +1592,7 @@ def marshal_tagged( join obj.annotationLinks alink where alink.child.id=:tid %s - """ - % common_clause - ) + """ % common_clause plates = [] for e in qs.projection(q, params, service_opts): @@ -1647,8 +1608,7 @@ def marshal_tagged( tagged["plates"] = plates # Plate Acquisitions - q = ( - """ + q = """ select distinct new map(obj.id as id, obj.name as name, lower(obj.name) as lowername, @@ -1660,9 +1620,7 @@ def marshal_tagged( join obj.annotationLinks alink where alink.child.id=:tid %s - """ - % common_clause - ) + """ % common_clause plate_acquisitions = [] for e in qs.projection(q, params, service_opts): @@ -1807,8 +1765,7 @@ def marshal_shares(conn, member_id=-1, owner_id=-1, page=1, limit=settings.PAGE) where_clause += " and mem.parent.owner.id=:owid " qs = conn.getQueryService() - q = ( - """ + q = """ select distinct mem.parent.id, mem.parent.active, extract(epoch from mem.parent.started) @@ -1819,9 +1776,7 @@ def marshal_shares(conn, member_id=-1, owner_id=-1, page=1, limit=settings.PAGE) where mem.parent.itemCount > 0 %s order by mem.parent.id - """ - % where_clause - ) + """ % where_clause for e in qs.projection(q, params, service_opts): shares.append(_marshal_share(conn, e[0:5])) @@ -1887,8 +1842,7 @@ def marshal_discussions(conn, member_id=-1, owner_id=-1, page=1, limit=settings. where_clause += " and mem.parent.owner.id=:owid " qs = conn.getQueryService() - q = ( - """ + q = """ select distinct mem.parent.id, mem.parent.active, extract(epoch from mem.parent.started) @@ -1899,9 +1853,7 @@ def marshal_discussions(conn, member_id=-1, owner_id=-1, page=1, limit=settings. where mem.parent.itemCount = 0 %s order by mem.parent.id - """ - % where_clause - ) + """ % where_clause for e in qs.projection(q, params, service_opts): discussions.append(_marshal_discussion(conn, e[0:4])) @@ -2054,10 +2006,8 @@ def marshal_annotations( where_clause.append("ch.class!=TagAnnotation") where_clause.append("ch.class!=FileAnnotation") where_clause.append("ch.class!=CommentAnnotation") - where_clause.append( - """(ch.ns=null or - ch.ns!='openmicroscopy.org/omero/insight/rating')""" - ) + where_clause.append("""(ch.ns=null or + ch.ns!='openmicroscopy.org/omero/insight/rating')""") if ns is not None: where_clause.append("ch.ns=:ns") diff --git a/omeroweb/webclient/views.py b/omeroweb/webclient/views.py index ffe1ffce17..2b869fe490 100755 --- a/omeroweb/webclient/views.py +++ b/omeroweb/webclient/views.py @@ -127,7 +127,6 @@ from . import tree - logger = logging.getLogger(__name__) logger.info("INIT '%s'" % os.getpid()) @@ -929,13 +928,10 @@ def get_object_links(conn, parent_type, parent_id, child_type, child_ids): qs = conn.getQueryService() # Need to fetch child and parent, otherwise # AnnotationAnnotationLink is not loaded - q = ( - """ + q = """ from %s olink join fetch olink.child join fetch olink.parent where olink.child.id in (:ids) - """ - % link_type - ) + """ % link_type if parent_id: params.add("pid", rlong(parent_id)) q += " and olink.parent.id = :pid" @@ -4566,8 +4562,7 @@ def getAllObjects( ) """ - q = ( - """ + q = """ select distinct dilink.parent.id from Image image left outer join image.datasetLinks dilink @@ -4577,9 +4572,7 @@ def getAllObjects( from DatasetImageLink dilink2 where dilink2.parent.id = dilink.parent.id and dilink2.child.id not in (:iids)) = 0 - """ - % exclude_datasets - ) + """ % exclude_datasets for e in qs.projection(q, params, conn.SERVICE_OPTS): if e: @@ -4599,8 +4592,7 @@ def getAllObjects( params.map["pids"] = rlist([rlong(x) for x in project_ids]) exclude_projects = "and pdlink.parent.id not in (:pids)" - q = ( - """ + q = """ select distinct pdlink.parent.id from ProjectDatasetLink pdlink where pdlink.child.id in (:dids) @@ -4609,9 +4601,7 @@ def getAllObjects( from ProjectDatasetLink pdlink2 where pdlink2.parent.id = pdlink.parent.id and pdlink2.child.id not in (:dids)) = 0 - """ - % exclude_projects - ) + """ % exclude_projects for e in qs.projection(q, params, conn.SERVICE_OPTS): extra_project_ids.add(e[0].val) diff --git a/omeroweb/webclient/webclient_gateway.py b/omeroweb/webclient/webclient_gateway.py index 1bed0cc271..1d39b6e021 100644 --- a/omeroweb/webclient/webclient_gateway.py +++ b/omeroweb/webclient/webclient_gateway.py @@ -60,7 +60,6 @@ from hashlib import sha1 as hash_sha1 from PIL import Image - NSEXPERIMENTERPHOTO = omero.constants.namespaces.NSEXPERIMENTERPHOTO logger = logging.getLogger(__name__) diff --git a/omeroweb/webgateway/plategrid.py b/omeroweb/webgateway/plategrid.py index 3519a0907b..47b768a720 100644 --- a/omeroweb/webgateway/plategrid.py +++ b/omeroweb/webgateway/plategrid.py @@ -15,7 +15,6 @@ import omero.sys from omero.rtypes import rint, rlong - logger = logging.getLogger(__name__) diff --git a/omeroweb/webgateway/urls.py b/omeroweb/webgateway/urls.py index 0abc0cdbe3..362b88bb21 100644 --- a/omeroweb/webgateway/urls.py +++ b/omeroweb/webgateway/urls.py @@ -16,7 +16,6 @@ from django.urls import re_path from omeroweb.webgateway import views - COMPACT_JSON = {"_json_dumps_params": {"separators": (",", ":")}} diff --git a/omeroweb/webgateway/views.py b/omeroweb/webgateway/views.py index 3ea2128991..aa1344059b 100644 --- a/omeroweb/webgateway/views.py +++ b/omeroweb/webgateway/views.py @@ -71,7 +71,6 @@ import glob - # from models import StoredConnection from omeroweb.webgateway.webgateway_tempfile import webgateway_tempfile @@ -90,7 +89,6 @@ from PIL import Image, ImageDraw import numpy - logger = logging.getLogger(__name__) @@ -1029,11 +1027,8 @@ def render_image_region(request, iid, z, t, conn=None, **kwargs): else: level = levels - v if level < 0: - msg = ( - "Invalid resolution level, \ - %s > number of available levels %s " - % (v, levels) - ) + msg = "Invalid resolution level, \ + %s > number of available levels %s " % (v, levels) logger.debug(msg, exc_info=True) return HttpResponseBadRequest(msg) x = int(zxyt[1]) * w @@ -3005,9 +3000,7 @@ def _bulk_file_annotations(request, objtype, objid, conn=None, **kwargs): join fetch links.details.owner join fetch links.details.creationEvent where obj%d.id=:id and - (f.ns=:ns or f.file.mimetype=:mt)""" % ( - len(objtype) - 1 - ) + (f.ns=:ns or f.file.mimetype=:mt)""" % (len(objtype) - 1) ctx = conn.createServiceOptsDict() ctx.setOmeroGroup("-1") diff --git a/omeroweb/webgateway/webgateway_tempfile.py b/omeroweb/webgateway/webgateway_tempfile.py index 4648856cac..0964fa7cbc 100644 --- a/omeroweb/webgateway/webgateway_tempfile.py +++ b/omeroweb/webgateway/webgateway_tempfile.py @@ -20,7 +20,6 @@ from io import open from django.conf import settings - TMPROOT = getattr(settings, "WEBGATEWAY_TMPROOT", None) TMPDIR_TIME = 3600 * 12 # 12 hours diff --git a/omeroweb/wsgi.py b/omeroweb/wsgi.py index 3b64c1db35..38a3fedb3b 100644 --- a/omeroweb/wsgi.py +++ b/omeroweb/wsgi.py @@ -20,13 +20,13 @@ framework. """ + import os import sys from django.core.wsgi import get_wsgi_application - # OMERO.web is set up with the "omeroweb" package also on the PYTHONPATH sys.path.append(os.path.dirname(__file__)) diff --git a/test/unit/test_webgateway.py b/test/unit/test_webgateway.py index 9d29c06bff..6a90d8c7cf 100644 --- a/test/unit/test_webgateway.py +++ b/test/unit/test_webgateway.py @@ -130,22 +130,16 @@ def testColumnToPackedBits(self): assert data[1] == 24 # 00011000 11th and 12th bits def testGetInvertedEnabled(self): - mockRequest = { - "maps": '[{"inverted": {"enabled": "true"}},\ - {"inverted": {"enabled": "false"}}]' - } + mockRequest = {"maps": '[{"inverted": {"enabled": "true"}},\ + {"inverted": {"enabled": "false"}}]'} inverses = views._get_inverted_enabled(mockRequest, 3) assert inverses == [True, False, None] - mockRequest = { - "maps": '[{}, {"inverted": {"enabled": "true"}},\ - {"inverted": {"enabled": true}}]' - } + mockRequest = {"maps": '[{}, {"inverted": {"enabled": "true"}},\ + {"inverted": {"enabled": true}}]'} inverses = views._get_inverted_enabled(mockRequest, 3) assert inverses == [False, True, True] - mockRequest = { - "maps": '[{}, {"reverse": {"enabled": "true"}},\ - {"inverted": {"enabled": true}}]' - } + mockRequest = {"maps": '[{}, {"reverse": {"enabled": "true"}},\ + {"inverted": {"enabled": true}}]'} inverses = views._get_inverted_enabled(mockRequest, 3) assert inverses == [False, True, True]