Skip to content

Commit

Permalink
fix: Resolve mypy errors
Browse files Browse the repository at this point in the history
  • Loading branch information
chriscarrollsmith committed Feb 7, 2025
1 parent 642f37e commit 5e0ac24
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 13 deletions.
5 changes: 3 additions & 2 deletions experimental/download_databases.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@
# recommend trying this.

import imfp
from pandas import DataFrame

# Set a custom wait time
_imf_wait_time = 10

# Attempt to download databases sequentially
databases = imfp.imf_databases()
datasets = {"database_names": [], "dataframes": []}
databases: DataFrame = imfp.imf_databases()
datasets: dict[str, list[DataFrame | None]] = {"database_names": [], "dataframes": []}
for database_id in databases["database_id"]:
datasets["database_names"].append(database_id)
try:
Expand Down
5 changes: 3 additions & 2 deletions experimental/download_indicators.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# This script tries to download whole databases indicator by indicator

import imfp
from pandas import DataFrame

# Examine database list
databases = imfp.imf_databases()
Expand All @@ -11,8 +12,8 @@

# Try to download the database indicator by indicator (Note that some databases don't
# use the 'indicator' parameter, so this won't work with every database)
indicators = imfp.imf_parameters("IFS")["indicator"]
datasets = {"indicator_names": [], "dataframes": []}
indicators: DataFrame = imfp.imf_parameters("IFS")["indicator"]
datasets: dict[str, list[DataFrame | None]] = {"indicator_names": [], "dataframes": []}
for indicator in indicators["input_code"]:
datasets["indicator_names"].append(indicator)
try:
Expand Down
44 changes: 35 additions & 9 deletions imfp/data.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import logging
from pandas import DataFrame, Series, concat
from typing import overload, Literal
from warnings import warn
from .utils import _download_parse, _imf_dimensions, _imf_metadata
from urllib.parse import urlencode
from pandas import DataFrame, Series, concat

from .utils import _download_parse, _imf_dimensions, _imf_metadata

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -175,11 +177,38 @@ def imf_parameter_defs(
return parameterlist


@overload
def imf_dataset(
database_id: str,
parameters: dict = None,
start_year: int = None,
end_year: int = None,
parameters: dict | None = None,
start_year: int | str | None = None,
end_year: int | str | None = None,
return_raw: bool = False,
print_url: bool = False,
times: int = 3,
include_metadata: Literal[False] = False,
**kwargs,
) -> DataFrame: ...

@overload
def imf_dataset(
database_id: str,
parameters: dict | None = None,
start_year: int | str | None = None,
end_year: int | str | None = None,
return_raw: bool = False,
print_url: bool = False,
times: int = 3,
include_metadata: Literal[True] = True,
**kwargs,
) -> tuple[DataFrame, DataFrame]: ...


def imf_dataset(
database_id: str,
parameters: dict | None = None,
start_year: int | str | None = None,
end_year: int | str | None = None,
return_raw: bool = False,
print_url: bool = False,
times: int = 3,
Expand Down Expand Up @@ -224,10 +253,7 @@ def imf_dataset(
return_raw == True, returns the raw JSON fetched from the API endpoint.
"""

if database_id is None:
raise ValueError("Missing required database_id argument.")

if not isinstance(database_id, str):
if not database_id or not isinstance(database_id, str):
raise ValueError("database_id must be a string.")

years = {}
Expand Down

0 comments on commit 5e0ac24

Please sign in to comment.