{"library":"pan-python","title":"Pan-Python","description":"Pan-Python is a multi-tool set for interacting with Palo Alto Networks PAN-OS, Panorama, WildFire, and AutoFocus platforms. It provides a powerful, low-level Python interface to the PAN-OS and Panorama XML API, as well as interfaces for WildFire, AutoFocus, and licensing APIs. The library is actively maintained, with its current version being 0.25.0, and receives regular updates.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install pan-python"],"cli":{"name":"panxapi","version":"sh: 1: panxapi: not found"}},"imports":["from pan.xapi import PanXapi","from pan.wfapi import PanWFapi","from pan.afapi import PanAFapi","from pan.licapi import PanLicapi"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom pan.xapi import PanXapi, PanXapiError\n\nhostname = os.environ.get('PAN_OS_HOSTNAME', 'your_firewall_ip')\napi_key = os.environ.get('PAN_OS_API_KEY', 'your_api_key')\n\nif not hostname or not api_key:\n    print(\"Please set PAN_OS_HOSTNAME and PAN_OS_API_KEY environment variables.\")\n    exit(1)\n\ntry:\n    # Initialize the XAPI connection\n    xapi = PanXapi(hostname=hostname, api_key=api_key)\n\n    # Example 1: Execute an operational command (show system info)\n    print(\"\\n--- Showing System Info ---\")\n    xapi.op(cmd='show system info', cmd_xml=True)\n    if xapi.status == 'success':\n        print(xapi.xml_result())\n    else:\n        print(f\"Error fetching system info: {xapi.status}: {xapi.status_detail}\")\n\n    # Example 2: Edit a configuration element (e.g., disable a security rule)\n    # Note: This is a configuration change and requires appropriate permissions.\n    # For a real scenario, ensure rule 'rule7' exists and handle commit.\n    print(\"\\n--- Attempting to disable 'rule7' ---\")\n    xpath = \"/config/devices/entry/vsys/entry/rulebase/security/rules/entry[@name='rule7']/disabled\"\n    element = \"<disabled>yes</disabled>\"\n    # Example: Uncomment and adjust for your environment\n    # xapi.edit(xpath=xpath, element=element)\n    # if xapi.status == 'success':\n    #     print(\"Rule 'rule7' disabled. Remember to commit changes.\")\n    # else:\n    #     print(f\"Error disabling rule: {xapi.status}: {xapi.status_detail}\")\n\nexcept PanXapiError as e:\n    print(f\"PanXapi Error: {e}\")\nexcept Exception as e:\n    print(f\"An unexpected error occurred: {e}\")","lang":"python","description":"This quickstart demonstrates how to connect to a Palo Alto Networks device (Firewall or Panorama) using `pan.xapi.PanXapi` and execute an operational command (`show system info`). It also includes a commented example for a configuration edit. Ensure you have the hostname/IP and an API key configured as environment variables for secure access.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"0.25.0","pypi_latest":"0.25.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.6,"avg_import_s":0.16,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pan-python","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.13,"mem_mb":7.7,"disk_size":"18.1M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pan-python","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.09,"mem_mb":7.7,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pan-python","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.21,"mem_mb":8.1,"disk_size":"20.0M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pan-python","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.18,"mem_mb":8.1,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pan-python","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.19,"mem_mb":8.1,"disk_size":"11.9M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pan-python","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.19,"mem_mb":8.1,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pan-python","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.2,"mem_mb":8.2,"disk_size":"11.6M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pan-python","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.19,"mem_mb":8.2,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pan-python","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.12,"mem_mb":7.4,"disk_size":"17.6M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pan-python","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.1,"mem_mb":7.4,"disk_size":"18M"}]}}