Metadata-Version: 2.4
Name: netpulse-sdk
Version: 0.4.0
Summary: Python SDK for NetPulse API 0.4.0+ Network Automation Platform
Author-email: NetPulse Team <44155313+Nativu5@users.noreply.github.com>
Maintainer-email: NetPulse Team <44155313+Nativu5@users.noreply.github.com>
License: MIT
Project-URL: Homepage, https://github.com/scitix/netpulse
Project-URL: Documentation, https://netpulse.readthedocs.io
Project-URL: Repository, https://github.com/scitix/netpulse
Project-URL: SDK Documentation, https://github.com/scitix/netpulse/tree/main/sdk
Keywords: network,automation,netpulse,sdk,api-client
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: System :: Networking
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx>=0.25.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: PyYAML>=6.0.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-mock>=3.10.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Dynamic: license-file

## Version Compatibility

| SDK Version | NetPulse API Version | Status |
|-------------|----------------------|--------|
| **0.4.x**   | **0.4.0+**           | Recommended |
| 0.3.x       | 0.4.0                | Legacy |

> **IMPORTANT**: This version of the SDK (0.4.x) is strictly aligned with NetPulse API 0.4.0+. It supports advanced features like per-request MongoDB audit modes.

## Installation

```bash
pip install netpulse-sdk
```
local-install
```bash
pip install -e .
```

# NetPulse SDK

Python SDK for NetPulse Network Automation Platform.

## Quick Start

```python
from netpulse_sdk import NetPulseClient

# Initialize client
client = NetPulseClient(
    base_url="http://localhost:9000",
    api_key="your-api-key",
)

# Query device (Recommended pattern)
job = client.collect(
    devices="10.1.1.1", 
    command="show version",
    driver="netmiko",
    connection_args={"device_type": "cisco_ios", "username": "admin", "password": "..."}
)

if job: # Uses new __bool__ feature to check all_ok
    result = job[0] # Prefer index over .first()
    print(f"Output: {result.stdout}")

# Push configuration
job = client.run(devices="10.1.1.1", config=["hostname ROUTER-01"]).raise_on_error()
print("Configuration success")
```

## Features

- **Batch Execution**: Execute commands on multiple devices simultaneously
- **Configuration Push**: Push configuration changes to network devices
- **Multiple Drivers**: Support for netmiko, napalm, pyeapi, and paramiko
- **Progress Monitoring**: Track job progress in real-time
- **Error Handling**: Comprehensive error handling with detailed error messages

## Supported Drivers

| Driver | Use Case |
|--------|----------|
| `netmiko` | Network devices (Cisco, HP, Huawei, Juniper) |
| `paramiko` | Linux servers |
| `pyeapi` | Arista (eAPI) |
| `napalm` | Multi-vendor unified interface |

## Documentation

- [Examples](examples/README.md)
- [Parameter Reference](docs/PARAMETERS_REFERENCE.md)

## License

MIT
