Skip to content

Commit

Permalink
Throw an error in sequence_metadata getter if there's no URL
Browse files Browse the repository at this point in the history
If CladeTime doesn't have a value for url_sequence_metadata,
there's no point in proceeding.
  • Loading branch information
bsweger committed Oct 4, 2024
1 parent 9874b80 commit 41ea13b
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 5 deletions.
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ filterwarnings = [
"ignore::DeprecationWarning",
'ignore:polars found a filename',
]
testpaths = [
"tests",
]

[tool.ruff]
line-length = 120
Expand Down
10 changes: 10 additions & 0 deletions src/virus_clade_utils/_typing.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
"""Type aliases for this package."""

from pathlib import Path
from typing import TypeAlias, Union

from cloudpathlib import AnyPath, CloudPath

# Data types
# Pathlike: TypeAlias = Path | AnyPath | CloudPath
Pathlike: TypeAlias = Union["Path", "AnyPath", "CloudPath"]
4 changes: 2 additions & 2 deletions src/virus_clade_utils/cladetime.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import polars as pl
import structlog

from virus_clade_utils.exceptions import CladeTimeInvalidDateError
from virus_clade_utils.exceptions import CladeTimeInvalidDateError, CladeTimeInvalidURLError
from virus_clade_utils.util.config import Config
from virus_clade_utils.util.reference import _get_s3_object_url
from virus_clade_utils.util.sequence import _get_ncov_metadata, get_covid_genome_metadata
Expand Down Expand Up @@ -103,7 +103,7 @@ def sequence_metadata(self) -> pl.LazyFrame:
sequence_metadata = get_covid_genome_metadata(metadata_url=self.url_sequence_metadata)
return sequence_metadata
else:
sequence_metadata = pl.LazyFrame()
raise CladeTimeInvalidURLError("CladeTime is missing url_sequence_metadata")
return sequence_metadata

def __repr__(self):
Expand Down
4 changes: 4 additions & 0 deletions src/virus_clade_utils/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,7 @@ class Error(Exception):

class CladeTimeInvalidDateError(Error):
"""Raised when an invalid date string is passed to CladeTime."""


class CladeTimeInvalidURLError(Error):
"""Raised when CladeTime encounters an invalid URL."""
7 changes: 4 additions & 3 deletions tests/unit/test_cladetime.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import pytest
from freezegun import freeze_time
from virus_clade_utils.cladetime import CladeTime
from virus_clade_utils.exceptions import CladeTimeInvalidDateError
from virus_clade_utils.exceptions import CladeTimeInvalidDateError, CladeTimeInvalidURLError


def test_cladetime_no_args():
Expand Down Expand Up @@ -124,5 +124,6 @@ def test_cladetime_sequence_metadata_no_url(test_config):
with patch("virus_clade_utils.cladetime.CladeTime._get_config", mock):
ct = CladeTime()
ct.url_sequence_metadata = None
# if there's no metadata url, sequence metadata should be an empty LazyFrame
assert ct.sequence_metadata.collect().shape == (0, 0)

with pytest.raises(CladeTimeInvalidURLError):
ct.sequence_metadata

0 comments on commit 41ea13b

Please sign in to comment.