<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def norm_name(build_module: str, target_name: str):
 """Return a normalized canonical target name for the `target_name` observed in build module `build_module`. A normalized canonical target name is of the form "<build module>:<name>", where <build module> is the relative normalized path from the project root to the target build module (POSIX), and <name> is a valid target name (see `validate_name()`). """

    if ':' not in target_name:
        raise ValueError(
            "Must provide fully-qualified target name (with `:') to avoid "
            "possible ambiguity - `{}' not valid".format(target_name))

    mod, name = split(target_name)
    return '{}:{}'.format(
        PurePath(norm_proj_path(mod, build_module)).as_posix().strip('.'),
        validate_name(name))