Coverage for scripts/build_examples.py: 100%
26 statements
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 16:54 +0000
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 16:54 +0000
1#!/usr/bin/env python3
3import logging
4import shutil
5import subprocess
6import sys
7from pathlib import Path
10logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
11logger = logging.getLogger(__name__)
14def build_examples() -> None:
15 """Build examples for SAM packaging.
17 The SDK is deployed as a Lambda layer by the e2e workflow, so the function
18 artifact only needs the example handlers.
19 """
20 repo_dir = Path(__file__).resolve().parent.parent
21 examples_dir = repo_dir / "async-durable-execution-examples"
22 build_dir = examples_dir / "build"
24 runtime_packages = [
25 examples_dir,
26 ]
28 if build_dir.exists():
29 logger.info("Cleaning existing build directory")
30 shutil.rmtree(build_dir)
31 build_dir.mkdir()
33 logger.info("Installing runtime dependencies into %s", build_dir)
34 subprocess.run(
35 [
36 sys.executable,
37 "-m",
38 "pip",
39 "install",
40 "--upgrade",
41 "--no-deps",
42 "--target",
43 str(build_dir),
44 *[str(package) for package in runtime_packages],
45 ],
46 check=True,
47 )
49 logger.info("Build completed successfully")
52def main() -> int:
53 try:
54 build_examples()
55 except subprocess.CalledProcessError:
56 logger.exception("Failed to build examples")
57 return 1
58 return 0
61if __name__ == "__main__":
62 raise SystemExit(main())