diff --git a/src/questionnaire_data/build.py b/src/questionnaire_data/build.py index 20ef068..9ebefdb 100644 --- a/src/questionnaire_data/build.py +++ b/src/questionnaire_data/build.py @@ -28,7 +28,11 @@ def _hash_properties(props: sp.SproutProperties) -> str: ).hexdigest() -@mark.metadata +@mark.skipif( + common.redcap.is_empty_env(), + reason="API key is not present in the environment, so skipping.", +) +@mark.raw def task_download_metadata( raw_metadata_path: Annotated[Path, Product] = RAW_METADATA_PATH, ) -> None: diff --git a/src/questionnaire_data/common/redcap.py b/src/questionnaire_data/common/redcap.py index 3e92f0e..ca66069 100644 --- a/src/questionnaire_data/common/redcap.py +++ b/src/questionnaire_data/common/redcap.py @@ -1,6 +1,6 @@ import os from dataclasses import dataclass -from typing import Any, Literal +from typing import Any, Literal, Optional import requests @@ -23,7 +23,7 @@ def get( api_config: APIConfig = API_CONFIG, ) -> requests.Response: """Send a request to the REDCap API.""" - token = os.environ.get(api_config.env_key) + token = _get_env(api_config) if not token: raise RuntimeError(f"{api_config.env_key} environment variable is not set.") @@ -46,3 +46,15 @@ def get_json( } response = get(request_data) return response.json() + + +def is_empty_api_key() -> bool: + """Check if env is empty.""" + return _get_env(API_CONFIG) is None + + +def _get_api_key(api_config: APIConfig) -> Optional[str]: + env_var = os.environ.get(api_config.env_key) + if env_var == "": + env_var = None + return env_var