
[](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/73/36/4f95bcce038ad460cd20d98cf662f312a211c2d2233197fc82766b759399/netconf_client-3.3.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.3.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": "db634db1fd7d5ffafe168a8be3023312ac41fbb12e9eca4dcbee620b3cffef95",
"md5": "708b19c0bb49b4b57f0ae279ac77563c",
"sha256": "9e50165564a905704d185455284a23a769b7f3a44165f6b3fd69713a763285d6"
},
"downloads": -1,
"filename": "netconf_client-3.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "708b19c0bb49b4b57f0ae279ac77563c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 16844,
"upload_time": "2025-07-09T16:22:54",
"upload_time_iso_8601": "2025-07-09T16:22:54.435327Z",
"url": "https://files.pythonhosted.org/packages/db/63/4db1fd7d5ffafe168a8be3023312ac41fbb12e9eca4dcbee620b3cffef95/netconf_client-3.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "73364f95bcce038ad460cd20d98cf662f312a211c2d2233197fc82766b759399",
"md5": "2651ecf3bb2e81854eb14c9a1b79cebb",
"sha256": "3cbc52cf15b016e44f15b173e8b63d1069869099c7c3cae05f5aa4b1db87a7c6"
},
"downloads": -1,
"filename": "netconf_client-3.3.0.tar.gz",
"has_sig": false,
"md5_digest": "2651ecf3bb2e81854eb14c9a1b79cebb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 14768,
"upload_time": "2025-07-09T16:22:55",
"upload_time_iso_8601": "2025-07-09T16:22:55.376164Z",
"url": "https://files.pythonhosted.org/packages/73/36/4f95bcce038ad460cd20d98cf662f312a211c2d2233197fc82766b759399/netconf_client-3.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-09 16:22:55",
"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"
}