aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gn3/api/search.py5
-rw-r--r--gn3/auth/authentication/oauth2/endpoints/introspection.py4
-rw-r--r--gn3/auth/authentication/oauth2/endpoints/utilities.py4
-rw-r--r--gn3/auth/authentication/oauth2/grants/authorisation_code_grant.py2
-rw-r--r--gn3/auth/authentication/oauth2/models/oauth2token.py4
-rw-r--r--gn3/auth/db.py8
-rw-r--r--gn3/computations/partial_correlations.py7
-rw-r--r--gn3/db/case_attributes.py3
-rw-r--r--gn3/db_utils.py1
-rw-r--r--tests/integration/test_gemma.py2
-rw-r--r--tests/unit/auth/test_groups.py4
-rw-r--r--tests/unit/auth/test_privileges.py8
-rw-r--r--tests/unit/auth/test_resources.py20
-rw-r--r--tests/unit/auth/test_roles.py4
-rw-r--r--tests/unit/computations/test_partial_correlations.py2
-rw-r--r--tests/unit/db/test_case_attributes.py8
-rw-r--r--tests/unit/db/test_db.py1
-rw-r--r--tests/unit/test_heatmaps.py2
18 files changed, 48 insertions, 41 deletions
diff --git a/gn3/api/search.py b/gn3/api/search.py
index aa844ee..ada845d 100644
--- a/gn3/api/search.py
+++ b/gn3/api/search.py
@@ -147,12 +147,14 @@ def parse_position(spec: str) -> tuple[Maybe[int], Maybe[int]]:
point = apply_si_suffix(spec)
return Just(max(0, point - width)), Just(point + width)
+def to_megabases(val):
+ """Convert `val` to megabases."""
+ return str(Decimal(val)/10**6)
def parse_position_field(location_slot: int, query: bytes) -> xapian.Query:
"""Parse position and return a xapian query."""
start, end = parse_position(query.decode("utf-8"))
# TODO: Convert the xapian index to use bases instead of megabases.
- to_megabases = lambda x: str(Decimal(x)/10**6)
return (xapian.NumberRangeProcessor(location_slot)
(start.maybe("", to_megabases), end.maybe("", to_megabases))) # type: ignore
@@ -176,7 +178,6 @@ def parse_location_field(species_query: xapian.Query,
def make_query(interval: ChromosomalInterval) -> xapian.Query:
# TODO: Convert the xapian index to use bases instead of megabases.
- to_megabases = lambda x: str(Decimal(x)/10**6)
return combine_queries(xapian.Query.OP_AND,
species_query,
xapian.Query(chromosome_prefix + interval.chromosome),
diff --git a/gn3/auth/authentication/oauth2/endpoints/introspection.py b/gn3/auth/authentication/oauth2/endpoints/introspection.py
index a567363..29ade6a 100644
--- a/gn3/auth/authentication/oauth2/endpoints/introspection.py
+++ b/gn3/auth/authentication/oauth2/endpoints/introspection.py
@@ -24,7 +24,7 @@ class IntrospectionEndpoint(_IntrospectionEndpoint):
"""Query the token."""
return _query_token(self, token_string, token_type_hint)
- def introspect_token(self, token: OAuth2Token) -> dict:# pylint: disable=[no-self-use]
+ def introspect_token(self, token: OAuth2Token) -> dict:
"""Return the introspection information."""
url = urlparse(flask_request.url)
return {
@@ -43,6 +43,6 @@ class IntrospectionEndpoint(_IntrospectionEndpoint):
"jti": token.token_id
}
- def check_permission(self, token, client, request):# pylint: disable=[unused-argument, no-self-use]
+ def check_permission(self, token, client, request):# pylint: disable=[unused-argument]
"""Check that the client has permission to introspect token."""
return client.client_type == "internal"
diff --git a/gn3/auth/authentication/oauth2/endpoints/utilities.py b/gn3/auth/authentication/oauth2/endpoints/utilities.py
index 299f151..b85940d 100644
--- a/gn3/auth/authentication/oauth2/endpoints/utilities.py
+++ b/gn3/auth/authentication/oauth2/endpoints/utilities.py
@@ -12,7 +12,9 @@ def query_token(# pylint: disable=[unused-argument]
endpoint_object: Any, token_str: str, token_type_hint) -> Optional[
OAuth2Token]:
"""Retrieve the token from the database."""
- __identity__ = lambda val: val
+ def __identity__(val):
+ """Identity function."""
+ return val
token = Nothing
with db.connection(current_app.config["AUTH_DB"]) as conn:
if token_type_hint == "access_token":
diff --git a/gn3/auth/authentication/oauth2/grants/authorisation_code_grant.py b/gn3/auth/authentication/oauth2/grants/authorisation_code_grant.py
index f80d02e..fb8d436 100644
--- a/gn3/auth/authentication/oauth2/grants/authorisation_code_grant.py
+++ b/gn3/auth/authentication/oauth2/grants/authorisation_code_grant.py
@@ -41,7 +41,7 @@ class AuthorisationCodeGrant(grants.AuthorizationCodeGrant):
"""Retrieve the code from the database."""
return __query_authorization_code__(code, client)
- def delete_authorization_code(self, authorization_code):# pylint: disable=[no-self-use]
+ def delete_authorization_code(self, authorization_code):
"""Delete the authorisation code."""
with db.connection(app.config["AUTH_DB"]) as conn:
with db.cursor(conn) as cursor:
diff --git a/gn3/auth/authentication/oauth2/models/oauth2token.py b/gn3/auth/authentication/oauth2/models/oauth2token.py
index 72e20cc..981e730 100644
--- a/gn3/auth/authentication/oauth2/models/oauth2token.py
+++ b/gn3/auth/authentication/oauth2/models/oauth2token.py
@@ -51,7 +51,9 @@ class OAuth2Token(NamedTuple):
return self.revoked
def __token_from_resultset__(conn: db.DbConnection, rset) -> Maybe:
- __identity__ = lambda val: val
+ def __identity__(val):
+ """Identity function."""
+ return val
try:
the_user = user_by_id(conn, uuid.UUID(rset["user_id"]))
except NotFoundError as _nfe:
diff --git a/gn3/auth/db.py b/gn3/auth/db.py
index 2ba6619..97f3982 100644
--- a/gn3/auth/db.py
+++ b/gn3/auth/db.py
@@ -10,40 +10,32 @@ class DbConnection(Protocol):
"""Type annotation for a generic database connection object."""
def cursor(self) -> Any:
"""A cursor object"""
- ...
def commit(self) -> Any:
"""Commit the transaction."""
- ...
def rollback(self) -> Any:
"""Rollback the transaction."""
- ...
class DbCursor(Protocol):
"""Type annotation for a generic database cursor object."""
def execute(self, *args, **kwargs) -> Any:
"""Execute a single query"""
- ...
def executemany(self, *args, **kwargs) -> Any:
"""
Execute parameterized SQL statement sql against all parameter sequences
or mappings found in the sequence parameters.
"""
- ...
def fetchone(self, *args, **kwargs):
"""Fetch single result if present, or `None`."""
- ...
def fetchmany(self, *args, **kwargs):
"""Fetch many results if present or `None`."""
- ...
def fetchall(self, *args, **kwargs):
"""Fetch all results if present or `None`."""
- ...
@contextlib.contextmanager
def connection(db_path: str, row_factory: Callable = sqlite3.Row) -> Iterator[DbConnection]:
diff --git a/gn3/computations/partial_correlations.py b/gn3/computations/partial_correlations.py
index 9f02ad2..192ad7f 100644
--- a/gn3/computations/partial_correlations.py
+++ b/gn3/computations/partial_correlations.py
@@ -421,9 +421,8 @@ def literature_correlation_by_list(
`web.webqtl.correlation.CorrelationPage.getLiteratureCorrelationByList`
function in GeneNetwork1.
"""
- if any((lambda t: (
- bool(t.get("tissue_corr")) and
- bool(t.get("tissue_p_value"))))(trait)
+ if any((bool(trait.get("tissue_corr")) and
+ bool(trait.get("tissue_p_value")))
for trait in trait_list):
temporary_table_name = f"LITERATURE{random_string(8)}"
query1 = (
@@ -491,7 +490,7 @@ def tissue_correlation_by_list(
"tissue_p_value": result["p-val"]
}
- if any((lambda t: bool(t.get("l_corr")))(trait) for trait in trait_list):
+ if any(bool((trait)) for trait in trait_list):
prim_trait_symbol_value_dict = fetch_gene_symbol_tissue_value_dict_for_trait(
(primary_trait_symbol,), tissue_probeset_freeze_id, conn)
if primary_trait_symbol.lower() in prim_trait_symbol_value_dict:
diff --git a/gn3/db/case_attributes.py b/gn3/db/case_attributes.py
index 1d82f00..0794c0b 100644
--- a/gn3/db/case_attributes.py
+++ b/gn3/db/case_attributes.py
@@ -90,7 +90,8 @@ def approve_case_attribute(conn: Any, case_attr_audit_id: int) -> int:
elif diff_data.get("Deletion"):
data = diff_data.get("Deletion")
cursor.execute(
- "DELETE FROM CaseAttribute " "WHERE Id = %s",
+ "DELETE FROM CaseAttribute "
+ "WHERE Id = %s",
(data.get("id"),),
)
# Modification
diff --git a/gn3/db_utils.py b/gn3/db_utils.py
index 7d6a445..8bf7be7 100644
--- a/gn3/db_utils.py
+++ b/gn3/db_utils.py
@@ -21,7 +21,6 @@ class Connection(Protocol):
"""Type Annotation for MySQLdb's connection object"""
def cursor(self, *args) -> Any:
"""A cursor in which queries may be performed"""
- ...
@contextlib.contextmanager
diff --git a/tests/integration/test_gemma.py b/tests/integration/test_gemma.py
index d8c07f4..79ddaca 100644
--- a/tests/integration/test_gemma.py
+++ b/tests/integration/test_gemma.py
@@ -382,7 +382,7 @@ class GemmaAPITest(unittest.TestCase):
"snps": "snpfile.txt",
}
mock_hash.return_value = "hash"
- response = self.app.post(("/api/gemma/k-gwa-compute/" "my-token"))
+ response = self.app.post(("/api/gemma/k-gwa-compute/my-token"))
mock_hash.assert_called_with([
('/tmp/cache/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/'
'genotype.txt'), '/tmp/my-token/phenofile.txt',
diff --git a/tests/unit/auth/test_groups.py b/tests/unit/auth/test_groups.py
index 4824e14..bd62405 100644
--- a/tests/unit/auth/test_groups.py
+++ b/tests/unit/auth/test_groups.py
@@ -19,7 +19,9 @@ create_group_failure = {
"message": "Unauthorised: Failed to create group."
}
-uuid_fn = lambda : UUID("d32611e3-07fc-4564-b56c-786c6db6de2b")
+def uuid_fn():
+ """Return a specific UUID"""
+ return UUID("d32611e3-07fc-4564-b56c-786c6db6de2b")
GROUP = Group(UUID("9988c21d-f02f-4d45-8966-22c968ac2fbf"), "TheTestGroup",
{"group_description": "The test group"})
diff --git a/tests/unit/auth/test_privileges.py b/tests/unit/auth/test_privileges.py
index 8395293..4894dfc 100644
--- a/tests/unit/auth/test_privileges.py
+++ b/tests/unit/auth/test_privileges.py
@@ -6,7 +6,9 @@ from gn3.auth.authorisation.privileges import Privilege, user_privileges
from tests.unit.auth import conftest
-SORT_KEY = lambda x: x.privilege_id
+def sort_key(priv):
+ """Return the key to sort by"""
+ return priv.privilege_id
PRIVILEGES = sorted(
(Privilege("system:group:create-group", "Create a group"),
@@ -29,7 +31,7 @@ PRIVILEGES = sorted(
Privilege("group:role:edit-role", "edit/update an existing role"),
Privilege("group:user:assign-role", "Assign a role to an existing user"),
Privilege("group:role:delete-role", "Delete an existing role")),
- key=SORT_KEY)
+ key=sort_key)
@pytest.mark.unit_test
@pytest.mark.parametrize(
@@ -43,4 +45,4 @@ def test_user_privileges(auth_testdb_path, fxtr_users, user, expected):# pylint:
"""
with db.connection(auth_testdb_path) as conn:
assert sorted(
- user_privileges(conn, user), key=SORT_KEY) == expected
+ user_privileges(conn, user), key=sort_key) == expected
diff --git a/tests/unit/auth/test_resources.py b/tests/unit/auth/test_resources.py
index 2884add..a16dcb1 100644
--- a/tests/unit/auth/test_resources.py
+++ b/tests/unit/auth/test_resources.py
@@ -21,7 +21,9 @@ create_resource_failure = {
"status": "error",
"message": "Unauthorised: Could not create resource"
}
-uuid_fn = lambda : uuid.UUID("d32611e3-07fc-4564-b56c-786c6db6de2b")
+def uuid_fn():
+ """UUID function for tests."""
+ return uuid.UUID("d32611e3-07fc-4564-b56c-786c6db6de2b")
@pytest.mark.unit_test
@pytest.mark.parametrize(
@@ -71,7 +73,9 @@ def test_create_resource_raises_for_unauthorised_users(
assert create_resource(
conn, "test_resource", resource_category, user, False) == expected
-SORTKEY = lambda resource: resource.resource_id
+def sort_key(resource):
+ """Return the sort key for resources."""
+ return resource.resource_id
@pytest.mark.unit_test
def test_public_resources(fxtr_resources):
@@ -81,12 +85,12 @@ def test_public_resources(fxtr_resources):
THEN: only list the resources that are public
"""
conn, _res = fxtr_resources
- assert sorted(public_resources(conn), key=SORTKEY) == sorted(tuple(
- res for res in conftest.TEST_RESOURCES if res.public), key=SORTKEY)
+ assert sorted(public_resources(conn), key=sort_key) == sorted(tuple(
+ res for res in conftest.TEST_RESOURCES if res.public), key=sort_key)
PUBLIC_RESOURCES = sorted(
{res.resource_id: res for res in conftest.TEST_RESOURCES_PUBLIC}.values(),
- key=SORTKEY)
+ key=sort_key)
@pytest.mark.unit_test
@pytest.mark.parametrize(
@@ -97,13 +101,13 @@ PUBLIC_RESOURCES = sorted(
{res.resource_id: res for res in
(conftest.TEST_RESOURCES_GROUP_01 +
conftest.TEST_RESOURCES_PUBLIC)}.values(),
- key=SORTKEY),
+ key=sort_key),
sorted(
{res.resource_id: res for res in
((conftest.TEST_RESOURCES_GROUP_01[1],) +
conftest.TEST_RESOURCES_PUBLIC)}.values()
,
- key=SORTKEY),
+ key=sort_key),
PUBLIC_RESOURCES, PUBLIC_RESOURCES))))
def test_user_resources(fxtr_group_user_roles, user, expected):
"""
@@ -114,4 +118,4 @@ def test_user_resources(fxtr_group_user_roles, user, expected):
conn, *_others = fxtr_group_user_roles
assert sorted(
{res.resource_id: res for res in user_resources(conn, user)
- }.values(), key=SORTKEY) == expected
+ }.values(), key=sort_key) == expected
diff --git a/tests/unit/auth/test_roles.py b/tests/unit/auth/test_roles.py
index 02fd9f7..3bb84a3 100644
--- a/tests/unit/auth/test_roles.py
+++ b/tests/unit/auth/test_roles.py
@@ -16,7 +16,9 @@ create_role_failure = {
"message": "Unauthorised: Could not create role"
}
-uuid_fn = lambda : uuid.UUID("d32611e3-07fc-4564-b56c-786c6db6de2b")
+def uuid_fn():
+ """UUID function for tests"""
+ return uuid.UUID("d32611e3-07fc-4564-b56c-786c6db6de2b")
PRIVILEGES = (
Privilege("group:resource:view-resource",
diff --git a/tests/unit/computations/test_partial_correlations.py b/tests/unit/computations/test_partial_correlations.py
index 20cd6bc..066c650 100644
--- a/tests/unit/computations/test_partial_correlations.py
+++ b/tests/unit/computations/test_partial_correlations.py
@@ -234,7 +234,7 @@ class TestPartialCorrelations(TestCase):
tissue_correlation(primary, target, method)
@pytest.mark.unit_test
- def test_tissue_correlation(self): # pylint: disable=R0201
+ def test_tissue_correlation(self):
"""
Test that the correct correlation values are computed for the given:
- primary trait
diff --git a/tests/unit/db/test_case_attributes.py b/tests/unit/db/test_case_attributes.py
index 175249b..596f78a 100644
--- a/tests/unit/db/test_case_attributes.py
+++ b/tests/unit/db/test_case_attributes.py
@@ -140,7 +140,7 @@ def test_approve_deleting_case_attribute(mocker: MockFixture) -> None:
"WHERE id = %s",
(3,),
),
- mocker.call("DELETE FROM CaseAttribute " "WHERE Id = %s", ("12",)),
+ mocker.call("DELETE FROM CaseAttribute WHERE Id = %s", ("12",)),
mocker.call(
"UPDATE caseattributes_audit SET "
"status = 'approved' WHERE id = %s",
@@ -183,14 +183,16 @@ def test_approve_modifying_case_attribute(mocker: MockFixture) -> None:
(3,),
),
mocker.call(
- "UPDATE CaseAttribute SET " "Description = %s WHERE Id = %s",
+ "UPDATE CaseAttribute SET "
+ "Description = %s WHERE Id = %s",
(
"Test",
"12",
),
),
mocker.call(
- "UPDATE CaseAttribute SET " "Name = %s WHERE Id = %s",
+ "UPDATE CaseAttribute SET "
+ "Name = %s WHERE Id = %s",
(
"Height (A)",
"12",
diff --git a/tests/unit/db/test_db.py b/tests/unit/db/test_db.py
index 8ac468c..2b4151c 100644
--- a/tests/unit/db/test_db.py
+++ b/tests/unit/db/test_db.py
@@ -103,7 +103,6 @@ class TestCrudMethods(TestCase):
(35, 'Rob'))
@pytest.mark.unit_test
- # pylint: disable=R0201
def test_probeset_called_with_right_columns(self):
"""Given a columns argument, test that the correct sql query is
constructed"""
diff --git a/tests/unit/test_heatmaps.py b/tests/unit/test_heatmaps.py
index 8781d6f..3d4fc78 100644
--- a/tests/unit/test_heatmaps.py
+++ b/tests/unit/test_heatmaps.py
@@ -29,7 +29,7 @@ class TestHeatmap(TestCase):
"""Class for testing heatmap computation functions"""
@pytest.mark.unit_test
- def test_cluster_traits(self): # pylint: disable=R0201
+ def test_cluster_traits(self):
"""
Test that the clustering is working as expected.
"""