def format_entry(
        name: str,
        age: int,
        weight: float,
        name_width: int=20,
        age_width: int=5,
        weight_width: int=8
    ) -> str:
    """
    Format a name, age, and weight into a string with aligned columns.
    The output is suitable for tabular display.

    Parameters:
    ----------
    name: str
        The name of the person.
    age: int
        The age of the person.
    weight: float
        The weight of the person.
    name_width: int (default=20)
        The width of the name column.
    age_width: int (default=5)
        The width of the age column.
    weight_width: int (default=8)
        The width of the weight column.

    Returns:
    -------
    str
        Formatted string with each field within its specified
        width, separated by vertical bars.
        Value alignment within width:
        - name: left aligned.
        - age: center aligned.
        - weight: right aligned with two digits after the decimal point.

    Example:
    --------
    >>> format_entry("Alice", 30, 65.5)
    '|Alice               |  30 |   65.50|'
    >>> format_entry("Alice", 30, 65.5, age_width=6)
    '|Alice               |  30  |   65.50|'
    >>> format_entry("Alice", 30, 65.5, age_width=8)
    '|Alice               |   30   |   65.50|'
    """
    pass # ADD CODE HERE!
