Unicon - Universal Connection Library
=====================================
Unicon is a package aiming to provide a unified connection experience to network
devices through typical command-line management interface. By wrapping the
underlying session (eg, telnet, ssh), Unicon provides:
- direct and proxied connections through any common CLI interface (telnet, ssh, serial etc)
- power of expect-like programming without having to deal with low-level logic
- multi-vendor support through an agnostic API interface
- seamless handling of CLI modes (eg, enable, configure, admin-configure mode)
- rejected commands, command error detections
- value-add statful services (specific to the platform)
and is extensible: platform supports and services are implemented via
open-source plugins.
Unicon is the standard, go-to CLI connection implementation for `Cisco pyATS`_
framework.
.. _Cisco pyATS: https://developer.cisco.com/site/pyats/
This package was initially developed internally in Cisco, and is now
release to the general public starting late 2017 through `Cisco DevNet`_.
https://developer.cisco.com/pyats/
.. _Cisco DevNet: https://developer.cisco.com/
Requirements
------------
- Linux/macOS/WSL
- Python 3.4+
Quick Start
-----------
.. code-block:: bash
bash$ pip install unicon
For more information on setting up your Python development environment,
such as creating virtual environment and installing ``pip`` on your system,
please refer to `Virtual Environment and Packages`_ in Python tutorials.
.. _Virtual Environment and Packages: https://docs.python.org/3/tutorial/venv.html
Examples
--------
See example of a Unicon connection usage with Cisco IOS devices at:
https://github.com/CiscoDevNet/pyats-ios-sample
In addition, there is a sample plugin package you can follow to develop Unicon
plugins for new platforms on top of Unicon:
https://github.com/CiscoDevNet/pyats-plugin-examples/tree/master/unicon_plugin_example
Support & Community
-------------------
See https://developer.cisco.com/docs/pyats/#!license-support page for details.
Raw data
{
"_id": null,
"home_page": "https://developer.cisco.com/pyats/",
"name": "unicon",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "unicon connection pyats cisco",
"author": "Cisco Systems Inc.",
"author_email": "pyats-support-ext@cisco.com",
"download_url": null,
"platform": null,
"description": "Unicon - Universal Connection Library\n=====================================\n\nUnicon is a package aiming to provide a unified connection experience to network\ndevices through typical command-line management interface. By wrapping the \nunderlying session (eg, telnet, ssh), Unicon provides:\n\n- direct and proxied connections through any common CLI interface (telnet, ssh, serial etc)\n- power of expect-like programming without having to deal with low-level logic\n- multi-vendor support through an agnostic API interface\n- seamless handling of CLI modes (eg, enable, configure, admin-configure mode)\n- rejected commands, command error detections\n- value-add statful services (specific to the platform)\n\nand is extensible: platform supports and services are implemented via \nopen-source plugins.\n\nUnicon is the standard, go-to CLI connection implementation for `Cisco pyATS`_\nframework.\n\n.. _Cisco pyATS: https://developer.cisco.com/site/pyats/\n\nThis package was initially developed internally in Cisco, and is now \nrelease to the general public starting late 2017 through `Cisco DevNet`_. \n\n https://developer.cisco.com/pyats/\n \n.. _Cisco DevNet: https://developer.cisco.com/\n\n\nRequirements\n------------\n\n- Linux/macOS/WSL\n- Python 3.4+\n\nQuick Start\n-----------\n\n.. code-block:: bash\n\n bash$ pip install unicon\n\n\nFor more information on setting up your Python development environment,\nsuch as creating virtual environment and installing ``pip`` on your system, \nplease refer to `Virtual Environment and Packages`_ in Python tutorials.\n\n.. _Virtual Environment and Packages: https://docs.python.org/3/tutorial/venv.html\n\nExamples\n--------\n\nSee example of a Unicon connection usage with Cisco IOS devices at:\n\n https://github.com/CiscoDevNet/pyats-ios-sample\n\nIn addition, there is a sample plugin package you can follow to develop Unicon\nplugins for new platforms on top of Unicon:\n\n https://github.com/CiscoDevNet/pyats-plugin-examples/tree/master/unicon_plugin_example\n\nSupport & Community\n-------------------\n\nSee https://developer.cisco.com/docs/pyats/#!license-support page for details.\n",
"bugtrack_url": null,
"license": "Apache 2.0",
"summary": "Unicon Connection Library",
"version": "25.7",
"project_urls": {
"Homepage": "https://developer.cisco.com/pyats/"
},
"split_keywords": [
"unicon",
"connection",
"pyats",
"cisco"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "e8b2fbae2fcf3be811edb129ca574734c5b7ecb09eb4fe3ff370949073bff06f",
"md5": "201041692d0a015383b618de86ee386c",
"sha256": "691444e3992c6f4df7aeddcb81c71d263bfc90c3f812911d7a0b2a4dba0793b5"
},
"downloads": -1,
"filename": "unicon-25.7-cp310-cp310-macosx_11_0_universal2.whl",
"has_sig": false,
"md5_digest": "201041692d0a015383b618de86ee386c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 4801132,
"upload_time": "2025-08-12T20:41:39",
"upload_time_iso_8601": "2025-08-12T20:41:39.434034Z",
"url": "https://files.pythonhosted.org/packages/e8/b2/fbae2fcf3be811edb129ca574734c5b7ecb09eb4fe3ff370949073bff06f/unicon-25.7-cp310-cp310-macosx_11_0_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cb965a5229ed6edc567531a27f3eee1d8215fd90137828315f0006e708faadbc",
"md5": "fe4c756ed834b8614c292afb36891888",
"sha256": "4c075c3e355b4cdea66e277636c4a50dd9d6ee0fe3b23d7bd1141ad4f78b4db4"
},
"downloads": -1,
"filename": "unicon-25.7-cp310-cp310-manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "fe4c756ed834b8614c292afb36891888",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 14490398,
"upload_time": "2025-08-12T21:09:10",
"upload_time_iso_8601": "2025-08-12T21:09:10.865182Z",
"url": "https://files.pythonhosted.org/packages/cb/96/5a5229ed6edc567531a27f3eee1d8215fd90137828315f0006e708faadbc/unicon-25.7-cp310-cp310-manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9d006e0db9ce6dab32687a2d4d4baf148b356656d1366b70643078a920cb41cf",
"md5": "dd78325747398fb344d16bfd935ff14d",
"sha256": "a70161706d8456bd1b369bc2f412f71f376fe4128732aad27f9936e1c528837a"
},
"downloads": -1,
"filename": "unicon-25.7-cp310-cp310-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "dd78325747398fb344d16bfd935ff14d",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 13830464,
"upload_time": "2025-08-12T20:41:42",
"upload_time_iso_8601": "2025-08-12T20:41:42.018994Z",
"url": "https://files.pythonhosted.org/packages/9d/00/6e0db9ce6dab32687a2d4d4baf148b356656d1366b70643078a920cb41cf/unicon-25.7-cp310-cp310-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8c3d0654b87fd499e75346e58f93339f1609150f0349e0e73dc3475a549164ef",
"md5": "557c3b58a426a4d741ccb21664605fbc",
"sha256": "171db770039aec48c5d62830b45aa3241c55392065cb8bd29d1b7e1091571ff4"
},
"downloads": -1,
"filename": "unicon-25.7-cp311-cp311-macosx_11_0_universal2.whl",
"has_sig": false,
"md5_digest": "557c3b58a426a4d741ccb21664605fbc",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 5442652,
"upload_time": "2025-08-12T20:41:44",
"upload_time_iso_8601": "2025-08-12T20:41:44.135924Z",
"url": "https://files.pythonhosted.org/packages/8c/3d/0654b87fd499e75346e58f93339f1609150f0349e0e73dc3475a549164ef/unicon-25.7-cp311-cp311-macosx_11_0_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8fcc5f5979e92b8450052c7c67288d32dd2f579bbbc8414fa2d2b605b9b42433",
"md5": "fd1c4c22569377af6b56e9b469cada13",
"sha256": "a328dfee20f50f390764b19d5fd0cfc2f31a227510c185d6bea024ab11eb1ab8"
},
"downloads": -1,
"filename": "unicon-25.7-cp311-cp311-manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "fd1c4c22569377af6b56e9b469cada13",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 16206278,
"upload_time": "2025-08-12T21:09:13",
"upload_time_iso_8601": "2025-08-12T21:09:13.440105Z",
"url": "https://files.pythonhosted.org/packages/8f/cc/5f5979e92b8450052c7c67288d32dd2f579bbbc8414fa2d2b605b9b42433/unicon-25.7-cp311-cp311-manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b3f3ff7b934f363ed45bde4648f795aec2f50bd776b29200d476dfdf9da33f44",
"md5": "278cb624d98574ba7caf3d5ec4aa169d",
"sha256": "f2d7fbb55bf8d05a962f1a11b91a27626b6da958eb108a643f500840814db484"
},
"downloads": -1,
"filename": "unicon-25.7-cp311-cp311-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "278cb624d98574ba7caf3d5ec4aa169d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 14991967,
"upload_time": "2025-08-12T20:41:46",
"upload_time_iso_8601": "2025-08-12T20:41:46.169489Z",
"url": "https://files.pythonhosted.org/packages/b3/f3/ff7b934f363ed45bde4648f795aec2f50bd776b29200d476dfdf9da33f44/unicon-25.7-cp311-cp311-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f799666372e12db0a1a5b81a799354cf5ce0cb62b9c1e3ed9adcea5f2fae29da",
"md5": "105dc93043a8923d44449312dcab6399",
"sha256": "5e9f8bcbac01522e6c9dade20150dc1a3ce5702217526f6265c8c2a06029fa1e"
},
"downloads": -1,
"filename": "unicon-25.7-cp312-cp312-macosx_11_0_universal2.whl",
"has_sig": false,
"md5_digest": "105dc93043a8923d44449312dcab6399",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 5403468,
"upload_time": "2025-08-12T20:41:48",
"upload_time_iso_8601": "2025-08-12T20:41:48.224873Z",
"url": "https://files.pythonhosted.org/packages/f7/99/666372e12db0a1a5b81a799354cf5ce0cb62b9c1e3ed9adcea5f2fae29da/unicon-25.7-cp312-cp312-macosx_11_0_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cfebbdfba518f7ab1d7ea3c7bfda833766fd57dc9032a4d556859d6f0702973f",
"md5": "0a487a968d1e71e779737091bdb57140",
"sha256": "525fc59b770896c6392a2efa6dd99f9cd17e679934e8ac46d333b65f3cd22105"
},
"downloads": -1,
"filename": "unicon-25.7-cp312-cp312-manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "0a487a968d1e71e779737091bdb57140",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 16089666,
"upload_time": "2025-08-12T21:09:16",
"upload_time_iso_8601": "2025-08-12T21:09:16.128117Z",
"url": "https://files.pythonhosted.org/packages/cf/eb/bdfba518f7ab1d7ea3c7bfda833766fd57dc9032a4d556859d6f0702973f/unicon-25.7-cp312-cp312-manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "224cc93ae23ecc29687b0a15f1d40a489803021bd2406920be17a26e53054de1",
"md5": "8c6393bb88a11e17396abe571448526b",
"sha256": "9e70975db010ff48b6244d96540e4320e105339fc09fc59ae4c3fed24fb2e133"
},
"downloads": -1,
"filename": "unicon-25.7-cp312-cp312-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "8c6393bb88a11e17396abe571448526b",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 15006022,
"upload_time": "2025-08-12T20:41:50",
"upload_time_iso_8601": "2025-08-12T20:41:50.126758Z",
"url": "https://files.pythonhosted.org/packages/22/4c/c93ae23ecc29687b0a15f1d40a489803021bd2406920be17a26e53054de1/unicon-25.7-cp312-cp312-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9ca1f2793ed1fe8992eb91599237c421513666095d868061ea5e2d6cf5190b4e",
"md5": "b3d26186a8e7a736a56d6bdf6fcc8275",
"sha256": "f27b49d1430f83a8d5720110ff0d3094b2cc277838eb4cebed52b2dbab35b630"
},
"downloads": -1,
"filename": "unicon-25.7-cp313-cp313-macosx_11_0_universal2.whl",
"has_sig": false,
"md5_digest": "b3d26186a8e7a736a56d6bdf6fcc8275",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 5310428,
"upload_time": "2025-08-12T20:41:52",
"upload_time_iso_8601": "2025-08-12T20:41:52.111838Z",
"url": "https://files.pythonhosted.org/packages/9c/a1/f2793ed1fe8992eb91599237c421513666095d868061ea5e2d6cf5190b4e/unicon-25.7-cp313-cp313-macosx_11_0_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "35c8a517839e0fef56ece54ea853d64bcf82534aecab4de66a47e6d6e9ede7c3",
"md5": "193139e4e4abaa42ca47d55428a65fa3",
"sha256": "de8f1693e215c83f03d49894826c6fe87fe5de8b2fb9844dc04c189e249f7ad1"
},
"downloads": -1,
"filename": "unicon-25.7-cp313-cp313-manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "193139e4e4abaa42ca47d55428a65fa3",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 15962977,
"upload_time": "2025-08-12T21:09:18",
"upload_time_iso_8601": "2025-08-12T21:09:18.840616Z",
"url": "https://files.pythonhosted.org/packages/35/c8/a517839e0fef56ece54ea853d64bcf82534aecab4de66a47e6d6e9ede7c3/unicon-25.7-cp313-cp313-manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "617951a2ef6eb1f01caf56f4f42872cf43322d2f36c70b0cdc321b8c9edd73b2",
"md5": "bc30f30eb2453cec1ae93a0873391d15",
"sha256": "39a9d9ad86204491e203af9b36ffe1dd3f18efca6dc7d24e8f1ed96f689963b2"
},
"downloads": -1,
"filename": "unicon-25.7-cp313-cp313-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "bc30f30eb2453cec1ae93a0873391d15",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 14837310,
"upload_time": "2025-08-12T20:41:54",
"upload_time_iso_8601": "2025-08-12T20:41:54.055893Z",
"url": "https://files.pythonhosted.org/packages/61/79/51a2ef6eb1f01caf56f4f42872cf43322d2f36c70b0cdc321b8c9edd73b2/unicon-25.7-cp313-cp313-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "48d28b695d5801e5eefc0df9c946aa13ddbe9f0acea73a8973e9293cfb48bb2a",
"md5": "56f112f126879bc3470c61384d040795",
"sha256": "2f21930434ab53a698f236aba8ae1d18586aad157aa29d74dd4bd50b014628e4"
},
"downloads": -1,
"filename": "unicon-25.7-cp39-cp39-macosx_11_0_universal2.whl",
"has_sig": false,
"md5_digest": "56f112f126879bc3470c61384d040795",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 4819599,
"upload_time": "2025-08-12T20:41:56",
"upload_time_iso_8601": "2025-08-12T20:41:56.703297Z",
"url": "https://files.pythonhosted.org/packages/48/d2/8b695d5801e5eefc0df9c946aa13ddbe9f0acea73a8973e9293cfb48bb2a/unicon-25.7-cp39-cp39-macosx_11_0_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "594cd302379ac4e1e23383ff5c9cfc56dfc15c4078efda921a1ca6bbe1d6b7ca",
"md5": "ddbc0cf69d94d603ce8a19d07798cb75",
"sha256": "f433bbd8bac1150f224dd2b029e4f8027ba5a422d2a52bd727e3c89b42bbed42"
},
"downloads": -1,
"filename": "unicon-25.7-cp39-cp39-manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "ddbc0cf69d94d603ce8a19d07798cb75",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 14480899,
"upload_time": "2025-08-12T21:09:21",
"upload_time_iso_8601": "2025-08-12T21:09:21.358940Z",
"url": "https://files.pythonhosted.org/packages/59/4c/d302379ac4e1e23383ff5c9cfc56dfc15c4078efda921a1ca6bbe1d6b7ca/unicon-25.7-cp39-cp39-manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e0d08f5bdbb80c200f0a80a2f15ff2b8e33421017e420e3eee4428b6b6657f71",
"md5": "eef18d57aa304034bcf6b4e12f203a48",
"sha256": "2f61a565eb2a3e4b8810d1177864327a9e69726c47e8b10ab25edf26523ad3e4"
},
"downloads": -1,
"filename": "unicon-25.7-cp39-cp39-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "eef18d57aa304034bcf6b4e12f203a48",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 3101665,
"upload_time": "2025-08-12T21:12:59",
"upload_time_iso_8601": "2025-08-12T21:12:59.724486Z",
"url": "https://files.pythonhosted.org/packages/e0/d0/8f5bdbb80c200f0a80a2f15ff2b8e33421017e420e3eee4428b6b6657f71/unicon-25.7-cp39-cp39-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-12 20:41:39",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "unicon"
}