def _validate_packages()

in aidial_app_builder_python/validation/python_pip/validation.py [0:0]


def _validate_packages(target: Path, allowed_packages: set[str]):
    requirements = target / "requirements.txt"
    requirements.touch(exist_ok=True)

    with open(target / "requirements.txt") as lines:
        for line in lines:
            line = line.strip()
            if not line or line.startswith("#"):
                continue

            requirement = parse_requirement(line)
            package_name = requirement.name
            if requirement.url:
                raise AppValidationException(
                    f"URLs are not allowed in requirements.txt: {requirement.url}"
                )

            if package_name not in allowed_packages:
                raise AppValidationException(
                    f"Package '{package_name}' is forbidden."
                )