valid8r.integrations.click
Click integration for valid8r parsers.
This module provides ParamTypeAdapter to use valid8r parsers as Click ParamTypes.
Examples
Basic usage with email parser:
import click
from valid8r.core import parsers
from valid8r.integrations.click import ParamTypeAdapter
@click.command()
@click.option('--email', type=ParamTypeAdapter(parsers.parse_email))
def create_user(email):
click.echo(f"Creating user: {email.local}@{email.domain}")
With chained validators for port validation:
import click
from valid8r.core import parsers, validators
from valid8r.integrations.click import ParamTypeAdapter
port_parser = parsers.parse_int_with_validation(
validators.minimum(1) & validators.maximum(65535)
)
@click.command()
@click.option('--port', type=ParamTypeAdapter(port_parser, name='port'))
def start_server(port):
click.echo(f"Starting server on port {port}")
Classes
Click ParamType adapter for valid8r parsers. |
Module Contents
- class valid8r.integrations.click.ParamTypeAdapter(parser, name=None, error_prefix=None)[source]
Bases:
click.ParamTypeClick ParamType adapter for valid8r parsers.
This class wraps a valid8r parser function (returning Maybe[T]) into a Click ParamType, enabling seamless integration of valid8r’s rich validation ecosystem with Click CLIs.
- Parameters:
parser (collections.abc.Callable[[str], valid8r.core.maybe.Maybe[Any]]) – A function that takes a string and returns Maybe[T]
name (str | None) – Optional custom name for the type (defaults to parser.__name__)
error_prefix (str | None) – Optional prefix for error messages (e.g., “Email address”)
Examples
>>> from valid8r.core import parsers >>> from valid8r.integrations.click import ParamTypeAdapter >>> >>> # Simple email validation >>> email_type = ParamTypeAdapter(parsers.parse_email) >>> email_type.name 'parse_email' >>> >>> # With custom name >>> port_type = ParamTypeAdapter(parsers.parse_int, name='port') >>> port_type.name 'port' >>> >>> # With custom error prefix >>> email_type = ParamTypeAdapter( ... parsers.parse_email, ... error_prefix='Email address' ... )
- convert(value, param, ctx)[source]
Convert and validate the input value using the parser.
- Parameters:
value (Any) – The input value to convert
param (click.Parameter | None) – The Click parameter being processed
ctx (click.Context | None) – The Click context
- Returns:
The successfully parsed and validated value
- Raises:
click.exceptions.BadParameter – If validation fails
- Return type:
Any