
[](https://badge.fury.io/py/netconf-client)
[](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": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": "netconf",
"author": "ADTRAN, Inc.",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/e1/10/2e26c7643ef68651a8538ad84c8330fdc27f16d42770762a114efef252aa/netconf_client-3.4.0.tar.gz",
"platform": null,
"description": "\n[](https://badge.fury.io/py/netconf-client)\n[](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.4.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": null,
"digests": {
"blake2b_256": "8801e3ba945f9107e8f241fd627f3199c9dd167419c1c23250ca9f58b407b2e6",
"md5": "3b3d1e12abda4322b3afd5d52cd06f0e",
"sha256": "806415db8bbedaa4d05d3fc29d41437596ab16b9ad2985e6d8a88c2fd85054e0"
},
"downloads": -1,
"filename": "netconf_client-3.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3b3d1e12abda4322b3afd5d52cd06f0e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 16845,
"upload_time": "2025-08-04T20:41:20",
"upload_time_iso_8601": "2025-08-04T20:41:20.842686Z",
"url": "https://files.pythonhosted.org/packages/88/01/e3ba945f9107e8f241fd627f3199c9dd167419c1c23250ca9f58b407b2e6/netconf_client-3.4.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e1102e26c7643ef68651a8538ad84c8330fdc27f16d42770762a114efef252aa",
"md5": "a6b8ac6765328945f18d5f5ba64060ef",
"sha256": "56424f347c2da579ac4efda20b65f1404c59385dacfeaff5f2856ae647419274"
},
"downloads": -1,
"filename": "netconf_client-3.4.0.tar.gz",
"has_sig": false,
"md5_digest": "a6b8ac6765328945f18d5f5ba64060ef",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 14771,
"upload_time": "2025-08-04T20:41:22",
"upload_time_iso_8601": "2025-08-04T20:41:22.021876Z",
"url": "https://files.pythonhosted.org/packages/e1/10/2e26c7643ef68651a8538ad84c8330fdc27f16d42770762a114efef252aa/netconf_client-3.4.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-04 20:41:22",
"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"
}