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

1#!/usr/bin/env python3 

2 

3import logging 

4import shutil 

5import subprocess 

6import sys 

7from pathlib import Path 

8 

9 

10logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") 

11logger = logging.getLogger(__name__) 

12 

13 

14def build_examples() -> None: 

15 """Build examples for SAM packaging. 

16 

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" 

23 

24 runtime_packages = [ 

25 examples_dir, 

26 ] 

27 

28 if build_dir.exists(): 

29 logger.info("Cleaning existing build directory") 

30 shutil.rmtree(build_dir) 

31 build_dir.mkdir() 

32 

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 ) 

48 

49 logger.info("Build completed successfully") 

50 

51 

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 

59 

60 

61if __name__ == "__main__": 

62 raise SystemExit(main())