{"library":"pdpyras","title":"PagerDuty Python REST API Sessions (pdpyras)","description":"pdpyras is a lightweight Python client that provides an opinionated wrapper around the Requests HTTP library for interacting with the PagerDuty REST API v2 and Events API v2. It aims to simplify common tasks like authentication, pagination, and error handling. The library currently supports Python 3.6 through 3.13, with version 5.4.1 being the latest release. However, this library has been officially deprecated by PagerDuty in favor of `python-pagerduty` since early 2025, with version 5.4.1 being the final bugfix release that also introduces a deprecation warning upon import.","language":"python","status":"deprecated","last_verified":"Wed May 13","install":{"commands":["pip install pdpyras"],"cli":null},"imports":["from pdpyras import APISession","from pdpyras import EventsAPISession","from pdpyras import ChangeEventsAPISession","from pdpyras import PDSession"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom pdpyras import APISession\n\n# Retrieve PagerDuty API key and 'From' email from environment variables\n# It's highly recommended to use environment variables for sensitive data.\nAPI_KEY = os.environ.get(\"PAGERDUTY_API_KEY\", \"YOUR_PAGERDUTY_API_KEY\")\n# For account-level API keys, a 'From' header (user email) is often required\n# for write operations to certain endpoints. Use a valid PagerDuty user email.\nDEFAULT_FROM_EMAIL = os.environ.get(\"PAGERDUTY_FROM_EMAIL\", \"your_email@example.com\")\n\nif API_KEY == \"YOUR_PAGERDUTY_API_KEY\":\n    print(\"WARNING: PAGERDUTY_API_KEY environment variable not set. Using placeholder.\")\nif DEFAULT_FROM_EMAIL == \"your_email@example.com\":\n    print(\"WARNING: PAGERDUTY_FROM_EMAIL environment variable not set. Using placeholder.\")\n\ntry:\n    # Initialize a PagerDuty REST API v2 session.\n    # For user-level API keys, `default_from` might be inferred or not needed.\n    # For account-level API keys, it is often essential for POST/PUT operations.\n    session = APISession(API_KEY, default_from=DEFAULT_FROM_EMAIL)\n\n    # Example: Fetch and print the first 2 incidents that are currently triggered or acknowledged.\n    print(\"\\nFetching recent incidents (triggered or acknowledged)...\")\n    incidents = session.list_all(\n        'incidents',\n        params={'statuses[]': ['triggered', 'acknowledged'], 'limit': 2}\n    )\n\n    if incidents:\n        for i, incident in enumerate(incidents):\n            print(f\"Incident {i+1}: ID={incident['id']}, Summary='{incident['summary']}', Status={incident['status']}')\")\n    else:\n        print(\"No incidents found or an issue occurred with the API call.\")\n\nexcept Exception as e:\n    print(f\"An error occurred: {e}\")\n","lang":"python","description":"This quickstart demonstrates how to initialize an `APISession` and fetch PagerDuty incidents. It emphasizes using environment variables for API keys and `default_from` email for security and proper API usage, especially with account-level keys. Replace placeholders with your actual PagerDuty API key and a valid PagerDuty user email.","tag":null,"tag_description":null,"last_tested":"2026-04-25","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-13","installed_version":"5.4.1","pypi_latest":"5.4.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.1,"avg_import_s":0.6,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pdpyras","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.55,"mem_mb":10.1,"disk_size":"21.3M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pdpyras","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.59,"mem_mb":10,"disk_size":"21.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pdpyras","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.1,"import_time_s":0.37,"mem_mb":10.1,"disk_size":"22M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pdpyras","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.38,"mem_mb":10,"disk_size":"22M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pdpyras","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.75,"mem_mb":11.2,"disk_size":"23.4M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pdpyras","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.8,"mem_mb":11.1,"disk_size":"23.3M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pdpyras","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.2,"import_time_s":0.67,"mem_mb":11.2,"disk_size":"24M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pdpyras","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.61,"mem_mb":11.1,"disk_size":"24M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pdpyras","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.64,"mem_mb":11.6,"disk_size":"15.2M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pdpyras","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.69,"mem_mb":11.5,"disk_size":"15.1M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pdpyras","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":1.9,"import_time_s":0.65,"mem_mb":11.6,"disk_size":"16M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pdpyras","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.69,"mem_mb":11.5,"disk_size":"16M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pdpyras","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.65,"mem_mb":11.9,"disk_size":"14.9M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pdpyras","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.69,"mem_mb":11.9,"disk_size":"14.7M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pdpyras","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":1.9,"import_time_s":0.61,"mem_mb":11.9,"disk_size":"15M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pdpyras","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.68,"mem_mb":11.9,"disk_size":"15M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pdpyras","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.48,"mem_mb":9.8,"disk_size":"20.6M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pdpyras","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.55,"mem_mb":9.7,"disk_size":"20.5M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pdpyras","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.5,"import_time_s":0.45,"mem_mb":9.8,"disk_size":"21M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pdpyras","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.47,"mem_mb":9.7,"disk_size":"21M"}]}}