validation¶
Input validation utilities for HOLMES.
This module provides pure validation functions for validating user input, configuration values, and data before processing.
validate_date_format ¶
Parse and validate a date string.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
date_str
|
str
|
Date string to validate |
required |
format_str
|
str
|
Expected date format, defaults to "%Y-%m-%d" |
'%Y-%m-%d'
|
Returns:
| Type | Description |
|---|---|
datetime
|
Parsed datetime object |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the date string doesn't match the expected format |
Source code in src/holmes/validation.py
validate_date_range ¶
Validate that start date is before end date.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start
|
str
|
Start date string in "%Y-%m-%d" format |
required |
end
|
str
|
End date string in "%Y-%m-%d" format |
required |
Returns:
| Type | Description |
|---|---|
tuple[datetime, datetime]
|
Tuple of (start_datetime, end_datetime) |
Raises:
| Type | Description |
|---|---|
ValueError
|
If dates are invalid format or start >= end |
Source code in src/holmes/validation.py
validate_catchment_exists ¶
Validate that a catchment data file exists.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
catchment
|
str
|
Catchment name to validate |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the catchment data file doesn't exist |
Source code in src/holmes/validation.py
validate_port ¶
Validate that a port number is in the valid range.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
port
|
int
|
Port number to validate |
required |
Returns:
| Type | Description |
|---|---|
int
|
The validated port number |
Raises:
| Type | Description |
|---|---|
ValueError
|
If port is not in range 1-65535 |
Source code in src/holmes/validation.py
validate_host ¶
Validate that a host is a valid IP address or hostname.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
host
|
str
|
Host string to validate (IP address or hostname) |
required |
Returns:
| Type | Description |
|---|---|
str
|
The validated host string |
Raises:
| Type | Description |
|---|---|
ValueError
|
If host is not a valid IP address or hostname |
Source code in src/holmes/validation.py
validate_array_no_nan ¶
Validate that an array contains no NaN or infinity values.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
arr
|
ndarray
|
Array to validate |
required |
name
|
str
|
Name of the array for error messages |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the array contains NaN or infinity values |
Source code in src/holmes/validation.py
validate_array_length ¶
Validate that an array has the expected length.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
arr
|
ndarray
|
Array to validate |
required |
expected
|
int
|
Expected length |
required |
name
|
str
|
Name of the array for error messages |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the array length doesn't match expected |
Source code in src/holmes/validation.py
validate_parameter_bounds ¶
validate_parameter_bounds(
params: NDArray[floating],
bounds: Sequence[tuple[float, float]],
names: Sequence[str],
) -> None
Validate that parameters fall within their defined bounds.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
params
|
ndarray
|
Parameter values to validate |
required |
bounds
|
Sequence[tuple[float, float]]
|
List of (lower, upper) bounds for each parameter |
required |
names
|
Sequence[str]
|
Names of parameters for error messages |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If any parameter is outside its bounds |
Source code in src/holmes/validation.py
validate_ws_message_keys ¶
validate_ws_message_keys(
msg: dict, required_keys: Sequence[str], context: str = "message"
) -> None
Validate that a WebSocket message contains all required keys.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
msg
|
dict
|
Message dictionary to validate |
required |
required_keys
|
Sequence[str]
|
List of required keys |
required |
context
|
str
|
Context string for error messages |
'message'
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If any required keys are missing |