{"library":"placebo","title":"Placebo","description":"Placebo is a Python library designed to mock `boto3` calls, allowing developers to record actual AWS service responses and replay them later without interacting with real AWS endpoints. This is particularly useful for unit testing, offline development, and creating consistent test environments. The current version is 0.10.0. Releases have been sporadic, with a significant update to 0.10.0 after a nearly three-year gap, indicating active maintenance but not a fixed cadence.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install placebo"],"cli":null},"imports":["from placebo import attach","import boto3; boto3.Session()"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import boto3\nimport placebo\nimport os\n\ndata_path = os.path.join(os.path.dirname(__file__), 'placebo_data')\nos.makedirs(data_path, exist_ok=True)\n\nsession = boto3.Session(region_name='us-east-1')\npill = placebo.attach(session, data_path=data_path)\n\n# --- Recording mode ---\n# Set PLACEBO_MODE=record in environment variables to enable recording\n# e.g., PLACEBO_MODE=record python your_script.py\nif os.environ.get('PLACEBO_MODE') == 'record':\n    print(\"Recording AWS calls...\")\n    pill.record()\n    s3 = session.client('s3')\n    try:\n        s3.list_buckets()\n        print(\"Buckets listed and recorded.\")\n    except Exception as e:\n        print(f\"Error during recording: {e}\")\n\n# --- Playback mode ---\n# Default behavior, or set PLACEBO_MODE=playback\n# e.g., PLACEBO_MODE=playback python your_script.py\nelse:\n    print(\"Playing back recorded AWS calls...\")\n    pill.playback()\n    s3 = session.client('s3')\n    try:\n        response = s3.list_buckets()\n        print(\"Buckets listed from recording:\")\n        for bucket in response.get('Buckets', []):\n            print(f\" - {bucket['Name']}\")\n    except Exception as e:\n        print(f\"Error during playback: {e}\")\n\n# Clean up (optional, for demonstration purposes)\n# import shutil\n# if os.path.exists(data_path):\n#     shutil.rmtree(data_path)\n","lang":"python","description":"This example demonstrates how to set up Placebo for both recording and playing back AWS API calls using `boto3`. It creates a `boto3` session, attaches Placebo to it with a specified data directory, and then, based on an environment variable, either records S3 `list_buckets` calls or plays them back from previously recorded JSON files.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"0.10.0","pypi_latest":"0.10.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.6,"avg_import_s":null,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"placebo","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"19.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"placebo","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":2.3,"import_time_s":null,"mem_mb":null,"disk_size":"20M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"placebo","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"21.6M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"placebo","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":2.2,"import_time_s":null,"mem_mb":null,"disk_size":"22M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"placebo","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"11.6M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"placebo","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":3.2,"import_time_s":null,"mem_mb":null,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"placebo","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"11.3M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"placebo","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":2.9,"import_time_s":null,"mem_mb":null,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"placebo","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"18.8M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"placebo","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":2.6,"import_time_s":null,"mem_mb":null,"disk_size":"19M"}]}}