about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2025-02-28 13:14:58 -0600
committerFrederick Muriuki Muriithi2025-02-28 13:14:58 -0600
commit82f1d0da007019d949a39408c45425e00b22aa34 (patch)
treeaa6ed8bba4336317621043a3e1e7edc30433c6bf
parentf3a6c0adc3e5cb78c1a663fc686f00853729b5d7 (diff)
downloadgenenetwork3-82f1d0da007019d949a39408c45425e00b22aa34.tar.gz
Fix issues caught by mypy.
-rw-r--r--gn3/api/search.py14
-rw-r--r--gn3/authentication.py8
-rw-r--r--gn3/computations/correlations.py7
-rw-r--r--gn3/jobs.py2
4 files changed, 20 insertions, 11 deletions
diff --git a/gn3/api/search.py b/gn3/api/search.py
index f696428..6aed2ad 100644
--- a/gn3/api/search.py
+++ b/gn3/api/search.py
@@ -6,7 +6,7 @@ import gzip
 import json
 from functools import partial, reduce
 from pathlib import Path
-from typing import Callable
+from typing import Union, Callable
 import urllib.parse
 
 from flask import abort, Blueprint, current_app, jsonify, request
@@ -65,7 +65,10 @@ def field_processor_or(*field_processors: FieldProcessorFunction) -> FieldProces
                               for field_processor in field_processors]))
 
 
-def liftover(chain_file: Path, position: ChromosomalPosition) -> Maybe[ChromosomalPosition]:
+def liftover(
+        chain_file: Union[str, Path],
+        position: ChromosomalPosition
+) -> Maybe[ChromosomalPosition]:
     """Liftover chromosomal position using chain file."""
     # The chain file format is described at
     # https://genome.ucsc.edu/goldenPath/help/chain.html
@@ -91,7 +94,10 @@ def liftover(chain_file: Path, position: ChromosomalPosition) -> Maybe[Chromosom
     return Nothing
 
 
-def liftover_interval(chain_file: str, interval: ChromosomalInterval) -> ChromosomalInterval:
+def liftover_interval(
+        chain_file: Union[str, Path],
+        interval: ChromosomalInterval
+) -> ChromosomalInterval:
     """
     Liftover interval using chain file.
 
@@ -258,7 +264,7 @@ def parse_query(synteny_files_directory: Path, query: str):
                             xapian.Query(species_prefix + lifted_species),
                             chromosome_prefix,
                             range_prefixes.index("position"),
-                            partial(liftover_interval,
+                            partial(liftover_interval,# type: ignore[arg-type]
                                     synteny_files_directory / chain_file)))
         queryparser.add_boolean_prefix(
             shorthand,
diff --git a/gn3/authentication.py b/gn3/authentication.py
index e7e4543..fac6ed9 100644
--- a/gn3/authentication.py
+++ b/gn3/authentication.py
@@ -61,7 +61,7 @@ def get_user_membership(conn: Redis, user_id: str,
 
     """
     results = {"member": False, "admin": False}
-    for key, value in conn.hgetall('groups').items():
+    for key, value in conn.hgetall('groups').items():# type: ignore[union-attr]
         if key == group_id:
             group_info = json.loads(value)
             if user_id in group_info.get("admins"):
@@ -114,7 +114,7 @@ def get_groups_by_user_uid(user_uid: str, conn: Redis) -> Dict:
     """
     admin = []
     member = []
-    for group_uuid, group_info in conn.hgetall("groups").items():
+    for group_uuid, group_info in conn.hgetall("groups").items():# type: ignore[union-attr]
         group_info = json.loads(group_info)
         group_info["uuid"] = group_uuid
         if user_uid in group_info.get('admins'):
@@ -131,14 +131,14 @@ def get_user_info_by_key(key: str, value: str,
                          conn: Redis) -> Optional[Dict]:
     """Given a key, get a user's information if value is matched"""
     if key != "user_id":
-        for user_uuid, user_info in conn.hgetall("users").items():
+        for user_uuid, user_info in conn.hgetall("users").items():# type: ignore[union-attr]
             user_info = json.loads(user_info)
             if (key in user_info and user_info.get(key) == value):
                 user_info["user_id"] = user_uuid
                 return user_info
     elif key == "user_id":
         if user_info := conn.hget("users", value):
-            user_info = json.loads(user_info)
+            user_info = json.loads(user_info)# type: ignore[arg-type]
             user_info["user_id"] = value
             return user_info
     return None
diff --git a/gn3/computations/correlations.py b/gn3/computations/correlations.py
index e5934b6..95bd957 100644
--- a/gn3/computations/correlations.py
+++ b/gn3/computations/correlations.py
@@ -6,6 +6,7 @@ from multiprocessing import Pool, cpu_count
 
 from typing import List
 from typing import Tuple
+from typing import Sequence
 from typing import Optional
 from typing import Callable
 from typing import Generator
@@ -52,8 +53,10 @@ def normalize_values(a_values: List, b_values: List) -> Generator:
             yield a_val, b_val
 
 
-def compute_corr_coeff_p_value(primary_values: List, target_values: List,
-                               corr_method: str) -> Tuple[float, float]:
+def compute_corr_coeff_p_value(
+        primary_values: Sequence,
+        target_values: Sequence,
+        corr_method: str) -> Tuple[float, float]:
     """Given array like inputs calculate the primary and target_value methods ->
 pearson,spearman and biweight mid correlation return value is rho and p_value
 
diff --git a/gn3/jobs.py b/gn3/jobs.py
index 1af63f7..898517c 100644
--- a/gn3/jobs.py
+++ b/gn3/jobs.py
@@ -24,7 +24,7 @@ def job(redisconn: Redis, job_id: UUID) -> Either:
     if the_job:
         return Right({
             key: json.loads(value, object_hook=jed.custom_json_decoder)
-            for key, value in the_job.items()
+            for key, value in the_job.items()# type: ignore[union-attr]
         })
     return Left({
         "error": "NotFound",