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

ParamTypeAdapter

Click ParamType adapter for valid8r parsers.

Module Contents

class valid8r.integrations.click.ParamTypeAdapter(parser, name=None, error_prefix=None)[source]

Bases: click.ParamType

Click 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'
... )
parser[source]
name[source]
error_prefix = None[source]
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