Skip to content

Validators#

flet_pkg.core.validators #

Name validation and derivation utilities.

Provides validators for Flutter package names, Python package names, project names, and control class names. Also derives a consistent set of names from a Flutter package name.

DerivedNames dataclass #

DerivedNames(project_name: str, package_name: str, control_name: str, control_name_snake: str)

Set of names derived from a Flutter package name.

Attributes:

Name Type Description
project_name str

Hyphenated project name (e.g. flet-onesignal).

package_name str

Python package name (e.g. flet_onesignal).

control_name str

PascalCase control class name (e.g. Onesignal).

control_name_snake str

Snake-case control name (e.g. onesignal).

validate_package_name #

validate_package_name(name: str) -> str | None

Validate a Python package name.

Parameters:

Name Type Description Default
name str

Package name to validate.

required

Returns:

Type Description
str | None

Error message string, or None if valid.

Source code in src/flet_pkg/core/validators.py
def validate_package_name(name: str) -> str | None:
    """Validate a Python package name.

    Args:
        name: Package name to validate.

    Returns:
        Error message string, or ``None`` if valid.
    """
    if not re.fullmatch(r"[a-z][a-z0-9_]*", name):
        return "Must be a valid Python identifier: lowercase, underscores, starts with letter."
    return None

validate_project_name #

validate_project_name(name: str) -> str | None

Validate a project name (lowercase + hyphens).

Parameters:

Name Type Description Default
name str

Project name to validate.

required

Returns:

Type Description
str | None

Error message string, or None if valid.

Source code in src/flet_pkg/core/validators.py
def validate_project_name(name: str) -> str | None:
    """Validate a project name (lowercase + hyphens).

    Args:
        name: Project name to validate.

    Returns:
        Error message string, or ``None`` if valid.
    """
    if not re.fullmatch(r"[a-z][a-z0-9\-]*", name):
        return "Must be lowercase letters, digits, and hyphens. Starts with letter."
    return None

validate_flutter_package #

validate_flutter_package(name: str) -> str | None

Validate a pub.dev package name.

Parameters:

Name Type Description Default
name str

Flutter package name to validate.

required

Returns:

Type Description
str | None

Error message string, or None if valid.

Source code in src/flet_pkg/core/validators.py
def validate_flutter_package(name: str) -> str | None:
    """Validate a pub.dev package name.

    Args:
        name: Flutter package name to validate.

    Returns:
        Error message string, or ``None`` if valid.
    """
    if not re.fullmatch(r"[a-z][a-z0-9_]*", name):
        return "Must be a valid pub.dev package name: lowercase, underscores, starts with letter."
    return None

validate_control_name #

validate_control_name(name: str) -> str | None

Validate a PascalCase control class name.

Parameters:

Name Type Description Default
name str

Control class name to validate.

required

Returns:

Type Description
str | None

Error message string, or None if valid.

Source code in src/flet_pkg/core/validators.py
def validate_control_name(name: str) -> str | None:
    """Validate a PascalCase control class name.

    Args:
        name: Control class name to validate.

    Returns:
        Error message string, or ``None`` if valid.
    """
    if not re.fullmatch(r"[A-Z][a-zA-Z0-9]*", name):
        return "Must be PascalCase: starts with uppercase letter, alphanumeric."
    return None

derive_names #

derive_names(flutter_package: str) -> DerivedNames

Derive project, package, and control names from a Flutter package name.

Parameters:

Name Type Description Default
flutter_package str

A pub.dev package name (e.g. onesignal_flutter).

required

Returns:

Type Description
DerivedNames

A DerivedNames instance with all derived names.

Source code in src/flet_pkg/core/validators.py
def derive_names(flutter_package: str) -> DerivedNames:
    """Derive project, package, and control names from a Flutter package name.

    Args:
        flutter_package: A pub.dev package name (e.g. ``onesignal_flutter``).

    Returns:
        A ``DerivedNames`` instance with all derived names.
    """
    core = _strip_flutter_affixes(flutter_package)
    control_name = _derive_control_name(core)
    return DerivedNames(
        project_name=f"flet-{core.replace('_', '-')}",
        package_name=f"flet_{core}",
        control_name=control_name,
        control_name_snake=_camel_to_snake(control_name).lower(),
    )