speedwagon.validators

Validation code.

This contains mainly code for validating input.

class speedwagon.validators.AbsOutputValidation

Generic abstract base class for user options validations.

If validate() is called or the “candidate” property is read prior to setting the candidate property, a ValueError will be thrown.

To subclass, implement the investigate() method.

__init__() None

Create a new validation object with no results.

property candidate: _T | None

Get candidate.

If not set prior, this will raise a ValueError

abstract investigate(candidate: _T | None, job_options: Dict[str, UserDataType]) List[ReportT]

Test that returns any findings in the generic report format.

This needs to be implemented in any subclass.

Parameters:
  • candidate – Anything that is being validated.

  • job_options – dictionary of the keys and values of other user arguments used by the job.

Returns:

Returns a list of findings if any found, otherwise it returns an empty list.

reset() None

Reset any findings stored by the validation instance.

validate(job_options: Dict[str, str | Any] | None = None) None

Set is_valid and findings.

class speedwagon.validators.ExistsOnFileSystem(message_template='{} does not exist')

Validate a file or folder exists on the file system.

class speedwagon.validators.IsDirectory(message_template='{} is not a directory')

Validation for the string pointing to a directory.

__init__(message_template='{} is not a directory') None

Create a new validation for string pointing to directory.

Parameters:

message_template – Message template when candidate fails validation. Note: There is a single value in the template for the input value.

class speedwagon.validators.IsFile(message_template='{} is not a file')
__init__(message_template='{} is not a file') None

Create a new validation object with no results.

class speedwagon.validators.CustomValidation(query: Callable[[_T | None, Dict[str, str | Any]], bool], failure_message_function: Callable[[_T | None], str] | None = None)

Allows for simple custom validation.

Examples

>>> validation = CustomValidation(
...     query=lambda candidate, _: candidate.isalpha(),
...     failure_message_function=lambda candidate:(
...        f"{candidate} contains non-alphanumerical characters"
...         )
... )
>>> validation.investigate("s1", {})
['s1 contains non-alphanumerical characters']
__init__(query: Callable[[_T | None, Dict[str, str | Any]], bool], failure_message_function: Callable[[_T | None], str] | None = None) None

Create a custom validation object.

Parameters:
  • query – Callable function that validates the candidate and returns True or False based on the success of failure of the validation.

  • failure_message_function – Callable function that takes the failed candidate as an argument and returns a string to explain the validation failed.