{"library":"pyats-connections","title":"pyATS Connections","description":"pyATS Connections is a sub-component of the pyATS end-to-end testing ecosystem, specializing in handling device connections to various network devices. It provides top-level abstractions and interfaces for creating connection classes, supporting CLI, REST, and NETCONF protocols. This library is crucial for enabling scripts to interact with network devices within the pyATS framework. The current version is 26.3, and it is actively maintained by Cisco Systems Inc. with frequent releases.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install pyats.connections","pip install pyats[full]"],"cli":null},"imports":["from pyats.topology import loader","from genie.testbed import load","from pyats.connections.bases import BaseConnection"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom pyats.topology import loader\n\n# Create a dummy testbed.yaml file for demonstration\nwith open('testbed.yaml', 'w') as f:\n    f.write(\"\"\"\ndevices:\n  CSR1:\n    type: router\n    os: iosxe\n    credentials:\n      default:\n        username: '%ENV{PYATS_USER}'\n        password: '%ENV{PYATS_PASSWORD}'\n    connections:\n      cli:\n        protocol: ssh\n        ip: 127.0.0.1 # Use a dummy IP for local execution\n        port: 22\n\"\"\")\n\n# Set dummy environment variables for quickstart (replace with actual or secure method)\nos.environ['PYATS_USER'] = os.environ.get('PYATS_USER', 'devnetuser')\nos.environ['PYATS_PASSWORD'] = os.environ.get('PYATS_PASSWORD', 'Cisco123!')\n\ntry:\n    # Load the testbed from the YAML file\n    testbed = loader.load('testbed.yaml')\n\n    # Get a specific device from the testbed\n    device = testbed.devices['CSR1']\n\n    # Connect to the device (connection will fail with dummy IP, but demonstrates API)\n    print(f\"Attempting to connect to {device.name} at {device.connections['cli'].ip}...\")\n    device.connect(init_exec_params={'timeout': 5})\n    print(f\"Successfully connected to {device.name}.\")\n    \n    # Execute a command (will only reach here if connect succeeds)\n    output = device.execute('show version')\n    print(\"Show Version output:\\n\", output)\n\nexcept Exception as e:\n    print(f\"An error occurred: {e}\")\n    print(\"Note: Connection to 127.0.0.1 will likely fail unless a mock device is running or IP is changed.\")\nfinally:\n    # Clean up the dummy testbed file\n    os.remove('testbed.yaml')","lang":"python","description":"This quickstart demonstrates how to load a testbed definition from a YAML file, retrieve a device object, and attempt to establish a connection using `device.connect()`. It uses environment variables for credentials as a best practice. Note that the connection to a dummy IP (127.0.0.1) will fail in a real-world scenario without a reachable network device or mock device setup, but the code illustrates the API usage.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"25.9","pypi_latest":"26.4","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":70,"avg_install_s":28,"avg_import_s":2.28,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pyats.connections","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"145.0M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"full","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":0.1,"import_time_s":2.03,"mem_mb":27.9,"disk_size":"1.2G"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pyats.connections","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":8.5,"import_time_s":null,"mem_mb":null,"disk_size":"93M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"full","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":56.5,"import_time_s":1.73,"mem_mb":27.9,"disk_size":"993M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pyats.connections","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"full","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pyats.connections","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":7.2,"import_time_s":null,"mem_mb":null,"disk_size":"98M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"full","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":55.3,"import_time_s":2.73,"mem_mb":30.7,"disk_size":"1.1G"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pyats.connections","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"full","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pyats.connections","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":6.1,"import_time_s":null,"mem_mb":null,"disk_size":"90M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"full","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":60.3,"import_time_s":2.91,"mem_mb":30.5,"disk_size":"1.1G"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pyats.connections","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"full","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pyats.connections","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":6.4,"import_time_s":null,"mem_mb":null,"disk_size":"89M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"full","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":57.2,"import_time_s":2.89,"mem_mb":31.3,"disk_size":"1.1G"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pyats.connections","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"92.9M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"full","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":0.1,"import_time_s":1.93,"mem_mb":26.6,"disk_size":"972.1M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pyats.connections","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":10.9,"import_time_s":null,"mem_mb":null,"disk_size":"167M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"full","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":67.8,"import_time_s":1.76,"mem_mb":26.6,"disk_size":"1.3G"}]}}