Skip to content

Commit 3c9e30b

Browse files
authored
chore: clean up some type annotations (#183)
1 parent 350b2b7 commit 3c9e30b

File tree

3 files changed

+30
-25
lines changed

3 files changed

+30
-25
lines changed

cool_seq_tool/app.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""Module for initializing data sources."""
22
from datetime import datetime
3-
from typing import Optional, Union, List, Tuple, Dict
3+
from typing import Optional, TypeVar, Union, List, Tuple, Dict
44
from pathlib import Path
55
import logging
66

@@ -20,6 +20,10 @@
2020

2121
logger = logging.getLogger("cool_seq_tool")
2222

23+
CoordinatesResponseType = TypeVar(
24+
"CoordinatesResponseType", GenomicDataResponse, TranscriptExonDataResponse
25+
)
26+
2327

2428
class CoolSeqTool:
2529
"""Class to initialize data sources."""
@@ -81,8 +85,8 @@ def service_meta() -> ServiceMeta:
8185

8286
@staticmethod
8387
def _return_warnings(
84-
resp: Union[GenomicDataResponse, TranscriptExonDataResponse],
85-
warning_msg: str) -> Union[GenomicDataResponse, TranscriptExonDataResponse]:
88+
resp: CoordinatesResponseType,
89+
warning_msg: str) -> CoordinatesResponseType:
8690
"""Add warnings to response object
8791
8892
:param Union[GenomicDataResponse, TranscriptExonDataResponse] resp:
@@ -97,18 +101,18 @@ def _return_warnings(
97101

98102
async def transcript_to_genomic_coordinates(
99103
self, gene: Optional[str] = None, transcript: Optional[str] = None,
100-
exon_start: Optional[int] = None, exon_start_offset: Optional[int] = 0, # noqa: E501
101-
exon_end: Optional[int] = None, exon_end_offset: Optional[int] = 0,
104+
exon_start: Optional[int] = None, exon_start_offset: int = 0, # noqa: E501
105+
exon_end: Optional[int] = None, exon_end_offset: int = 0,
102106
**kwargs) -> GenomicDataResponse:
103107
"""Get genomic data given transcript data.
104108
Will use GRCh38 coordinates if possible
105109
106-
:param Optional[str] gene: Gene symbol
107-
:param Optional[str] transcript: Transcript accession
108-
:param Optional[int] exon_start: Starting transcript exon number
109-
:param Optional[int] exon_end: Ending transcript exon number
110-
:param Optional[int] exon_start_offset: Starting exon offset
111-
:param Optional[int] exon_end_offset: Ending exon offset
110+
:param gene: Gene symbol
111+
:param transcript: Transcript accession
112+
:param exon_start: Starting transcript exon number
113+
:param exon_end: Ending transcript exon number
114+
:param exon_start_offset: Starting exon offset
115+
:param exon_end_offset: Ending exon offset
112116
:return: GRCh38 genomic data (inter-residue coordinates)
113117
"""
114118
resp = GenomicDataResponse(
@@ -138,18 +142,18 @@ async def transcript_to_genomic_coordinates(
138142

139143
tx_exons, warning = await self.uta_db.get_tx_exons(transcript)
140144
if not tx_exons:
141-
return self._return_warnings(resp, warning)
145+
return self._return_warnings(resp, warning or "")
142146

143147
tx_exon_coords, warning = self.uta_db.get_tx_exon_coords(
144148
transcript, tx_exons, exon_start, exon_end)
145149
if not tx_exon_coords:
146-
return self._return_warnings(resp, warning)
150+
return self._return_warnings(resp, warning or "")
147151
tx_exon_start, tx_exon_end = tx_exon_coords
148152

149153
alt_ac_start_end, warning = await self.uta_db.get_alt_ac_start_and_end(
150154
transcript, tx_exon_start, tx_exon_end, gene=gene)
151155
if not alt_ac_start_end:
152-
return self._return_warnings(resp, warning)
156+
return self._return_warnings(resp, warning or "")
153157
alt_ac_start, alt_ac_end = alt_ac_start_end
154158

155159
gene = alt_ac_start[0] if alt_ac_start else alt_ac_end[0]

cool_seq_tool/data_sources/uta_database.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -318,8 +318,8 @@ async def get_tx_exons(
318318

319319
@staticmethod
320320
def _validate_exon(
321-
transcript: str, tx_exons: List[str],
322-
exon_number: Optional[int] = None) -> Tuple[Optional[List], Optional[str]]: # noqa: E501
321+
transcript: str, tx_exons: List[Tuple[int, int]],
322+
exon_number: int) -> Tuple[Optional[Tuple[int, int]], Optional[str]]:
323323
"""Validate that exon number is valid
324324
325325
:param str transcript: Transcript accession
@@ -337,15 +337,15 @@ def _validate_exon(
337337
return exon, None
338338

339339
def get_tx_exon_coords(
340-
self, transcript: str, tx_exons: List[str],
340+
self, transcript: str, tx_exons: List[Tuple[int, int]],
341341
exon_start: Optional[int] = None,
342-
exon_end: Optional[int] = None) -> Tuple[Optional[Tuple[List, List]], Optional[str]]: # noqa: E501
342+
exon_end: Optional[int] = None) -> Tuple[Optional[Tuple[Optional[Tuple[int, int]], Optional[Tuple[int, int]]]], Optional[str]]: # noqa: E501
343343
"""Get transcript exon coordinates
344344
345-
:param str transcript: Transcript accession
346-
:param List tx_exons: List of transcript exons
347-
:param Optional[int] exon_start: Start exon number
348-
:param Optional[int] exon_end: End exon number
345+
:param transcript: Transcript accession
346+
:param tx_exons: List of transcript exons
347+
:param exon_start: Start exon number
348+
:param exon_end: End exon number
349349
:return: [Transcript start exon coords, Transcript end exon coords],
350350
and warnings if found
351351
"""
@@ -369,7 +369,8 @@ def get_tx_exon_coords(
369369
async def get_alt_ac_start_and_end(
370370
self, tx_ac: str, tx_exon_start: Optional[List[str]] = None,
371371
tx_exon_end: Optional[List[str]] = None,
372-
gene: str = None) -> Tuple[Optional[Tuple[Tuple, Tuple]], Optional[str]]: # noqa: E501
372+
gene: Optional[str] = None
373+
) -> Tuple[Optional[Tuple[Tuple, Tuple]], Optional[str]]: # noqa: E501
373374
"""Get genomic coordinates for related transcript exon start and end.
374375
375376
:param str tx_ac: Transcript accession

cool_seq_tool/schemas.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ class TranscriptExonDataResponse(BaseModelForbidExtra):
274274
"""Response model for Transcript Exon Data"""
275275

276276
transcript_exon_data: Optional[TranscriptExonData] = None
277-
warnings: Optional[List[StrictStr]] = []
277+
warnings: List[StrictStr] = []
278278
service_meta: ServiceMeta
279279

280280
class Config(BaseModelForbidExtra.Config):
@@ -312,7 +312,7 @@ class GenomicDataResponse(BaseModelForbidExtra):
312312
"""Response model for Genomic Data"""
313313

314314
genomic_data: Optional[GenomicData] = None
315-
warnings: Optional[List[StrictStr]] = []
315+
warnings: List[StrictStr] = []
316316
service_meta: ServiceMeta
317317

318318
class Config(BaseModelForbidExtra.Config):

0 commit comments

Comments
 (0)