![Build Status](https://github.com/ADTRAN/netconf_client/workflows/CI%20Checks/badge.svg)
[![PyPI version](https://badge.fury.io/py/netconf-client.svg)](https://badge.fury.io/py/netconf-client)
[![Coverage Status](https://coveralls.io/repos/github/ADTRAN/netconf_client/badge.svg?branch=main)](https://coveralls.io/github/ADTRAN/netconf_client?branch=main)
# netconf_client
A NETCONF client for Python 3.8+.
## Basic Usage
```python
from netconf_client.connect import connect_ssh
from netconf_client.ncclient import Manager
session = connect_ssh(host="localhost", port=830, username="admin", password="password")
mgr = Manager(session, timeout=120)
mgr.edit_config(config="""<config> ... </config>""")
print(mgr.get(filter="""<filter> ... </filter>""").data_xml)
```
More complete documentation can be found in the [User Guide]
## Comparison with `ncclient`
Compared to [ncclient](https://github.com/ncclient/ncclient),
`netconf_client` has several advantages:
- It's simpler (at the time of writing: 789 LoC vs 2889 LoC)
- lxml can be bypassed, which can work around issues where lxml
breaks namespaces of e.g. identityrefs
- Support for TLS sessions
And a few disadvantages:
- Support for non-RFC-compliant devices isn't really included in
`netconf_client`
- `netconf_client` does a lot less error checking and assumes you're
sending valid messages to the server (however this can be useful
for testing edge-case behavior of a server)
[User Guide]: https://adtran.github.io/netconf_client/
Raw data
{
"_id": null,
"home_page": "https://github.com/ADTRAN/netconf_client",
"name": "netconf-client",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8,<4.0",
"maintainer_email": "",
"keywords": "netconf",
"author": "ADTRAN, Inc.",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/00/33/e330cf87b8026bb502c2a82d009c73e5377dcb92f169a17b3d1aa4fc0b76/netconf_client-3.1.0.tar.gz",
"platform": null,
"description": "![Build Status](https://github.com/ADTRAN/netconf_client/workflows/CI%20Checks/badge.svg)\n[![PyPI version](https://badge.fury.io/py/netconf-client.svg)](https://badge.fury.io/py/netconf-client)\n[![Coverage Status](https://coveralls.io/repos/github/ADTRAN/netconf_client/badge.svg?branch=main)](https://coveralls.io/github/ADTRAN/netconf_client?branch=main)\n\n# netconf_client\n\nA NETCONF client for Python 3.8+.\n\n## Basic Usage\n\n```python\nfrom netconf_client.connect import connect_ssh\nfrom netconf_client.ncclient import Manager\n\nsession = connect_ssh(host=\"localhost\", port=830, username=\"admin\", password=\"password\")\nmgr = Manager(session, timeout=120)\n\nmgr.edit_config(config=\"\"\"<config> ... </config>\"\"\")\nprint(mgr.get(filter=\"\"\"<filter> ... </filter>\"\"\").data_xml)\n```\n\nMore complete documentation can be found in the [User Guide]\n\n## Comparison with `ncclient`\n\nCompared to [ncclient](https://github.com/ncclient/ncclient),\n`netconf_client` has several advantages:\n\n - It's simpler (at the time of writing: 789 LoC vs 2889 LoC)\n - lxml can be bypassed, which can work around issues where lxml\n breaks namespaces of e.g. identityrefs\n - Support for TLS sessions\n\nAnd a few disadvantages:\n\n - Support for non-RFC-compliant devices isn't really included in\n `netconf_client`\n - `netconf_client` does a lot less error checking and assumes you're\n sending valid messages to the server (however this can be useful\n for testing edge-case behavior of a server)\n\n\n[User Guide]: https://adtran.github.io/netconf_client/\n\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "A Python NETCONF client",
"version": "3.1.0",
"project_urls": {
"Documentation": "https://adtran.github.io/netconf_client/",
"Homepage": "https://github.com/ADTRAN/netconf_client",
"Repository": "https://github.com/ADTRAN/netconf_client"
},
"split_keywords": [
"netconf"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "dafdd50156e327fd2e9ab939cd52decb71658cd429f5ac4981fbb9ae0a83415e",
"md5": "cc1aae8e711242baf574e5a1139192eb",
"sha256": "1dab3294440057375b02e63f52ba73675dce00c1c10e2d4b3db0cfc2060bc0a7"
},
"downloads": -1,
"filename": "netconf_client-3.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "cc1aae8e711242baf574e5a1139192eb",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8,<4.0",
"size": 16191,
"upload_time": "2024-03-01T22:11:12",
"upload_time_iso_8601": "2024-03-01T22:11:12.588961Z",
"url": "https://files.pythonhosted.org/packages/da/fd/d50156e327fd2e9ab939cd52decb71658cd429f5ac4981fbb9ae0a83415e/netconf_client-3.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0033e330cf87b8026bb502c2a82d009c73e5377dcb92f169a17b3d1aa4fc0b76",
"md5": "72ce616cec981bbfa486f0fbdf89afd3",
"sha256": "cacced892e1afc0695f0deebe96565a78f27049425be0cfcb421fed612973402"
},
"downloads": -1,
"filename": "netconf_client-3.1.0.tar.gz",
"has_sig": false,
"md5_digest": "72ce616cec981bbfa486f0fbdf89afd3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8,<4.0",
"size": 14120,
"upload_time": "2024-03-01T22:11:13",
"upload_time_iso_8601": "2024-03-01T22:11:13.922909Z",
"url": "https://files.pythonhosted.org/packages/00/33/e330cf87b8026bb502c2a82d009c73e5377dcb92f169a17b3d1aa4fc0b76/netconf_client-3.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-03-01 22:11:13",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ADTRAN",
"github_project": "netconf_client",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "netconf-client"
}