Skip to content

Commit

Permalink
Merge pull request #10 from jeff3071/enhancement/date-range-validation
Browse files Browse the repository at this point in the history
[Enhancement] Date range validation
  • Loading branch information
ss77995ss authored Oct 27, 2024
2 parents 8d864ee + 1a390c4 commit b8b8617
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 1 deletion.
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ git checkout -b my-new-feature

```bash
pip install venv
python -m venv venv
python -m venv .venv
source venv/bin/activate
```

Expand Down
4 changes: 4 additions & 0 deletions src/baseball_stats_python/statcast/minor_statcast_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
get_minor_season_param_str,
)
from ..utils.statcast import get_month_param_str
from ..utils.utils import validate_date_range

logging.basicConfig()
logger = logging.getLogger()
Expand Down Expand Up @@ -57,6 +58,9 @@ def minor_statcast_search(
if debug:
logger.setLevel(logging.DEBUG)

if start_dt or end_dt:
validate_date_range(start_dt, end_dt)

params = {
'all': 'true',
'player_type': player_type,
Expand Down
4 changes: 4 additions & 0 deletions src/baseball_stats_python/statcast/statcast_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
get_season_param_str,
get_team_param_str,
)
from ..utils.utils import validate_date_range

logging.basicConfig()
logger = logging.getLogger('Statcast')
Expand Down Expand Up @@ -55,6 +56,9 @@ def statcast_search(
if debug:
logger.setLevel(logging.DEBUG)

if start_dt or end_dt:
validate_date_range(start_dt, end_dt)

params = {
'all': 'true',
'player_type': player_type,
Expand Down
20 changes: 20 additions & 0 deletions src/baseball_stats_python/utils/utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
from datetime import datetime


def validate_date_format(dt: str) -> datetime:
date_format = '%Y-%m-%d'
try:
date = datetime.strptime(dt, date_format)
return date
except ValueError as e:
raise ValueError(e)


def validate_date_range(start_dt: str, end_dt: str) -> None:
if start_dt:
start_date = validate_date_format(start_dt)
if end_dt:
end_date = validate_date_format(end_dt)

if start_dt and end_dt and end_date < start_date:
raise ValueError('end_dt cannot be earlier than start_dt.')
31 changes: 31 additions & 0 deletions tests/utils/test_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from datetime import datetime

import pytest

from baseball_stats_python.utils.utils import validate_date_format, validate_date_range


def test_validate_date_format():
with pytest.raises(ValueError) as e:
validate_date_format('2024/07/01')
assert "does not match format '%Y-%m-%d'" in str(e.value)

date = validate_date_format('2024-07-01')
assert isinstance(date, datetime)
assert date == datetime(2024, 7, 1)


def test_validate_date_range():
with pytest.raises(ValueError) as e:
validate_date_range('2024-07-02', '2024-07-01')
assert str(e.value) == 'end_dt cannot be earlier than start_dt.'

with pytest.raises(ValueError) as e:
validate_date_range('2024/07/01', '2024/07/02')

assert "does not match format '%Y-%m-%d'" in str(e.value)

validate_date_range('2024-07-01', '2024-07-02')
validate_date_range('2024-07-01', '')
validate_date_range('', '2024-07-02')
validate_date_range('', '')

0 comments on commit b8b8617

Please sign in to comment.