def validate_namespace()

in python/rpdk/java/utils.py [0:0]


def validate_namespace(default):
    pattern = r"^[_a-z][_a-z0-9]+$"

    def _validate_namespace(value):
        if not value:
            return default

        if value.lower() != value:
            raise WizardValidationError("Package names must be all lower case")

        namespace = value.split(".")

        for name in namespace:
            if not name:
                raise WizardValidationError(f"Empty segment in '{value}'")
            if name in LANGUAGE_KEYWORDS:
                raise WizardValidationError(f"'{name}' is a reserved keyword")
            startswith = name[0]
            if startswith not in string.ascii_lowercase + "_":
                raise WizardValidationError(
                    f"Segment '{name}' must begin with a lower case letter or "
                    "an underscore"
                )

            match = re.match(pattern, name)
            if not match:
                raise WizardValidationError(
                    f"Segment '{name}' should match '{pattern}'"
                )

        return tuple(namespace)

    return _validate_namespace