{ "info": { "author": "Cisco Innovation Edge", "author_email": "cisco-ie@cisco.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: System :: Networking", "Topic :: System :: Networking :: Monitoring" ], "description": "# cisco-gnmi-python\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n\nThis library wraps gNMI functionality to ease usage with Cisco implementations in Python programs. Derived from [openconfig/gnmi](https://github.com/openconfig/gnmi/tree/master/proto).\n\n**This is not an officially supported Cisco product.** This library is intended to serve as a gNMI client reference implementation and streamline development with Cisco products.\n\n- [cisco-gnmi-python](#cisco-gnmi-python)\n - [Usage](#usage)\n - [cisco-gnmi CLI](#cisco-gnmi-cli)\n - [ClientBuilder](#clientbuilder)\n - [Initialization Examples](#initialization-examples)\n - [Client](#client)\n - [NXClient](#nxclient)\n - [XEClient](#xeclient)\n - [XRClient](#xrclient)\n - [gNMI](#gnmi)\n - [Development](#development)\n - [Get Source](#get-source)\n - [Code Hygiene](#code-hygiene)\n - [Recompile Protobufs](#recompile-protobufs)\n - [CLI Usage](#cli-usage)\n - [Capabilities](#capabilities)\n - [Usage](#usage-1)\n - [Output](#output)\n - [Get](#get)\n - [Usage](#usage-2)\n - [Output](#output-1)\n - [Set](#set)\n - [Usage](#usage-3)\n - [Output](#output-2)\n - [Subscribe](#subscribe)\n - [Usage](#usage-4)\n - [Output](#output-3)\n - [Licensing](#licensing)\n - [Issues](#issues)\n - [Related Projects](#related-projects)\n\n## Usage\n```bash\npip install cisco-gnmi\npython -c \"import cisco_gnmi; print(cisco_gnmi)\"\ncisco-gnmi --help\n```\n\nThis library covers the gNMI defined `Capabilities`, `Get`, `Set`, and `Subscribe` RPCs, and helper clients provide OS-specific recommendations. A CLI (`cisco-gnmi`) is also available upon installation. As commonalities and differences are identified between OS functionality this library will be refactored as necessary.\n\nSeveral examples of library usage are available in [`examples/`](examples/). The `cisco-gnmi` CLI script found at [`src/cisco_gnmi/cli.py`](src/cisco_gnmi/cli.py) may also be useful.\n\nIt is *highly* recommended that users of the library learn [Google Protocol Buffers](https://developers.google.com/protocol-buffers/) syntax to significantly ease usage. Understanding how to read Protocol Buffers, and reference [`gnmi.proto`](https://github.com/openconfig/gnmi/blob/master/proto/gnmi/gnmi.proto), will be immensely useful for utilizing gNMI and any other gRPC interface.\n\n### cisco-gnmi CLI\nSince `v1.0.5` a gNMI CLI is available as `cisco-gnmi` when this module is installed. `Capabilities`, `Get`, rudimentary `Set`, and `Subscribe` are supported. The CLI may be useful for simply interacting with a Cisco gNMI service, and also serves as a reference for how to use this `cisco_gnmi` library. CLI usage is documented at the bottom of this README in [CLI Usage](#cli-usage).\n\n### ClientBuilder\nSince `v1.0.0` a builder pattern is available with `ClientBuilder`. `ClientBuilder` provides several `set_*` methods which define the intended `Client` connectivity and a `construct` method to construct and return the desired `Client`. There are several major methods involved here:\n\n```\n set_target(...)\n Specifies the network element to build a client for.\n set_os(...)\n Specifies which OS wrapper to deliver.\n set_secure(...)\n Specifies that a secure gRPC channel should be used.\n set_secure_from_file(...)\n Loads certificates from file system for secure gRPC channel.\n set_secure_from_target(...)\n Attempts to utilize available certificate from target for secure gRPC channel.\n set_call_authentication(...)\n Specifies username/password to utilize for authentication.\n set_ssl_target_override(...)\n Sets the gRPC option to override the SSL target name.\n set_channel_option(...)\n Sets a gRPC channel option. Implies knowledge of channel options.\n construct()\n Constructs and returns the built Client.\n```\n\n#### Initialization Examples\n`ClientBuilder` can be chained for initialization or instantiated line-by-line.\n\n```python\nfrom cisco_gnmi import ClientBuilder\n\nbuilder = ClientBuilder('127.0.0.1:9339')\nbuilder.set_os('IOS XR')\nbuilder.set_secure_from_target()\nbuilder.set_call_authentication('admin', 'its_a_secret')\nclient = builder.construct()\n\n# Or...\n\nclient = ClientBuilder('127.0.0.1:9339').set_os('IOS XR').set_secure_from_target().set_call_authentication('admin', 'its_a_secret').construct()\n```\n\nUsing an encrypted channel automatically getting the certificate from the device, quick for testing:\n\n```python\nfrom cisco_gnmi import ClientBuilder\n\nclient = ClientBuilder(\n '127.0.0.1:9339'\n).set_os('IOS XR').set_secure_from_target().set_call_authentication(\n 'admin',\n 'its_a_secret'\n).construct()\n```\n\nUsing an owned root certificate on the filesystem:\n\n```python\nfrom cisco_gnmi import ClientBuilder\n\nclient = ClientBuilder(\n '127.0.0.1:9339'\n).set_os('IOS XR').set_secure_from_file(\n 'ems.pem'\n).set_call_authentication(\n 'admin',\n 'its_a_secret'\n).construct()\n```\n\nPassing certificate content to method:\n\n```python\nfrom cisco_gnmi import ClientBuilder\n\n# Note reading as bytes\nwith open('ems.pem', 'rb') as cert_fd:\n root_cert = cert_fd.read()\n\nclient = ClientBuilder(\n '127.0.0.1:9339'\n).set_os('IOS XR').set_secure(\n root_cert\n).set_call_authentication(\n 'admin',\n 'its_a_secret'\n).construct()\n```\n\nUsage with root certificate, private key, and cert chain:\n\n```python\nfrom cisco_gnmi import ClientBuilder\n\nclient = ClientBuilder(\n '127.0.0.1:9339'\n).set_os('IOS XE').set_secure_from_file(\n root_certificates='rootCA.pem',\n private_key='client.key',\n certificate_chain='client.crt',\n).set_call_authentication(\n 'admin',\n 'its_a_secret'\n).construct()\n```\n\n\n### Client\n`Client` is a very barebones class simply implementing `capabilities`, `get`, `set`, and `subscribe` methods. It provides some context around the expectation for what should be supplied to these RPC functions and helpers for validation.\n\nMethods are documented in [`src/cisco_gnmi/client.py`](src/cisco_gnmi/client.py).\n\n### NXClient\n`NXClient` inherits from `Client` and provides several wrapper methods which aid with NX-OS gNMI implementation usage. These are `subscribe_xpaths`, and the removal of `get` and `set` as they are not yet supported operations. These methods have some helpers and constraints around what is supported by the implementation.\n\nMethods and usage examples are documented in [`src/cisco_gnmi/nx.py`](src/cisco_gnmi/nx.py).\n\n### XEClient\n`XEClient` inherits from `Client` and provides several wrapper methods which aid with IOS XE gNMI implementation usage. These are `delete_xpaths`, `get_xpaths`, `set_json`, and `subscribe_xpaths`. These methods have some helpers and constraints around what is supported by the implementation.\n\nMethods and usage examples are documented in [`src/cisco_gnmi/xe.py`](src/cisco_gnmi/xe.py).\n\n### XRClient\n`XRClient` inherits from `Client` and provides several wrapper methods which aid with IOS XR gNMI implementation usage. These are `delete_xpaths`, `get_xpaths`, `set_json`, and `subscribe_xpaths`. These methods have some helpers and constraints around what is supported by the implementation.\n\nMethods and usage examples are documented in [`src/cisco_gnmi/xr.py`](src/cisco_gnmi/xr.py).\n\n## gNMI\ngRPC Network Management Interface (gNMI) is a service defining an interface for a network management system (NMS) to interact with a network element. It may be thought of as akin to NETCONF or other control protocols which define operations and behaviors. The scope of gNMI is relatively simple - it seeks to \"[[define](https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-specification.md)] a gRPC-based protocol for the modification and retrieval of configuration from a target device, as well as the control and generation of telemetry streams from a target device to a data collection system. The intention is that a single gRPC service definition can cover both configuration and telemetry - allowing a single implementation on the target, as well as a single NMS element to interact with the device via telemetry and configuration RPCs\".\n\ngNMI is a specification developed by [OpenConfig](https://openconfig.net), an operator-driven working-group. It is important to note that gNMI only defines a protocol of behavior - not data models. This is akin to SNMP/MIBs and NETCONF/YANG. SNMP and NETCONF are respectively decoupled from the data itself in MIBs and YANG modules. gNMI is a control protocol, not a standardization of data. OpenConfig does develop standard data models as well, and does have some specialized behavior with OpenConfig originating models, but the data models themselves are out of the scope of gNMI.\n\n## Development\nRequires Python and utilizes `pipenv` for environment management. Manual usage of `pip`/`virtualenv` is not covered. Uses `black` for code formatting and `pylint` for code linting. `black` is not explicitly installed as it requires Python 3.6+.\n\n### Get Source\n```bash\ngit clone https://github.com/cisco-ie/cisco-gnmi-python.git\ncd cisco-gnmi-python\n# If pipenv not installed, install!\npip install --user pipenv\n# Now use Makefile...\nmake setup\n# Or pipenv manually if make not present\npipenv --three install --dev\n# Enter virtual environment\npipenv shell\n# Work work\nexit\n```\n\n### Code Hygiene\nWe use [`black`](https://github.com/ambv/black) for code formatting and [`pylint`](https://www.pylint.org/) for code linting. `hygiene.sh` will run `black` against all of the code under `gnmi/` except for `protoc` compiled protobufs, and run `pylint` against Python files directly under `gnmi/`. They don't totally agree, so we're not looking for perfection here. `black` is not automatically installed due to requiring Python 3.6+. `hygiene.sh` will check for regular path availability and via `pipenv`, and otherwise falls directly to `pylint`. If `black` usage is desired, please install it into `pipenv` if using Python 3.6+ or separate methods e.g. `brew install black`.\n\n```bash\n# If using Python 3.6+\npipenv install --dev black\n# Otherwise...\n./hygiene.sh\n```\n\n### Recompile Protobufs\nIf a new `gnmi.proto` definition is released, use `update_protos.sh` to recompile. If breaking changes are introduced the wrapper library must be updated.\n\n```bash\n./update_protos.sh\n```\n\n## CLI Usage\nThe below details the current `cisco-gnmi` usage options. Please note that `Set` operations may be destructive to operations and should be tested in lab conditions.\n\n```\ncisco-gnmi --help\nusage:\ncisco-gnmi []\n\nSupported RPCs:\ncapabilities\nsubscribe\nget\nset\n\ncisco-gnmi capabilities 127.0.0.1:57500\ncisco-gnmi get 127.0.0.1:57500\ncisco-gnmi set 127.0.0.1:57500 -delete_xpath Cisco-IOS-XR-shellutil-cfg:host-names/host-name\ncisco-gnmi subscribe 127.0.0.1:57500 -debug -auto_ssl_target_override -dump_file intfcounters.proto.txt\n\nSee --help for RPC options.\n\n\ngNMI CLI demonstrating library usage.\n\npositional arguments:\n rpc gNMI RPC to perform against network element.\n\noptional arguments:\n -h, --help show this help message and exit\n```\n\n### Capabilities\nThis command will output the `CapabilitiesResponse` to `stdout`.\n```\ncisco-gnmi capabilities 127.0.0.1:57500 -auto_ssl_target_override\n```\n\n#### Usage\n```\ncisco-gnmi capabilities --help\nusage: cisco-gnmi [-h] [-os {None,IOS XR,NX-OS,IOS XE}]\n [-root_certificates ROOT_CERTIFICATES]\n [-private_key PRIVATE_KEY]\n [-certificate_chain CERTIFICATE_CHAIN]\n [-ssl_target_override SSL_TARGET_OVERRIDE]\n [-auto_ssl_target_override] [-debug]\n netloc\n\nPerforms Capabilities RPC against network element.\n\npositional arguments:\n netloc :\n\noptional arguments:\n -h, --help show this help message and exit\n -os {None,IOS XR,NX-OS,IOS XE}\n OS wrapper to utilize. Defaults to IOS XR.\n -root_certificates ROOT_CERTIFICATES\n Root certificates for secure connection.\n -private_key PRIVATE_KEY\n Private key for secure connection.\n -certificate_chain CERTIFICATE_CHAIN\n Certificate chain for secure connection.\n -ssl_target_override SSL_TARGET_OVERRIDE\n gRPC SSL target override option.\n -auto_ssl_target_override\n Use root_certificates first CN as\n grpc.ssl_target_name_override.\n -debug Print debug messages.\n```\n\n#### Output\n```\n[cisco-gnmi-python] cisco-gnmi capabilities redacted:57500 -auto_ssl_target_override\nUsername: admin\nPassword:\nWARNING:root:Overriding SSL option from certificate could increase MITM susceptibility!\nINFO:root:supported_models {\n name: \"Cisco-IOS-XR-qos-ma-oper\"\n organization: \"Cisco Systems, Inc.\"\n version: \"2019-04-05\"\n}\n...\n```\n\n### Get\nThis command will output the `GetResponse` to `stdout`. `-xpath` may be specified multiple times to specify multiple `Path`s for the `GetRequest`.\n```\ncisco-gnmi get 127.0.0.1:57500 -os \"IOS XR\" -xpath /interfaces/interface/state/counters -auto_ssl_target_override\n```\n\n#### Usage\n```\ncisco-gnmi get --help\nusage: cisco-gnmi [-h] [-xpath XPATH]\n [-encoding {JSON,BYTES,PROTO,ASCII,JSON_IETF}]\n [-data_type {ALL,CONFIG,STATE,OPERATIONAL}] [-dump_json]\n [-os {None,IOS XR,NX-OS,IOS XE}]\n [-root_certificates ROOT_CERTIFICATES]\n [-private_key PRIVATE_KEY]\n [-certificate_chain CERTIFICATE_CHAIN]\n [-ssl_target_override SSL_TARGET_OVERRIDE]\n [-auto_ssl_target_override] [-debug]\n netloc\n\nPerforms Get RPC against network element.\n\npositional arguments:\n netloc :\n\noptional arguments:\n -h, --help show this help message and exit\n -xpath XPATH XPaths to Get.\n -encoding {JSON,BYTES,PROTO,ASCII,JSON_IETF}\n gNMI Encoding.\n -data_type {ALL,CONFIG,STATE,OPERATIONAL}\n gNMI GetRequest DataType\n -dump_json Dump as JSON instead of textual protos.\n -os {None,IOS XR,NX-OS,IOS XE}\n OS wrapper to utilize. Defaults to IOS XR.\n -root_certificates ROOT_CERTIFICATES\n Root certificates for secure connection.\n -private_key PRIVATE_KEY\n Private key for secure connection.\n -certificate_chain CERTIFICATE_CHAIN\n Certificate chain for secure connection.\n -ssl_target_override SSL_TARGET_OVERRIDE\n gRPC SSL target override option.\n -auto_ssl_target_override\n Use root_certificates first CN as\n grpc.ssl_target_name_override.\n -debug Print debug messages.\n```\n\n#### Output\n```\n[cisco-gnmi-python] cisco-gnmi get redacted:57500 -os \"IOS XR\" -xpath /interfaces/interface/state/counters -auto_ssl_target_override\nUsername: admin\nPassword:\nWARNING:root:Overriding SSL option from certificate could increase MITM susceptibility!\nINFO:root:notification {\n timestamp: 1585607100869287743\n update {\n path {\n elem {\n name: \"interfaces\"\n }\n elem {\n name: \"interface\"\n }\n elem {\n name: \"state\"\n }\n elem {\n name: \"counters\"\n }\n }\n val {\n json_ietf_val: \"{\\\"in-unicast-pkts\\\":\\\"0\\\",\\\"in-octets\\\":\\\"0\\\"...\n```\n\n### Set\nPlease note that `Set` operations may be destructive to operations and should be tested in lab conditions. Behavior is not fully validated.\n\n#### Usage\n```\ncisco-gnmi set --help\nusage: cisco-gnmi [-h] [-update_json_config UPDATE_JSON_CONFIG]\n [-replace_json_config REPLACE_JSON_CONFIG]\n [-delete_xpath DELETE_XPATH] [-no_ietf] [-dump_json]\n [-os {None,IOS XR,NX-OS,IOS XE}]\n [-root_certificates ROOT_CERTIFICATES]\n [-private_key PRIVATE_KEY]\n [-certificate_chain CERTIFICATE_CHAIN]\n [-ssl_target_override SSL_TARGET_OVERRIDE]\n [-auto_ssl_target_override] [-debug]\n netloc\n\nPerforms Set RPC against network element.\n\npositional arguments:\n netloc :\n\noptional arguments:\n -h, --help show this help message and exit\n -update_json_config UPDATE_JSON_CONFIG\n JSON-modeled config to apply as an update.\n -replace_json_config REPLACE_JSON_CONFIG\n JSON-modeled config to apply as a replace.\n -delete_xpath DELETE_XPATH\n XPaths to delete.\n -no_ietf JSON is not IETF conformant.\n -dump_json Dump as JSON instead of textual protos.\n -os {None,IOS XR,NX-OS,IOS XE}\n OS wrapper to utilize. Defaults to IOS XR.\n -root_certificates ROOT_CERTIFICATES\n Root certificates for secure connection.\n -private_key PRIVATE_KEY\n Private key for secure connection.\n -certificate_chain CERTIFICATE_CHAIN\n Certificate chain for secure connection.\n -ssl_target_override SSL_TARGET_OVERRIDE\n gRPC SSL target override option.\n -auto_ssl_target_override\n Use root_certificates first CN as\n grpc.ssl_target_name_override.\n -debug Print debug messages.\n```\n\n#### Output\nLet's create a harmless loopback interface based from [`openconfig-interfaces.yang`](https://github.com/openconfig/public/blob/master/release/models/interfaces/openconfig-interfaces.yang).\n\n`config.json`\n```json\n{\n \"openconfig-interfaces:interfaces\": {\n \"interface\": [\n {\n \"name\": \"Loopback9339\"\n }\n ]\n }\n}\n```\n\n```\n[cisco-gnmi-python] cisco-gnmi set redacted:57500 -os \"IOS XR\" -auto_ssl_target_override -update_json_config config.json\nUsername: admin\nPassword:\nWARNING:root:Overriding SSL option from certificate could increase MITM susceptibility!\nINFO:root:response {\n path {\n origin: \"openconfig-interfaces\"\n elem {\n name: \"interfaces\"\n }\n }\n message {\n }\n op: UPDATE\n}\nmessage {\n}\ntimestamp: 1585715036783451369\n```\n\nAnd on IOS XR...a loopback interface!\n```\n...\ninterface Loopback9339\n!\n...\n```\n\n### Subscribe\nThis command will output the `SubscribeResponse` to `stdout` or `-dump_file`. `-xpath` may be specified multiple times to specify multiple `Path`s for the `GetRequest`.\n\n```\ncisco-gnmi subscribe 127.0.0.1:57500 -os \"IOS XR\" -xpath /interfaces/interface/state/counters -auto_ssl_target_override\n```\n\n#### Usage\n```\ncisco-gnmi subscribe --help\nusage: cisco-gnmi [-h] [-xpath XPATH] [-interval INTERVAL]\n [-mode {TARGET_DEFINED,ON_CHANGE,SAMPLE}]\n [-suppress_redundant]\n [-heartbeat_interval HEARTBEAT_INTERVAL]\n [-dump_file DUMP_FILE] [-dump_json] [-sync_stop]\n [-sync_start] [-encoding {JSON,BYTES,PROTO,ASCII,JSON_IETF}]\n [-os {None,IOS XR,NX-OS,IOS XE}]\n [-root_certificates ROOT_CERTIFICATES]\n [-private_key PRIVATE_KEY]\n [-certificate_chain CERTIFICATE_CHAIN]\n [-ssl_target_override SSL_TARGET_OVERRIDE]\n [-auto_ssl_target_override] [-debug]\n netloc\n\nPerforms Subscribe RPC against network element.\n\npositional arguments:\n netloc :\n\noptional arguments:\n -h, --help show this help message and exit\n -xpath XPATH XPath to subscribe to.\n -interval INTERVAL Sample interval in seconds for Subscription. Defaults\n to 10.\n -mode {TARGET_DEFINED,ON_CHANGE,SAMPLE}\n SubscriptionMode for Subscription. Defaults to SAMPLE.\n -suppress_redundant Suppress redundant information in Subscription.\n -heartbeat_interval HEARTBEAT_INTERVAL\n Heartbeat interval in seconds.\n -dump_file DUMP_FILE Filename to dump to. Defaults to stdout.\n -dump_json Dump as JSON instead of textual protos.\n -sync_stop Stop on sync_response.\n -sync_start Start processing messages after sync_response.\n -encoding {JSON,BYTES,PROTO,ASCII,JSON_IETF}\n gNMI Encoding. Defaults to whatever Client wrapper\n prefers.\n -os {None,IOS XR,NX-OS,IOS XE}\n OS wrapper to utilize. Defaults to IOS XR.\n -root_certificates ROOT_CERTIFICATES\n Root certificates for secure connection.\n -private_key PRIVATE_KEY\n Private key for secure connection.\n -certificate_chain CERTIFICATE_CHAIN\n Certificate chain for secure connection.\n -ssl_target_override SSL_TARGET_OVERRIDE\n gRPC SSL target override option.\n -auto_ssl_target_override\n Use root_certificates first CN as\n grpc.ssl_target_name_override.\n -debug Print debug messages.\n```\n\n#### Output\n```\n[cisco-gnmi-python] cisco-gnmi subscribe redacted:57500 -os \"IOS XR\" -xpath /interfaces/interface/state/counters -auto_ssl_target_override\nUsername: admin\nPassword:\nWARNING:root:Overriding SSL option from certificate could increase MITM susceptibility!\nINFO:root:Dumping responses to stdout as textual proto ...\nINFO:root:Subscribing to:\n/interfaces/interface/state/counters\nINFO:root:update {\n timestamp: 1585607768601000000\n prefix {\n origin: \"openconfig\"\n elem {\n name: \"interfaces\"\n }\n elem {\n name: \"interface\"\n key {\n key: \"name\"\n value: \"Null0\"\n }\n }\n elem {\n name: \"state\"\n }\n elem {\n name: \"counters\"\n }\n }\n update {\n path {\n elem {\n name: \"in-octets\"\n }\n }\n val {\n uint_val: 0\n }\n }\n...\n```\n\n## Licensing\n`cisco-gnmi-python` is licensed as [Apache License, Version 2.0](LICENSE).\n\n## Issues\nOpen an issue :)\n\n## Related Projects\n1. [openconfig/gnmi](https://github.com/openconfig/gnmi)\n2. [google/gnxi](https://github.com/google/gnxi)\n3. [Telegraf Cisco gNMI Plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/cisco_telemetry_gnmi)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/cisco-ie/cisco-gnmi-python", "keywords": "", "license": "Apache License (2.0)", "maintainer": "Cisco Innovation Edge", "maintainer_email": "cisco-ie@cisco.com", "name": "cisco-gnmi", "package_url": "https://pypi.org/project/cisco-gnmi/", "platform": "", "project_url": "https://pypi.org/project/cisco-gnmi/", "project_urls": { "Code": "https://github.com/cisco-ie/cisco-gnmi-python", "Homepage": "https://github.com/cisco-ie/cisco-gnmi-python", "Issue Tracker": "https://github.com/cisco-ie/cisco-gnmi-python/issues" }, "release_url": "https://pypi.org/project/cisco-gnmi/1.0.15/", "requires_dist": [ "grpcio", "protobuf", "six", "cryptography", "grpcio-tools ; extra == 'dev'", "googleapis-common-protos ; extra == 'dev'", "pylint ; extra == 'dev'", "twine ; extra == 'dev'", "setuptools ; extra == 'dev'", "wheel ; extra == 'dev'", "pytest ; extra == 'dev'", "pytest-cov ; extra == 'dev'", "pytest-mock ; extra == 'dev'", "coverage ; extra == 'dev'" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "summary": "This library wraps gNMI functionality to ease usage with Cisco implementations.", "version": "1.0.15", "yanked": false, "yanked_reason": null }, "last_serial": 9939421, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "fa7219c52c906d3f421bc24891458abf", "sha256": "79daf5eaa22feaed3b79ddec58569ebd8082b1f619eefa5772a3b36489fd91af" }, "downloads": -1, "filename": "cisco_gnmi-0.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "fa7219c52c906d3f421bc24891458abf", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 29975, "upload_time": "2019-09-09T21:38:28", "upload_time_iso_8601": "2019-09-09T21:38:28.152984Z", "url": "https://files.pythonhosted.org/packages/6f/01/f6879484808dc3465752f3ce3a32ae4f6d7af1f015c85cf632f19cc596fe/cisco_gnmi-0.0.2-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a459a89a2b8f1c56fa96f35ec7d3c496", "sha256": "93daa0a6029a49177ffad7b6a80125c51706f4b8708a41cd6b6024b3f6fd03d7" }, "downloads": -1, "filename": "cisco_gnmi-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a459a89a2b8f1c56fa96f35ec7d3c496", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 29973, "upload_time": "2019-09-09T21:38:30", "upload_time_iso_8601": "2019-09-09T21:38:30.014781Z", "url": "https://files.pythonhosted.org/packages/7b/4f/b93e63b480ea46f53abd1f008b8065d176c1d5c236fd1f6cdd3de9129851/cisco_gnmi-0.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9ca8c924dd049c5504cc683da0475b02", "sha256": "7385b701d4e9ab98f3c152f668c924eb72424d88af920df0d0ecab9b29617a7f" }, "downloads": -1, "filename": "cisco_gnmi-0.0.2.tar.gz", "has_sig": false, "md5_digest": "9ca8c924dd049c5504cc683da0475b02", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 24333, "upload_time": "2019-09-09T21:38:31", "upload_time_iso_8601": "2019-09-09T21:38:31.718487Z", "url": "https://files.pythonhosted.org/packages/68/33/d3fbf0a62d11823b2b6f55ce2f93e2941397a01ebc5d4e9654bb17c926ee/cisco_gnmi-0.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.11": [ { "comment_text": "", "digests": { "md5": "aeef86d408ed2032bc7b59cb88ae61ed", "sha256": "eb0125af4b686ab1fc2eb3538248603f2918962451ae80a527ad444cfc7c25b7" }, "downloads": -1, "filename": "cisco_gnmi-1.0.11-py2-none-any.whl", "has_sig": false, "md5_digest": "aeef86d408ed2032bc7b59cb88ae61ed", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 52235, "upload_time": "2020-07-08T22:22:31", "upload_time_iso_8601": "2020-07-08T22:22:31.673328Z", "url": "https://files.pythonhosted.org/packages/7d/ae/5918aba53cb1a5a2609842de63088bba2052d07096bd21a632c9f50984dd/cisco_gnmi-1.0.11-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "cbcdbacaff466528d178492ff1335a8a", "sha256": "89e964476dd638a8a40ef1b98ff9e88ef1dabc71e2429c0dbb8dc444f33f4cdf" }, "downloads": -1, "filename": "cisco_gnmi-1.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "cbcdbacaff466528d178492ff1335a8a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 52235, "upload_time": "2020-07-08T22:22:33", "upload_time_iso_8601": "2020-07-08T22:22:33.196384Z", "url": "https://files.pythonhosted.org/packages/55/01/c460bb12314ff0eb773ccbd9cfd55707cd4ad45aec6f16212de9cad4295b/cisco_gnmi-1.0.11-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c06e92580887205879b80c08433d9051", "sha256": "92f3f31b3187b77037761ca0eeb448b762483ac49ce645f0515db39de48fadb1" }, "downloads": -1, "filename": "cisco_gnmi-1.0.11.tar.gz", "has_sig": false, "md5_digest": "c06e92580887205879b80c08433d9051", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 43441, "upload_time": "2020-07-08T22:22:34", "upload_time_iso_8601": "2020-07-08T22:22:34.429297Z", "url": "https://files.pythonhosted.org/packages/36/ea/f581f89c87e73ea5498aa69e59ddb45b31ff8a320c1676537faceada3a03/cisco_gnmi-1.0.11.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.12": [ { "comment_text": "", "digests": { "md5": "81465a777d8f1e0e1ae9b6a6c2fb8695", "sha256": "e2978a2196ff37f580836f494a9bb0ffa8412fe6e3399107efc918c2d682d9d1" }, "downloads": -1, "filename": "cisco_gnmi-1.0.12-py2-none-any.whl", "has_sig": false, "md5_digest": "81465a777d8f1e0e1ae9b6a6c2fb8695", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 52634, "upload_time": "2020-07-17T22:31:59", "upload_time_iso_8601": "2020-07-17T22:31:59.276662Z", "url": "https://files.pythonhosted.org/packages/d0/63/55a850afa920ddd1a8bdf72dabbfef92c67e7ccfbedc2763e94d07479d31/cisco_gnmi-1.0.12-py2-none-any.whl", "yanked": true, "yanked_reason": "Breaks client usage of XPath calls." }, { "comment_text": "", "digests": { "md5": "e95102eab2b0cb0982288660c9df90bb", "sha256": "441fc751b586023983886d9b8fc8f89e2b4803c58162c41f798fe60db291a468" }, "downloads": -1, "filename": "cisco_gnmi-1.0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "e95102eab2b0cb0982288660c9df90bb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 52634, "upload_time": "2020-07-17T22:32:00", "upload_time_iso_8601": "2020-07-17T22:32:00.878782Z", "url": "https://files.pythonhosted.org/packages/31/f8/29d5e0c488999ac74c5de20b0ec19e2921b297ed80eede5d8ed61ac16938/cisco_gnmi-1.0.12-py3-none-any.whl", "yanked": true, "yanked_reason": "Breaks client usage of XPath calls." }, { "comment_text": "", "digests": { "md5": "3d9ba77b8a4bfdc6597e4db5b45591d2", "sha256": "b5e177505ab8a2a0b439e4a2f61dd51c0e2456ac6e1ae0c4d64bcbdac76a8134" }, "downloads": -1, "filename": "cisco_gnmi-1.0.12.tar.gz", "has_sig": false, "md5_digest": "3d9ba77b8a4bfdc6597e4db5b45591d2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 43511, "upload_time": "2020-07-17T22:32:02", "upload_time_iso_8601": "2020-07-17T22:32:02.241219Z", "url": "https://files.pythonhosted.org/packages/df/5d/ba34df72190411c5007d545398c45387a30ce22055e3fad72ba30bf61ea4/cisco_gnmi-1.0.12.tar.gz", "yanked": true, "yanked_reason": "Breaks client usage of XPath calls." } ], "1.0.13": [ { "comment_text": "", "digests": { "md5": "921f1d09ac2c41e149674d3d7d7474f7", "sha256": "68dd74fece10e0c064f2b10b8d33d1dfd4d759a6f8f0af98c30dcef221cfbf90" }, "downloads": -1, "filename": "cisco_gnmi-1.0.13-py2-none-any.whl", "has_sig": false, "md5_digest": "921f1d09ac2c41e149674d3d7d7474f7", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 52650, "upload_time": "2020-07-17T23:02:25", "upload_time_iso_8601": "2020-07-17T23:02:25.532010Z", "url": "https://files.pythonhosted.org/packages/de/df/81a64c6fa388f7edcf5f197eb895d6bc72eb2f6594ec53879df929a7732d/cisco_gnmi-1.0.13-py2-none-any.whl", "yanked": true, "yanked_reason": "Broke YANG Suite" }, { "comment_text": "", "digests": { "md5": "01359d2e7f6842bc7b6c6e1113f2e30a", "sha256": "fdc52e6b44997e28579f0a483bfe6cb304142b918f5fbb371f50348d0f7e064d" }, "downloads": -1, "filename": "cisco_gnmi-1.0.13-py3-none-any.whl", "has_sig": false, "md5_digest": "01359d2e7f6842bc7b6c6e1113f2e30a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 52650, "upload_time": "2020-07-17T23:02:26", "upload_time_iso_8601": "2020-07-17T23:02:26.930997Z", "url": "https://files.pythonhosted.org/packages/65/fd/76871420d0156b80b8654eb1bf6d88934726f304a9818151219fc08cc691/cisco_gnmi-1.0.13-py3-none-any.whl", "yanked": true, "yanked_reason": "Broke YANG Suite" }, { "comment_text": "", "digests": { "md5": "33f92e6cc0c88326061b6ed99430b1c0", "sha256": "fadf51d46dcb6a6b9c8493c6041a986723eac7dd9be7a88c3700fe2e2c83dca2" }, "downloads": -1, "filename": "cisco_gnmi-1.0.13.tar.gz", "has_sig": false, "md5_digest": "33f92e6cc0c88326061b6ed99430b1c0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 43496, "upload_time": "2020-07-17T23:02:28", "upload_time_iso_8601": "2020-07-17T23:02:28.285346Z", "url": "https://files.pythonhosted.org/packages/06/e0/38c53e6b226853c81e52c5d8bd30c3927e9f604d7c004aecc843df531876/cisco_gnmi-1.0.13.tar.gz", "yanked": true, "yanked_reason": "Broke YANG Suite" } ], "1.0.14": [ { "comment_text": "", "digests": { "md5": "8288c3bce69c30f3db06d00455b4a63d", "sha256": "eea1ff50de674b92dc13a58aa1729989731027df32498dfb917ec1f391826a55" }, "downloads": -1, "filename": "cisco_gnmi-1.0.14-py3-none-any.whl", "has_sig": false, "md5_digest": "8288c3bce69c30f3db06d00455b4a63d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 52716, "upload_time": "2020-12-02T18:04:54", "upload_time_iso_8601": "2020-12-02T18:04:54.931239Z", "url": "https://files.pythonhosted.org/packages/2c/71/788c296b3d2faa6de1ae6dd809dba9efe318a9d80ebcda7eccb3336f3418/cisco_gnmi-1.0.14-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ebf69ce4ad2f686fbe492d64978e8938", "sha256": "b549fae63db07d802fa01530b5abbc979f44c53eba5c4595d2c076b791ba8e67" }, "downloads": -1, "filename": "cisco_gnmi-1.0.14.tar.gz", "has_sig": false, "md5_digest": "ebf69ce4ad2f686fbe492d64978e8938", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 42405, "upload_time": "2020-12-02T18:04:56", "upload_time_iso_8601": "2020-12-02T18:04:56.284453Z", "url": "https://files.pythonhosted.org/packages/a7/63/9dcad5ab869abd994e08f0f9662fef24a0f07e1ad20d3e436fe260c1c9a1/cisco_gnmi-1.0.14.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.15": [ { "comment_text": "", "digests": { "md5": "a156c8a69cbd11262f5bcd62e97cfafe", "sha256": "5384532d3145b8e348cbdf9d75b24d0a2619b5ba7f406e454400c9c67ff24ccb" }, "downloads": -1, "filename": "cisco_gnmi-1.0.15-py3-none-any.whl", "has_sig": false, "md5_digest": "a156c8a69cbd11262f5bcd62e97cfafe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 52771, "upload_time": "2021-03-31T19:38:11", "upload_time_iso_8601": "2021-03-31T19:38:11.874887Z", "url": "https://files.pythonhosted.org/packages/22/12/cea66e47a1f96c2b60ecc0805b6eb518a65351ae3c1f63b11a4b397ddcd5/cisco_gnmi-1.0.15-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4220368e714310bd0880cee96144bbc6", "sha256": "cab322f50095b11b2fed2a16e18b9ca3f772da978e9862be7692ca9bd2bcfd71" }, "downloads": -1, "filename": "cisco_gnmi-1.0.15.tar.gz", "has_sig": false, "md5_digest": "4220368e714310bd0880cee96144bbc6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 42433, "upload_time": "2021-03-31T19:38:13", "upload_time_iso_8601": "2021-03-31T19:38:13.159052Z", "url": "https://files.pythonhosted.org/packages/b4/f4/f63613d50e46562a3d06405e904caed82ae310d562b8df2f34cbe58d639d/cisco_gnmi-1.0.15.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "44b11b4f0e6f40460cfeb8878cab3ab1", "sha256": "c92064ddb625ea2c8362938245bc44678b25823c5d36bd1ee848d20806e39953" }, "downloads": -1, "filename": "cisco_gnmi-1.0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "44b11b4f0e6f40460cfeb8878cab3ab1", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 42232, "upload_time": "2019-10-26T01:00:08", "upload_time_iso_8601": "2019-10-26T01:00:08.538366Z", "url": "https://files.pythonhosted.org/packages/80/6e/8ff9b446fc2a0d63833721de92dfd991d745a3f2cc136e1c40db2d47c048/cisco_gnmi-1.0.3-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "702d8a18e4555901fc9fda406597d277", "sha256": "ffaa11974aa7a92ee6f87ba7bef5026213f82a0b1a12293e93c1a20a6c367106" }, "downloads": -1, "filename": "cisco_gnmi-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "702d8a18e4555901fc9fda406597d277", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 42231, "upload_time": "2019-10-26T01:00:10", "upload_time_iso_8601": "2019-10-26T01:00:10.430786Z", "url": "https://files.pythonhosted.org/packages/41/a5/855fe965b62923ecdb00e8438b062d78c1a249d45e395984547bf9cb8c43/cisco_gnmi-1.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "90bc5f551e9bee9c6d9e3fb9a5731a90", "sha256": "03346d246885bc153ad781c32faa3216fc122a32f2c53e3a4961767c7ca747e7" }, "downloads": -1, "filename": "cisco_gnmi-1.0.3.tar.gz", "has_sig": false, "md5_digest": "90bc5f551e9bee9c6d9e3fb9a5731a90", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 33099, "upload_time": "2019-10-26T01:00:12", "upload_time_iso_8601": "2019-10-26T01:00:12.360962Z", "url": "https://files.pythonhosted.org/packages/9c/b5/f42eb56113fbe7669711a4427c2d8f5ea0097e381222523950d0f5fac837/cisco_gnmi-1.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "f86ff2984e8dc426b3a6f4c579fa5f02", "sha256": "7a2529f40ee21d4aea789bd13399be400baa127f2098ba6552301b8f1b7b00dd" }, "downloads": -1, "filename": "cisco_gnmi-1.0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "f86ff2984e8dc426b3a6f4c579fa5f02", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 42462, "upload_time": "2019-12-19T16:32:56", "upload_time_iso_8601": "2019-12-19T16:32:56.421041Z", "url": "https://files.pythonhosted.org/packages/5d/7b/ae4e8a3ff6f10fbf695993ef7b2f20664f1d5950d0427a185d615d773c57/cisco_gnmi-1.0.4-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5ffc60d7a7aa8936e85c922db24322ba", "sha256": "7ff01b9c42d205badca3f3f4a4c6d039377674acaee8af55a37d80656e0dd3eb" }, "downloads": -1, "filename": "cisco_gnmi-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "5ffc60d7a7aa8936e85c922db24322ba", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 42461, "upload_time": "2019-12-19T16:32:58", "upload_time_iso_8601": "2019-12-19T16:32:58.506784Z", "url": "https://files.pythonhosted.org/packages/6e/e1/934804a667b5a40d9894cd0537e5539922197876dcf8cd71968811e712d5/cisco_gnmi-1.0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3734aa207a7811905074eafe9185abf1", "sha256": "2bc1dbba759246ce9bb49f510522141b577f29b6152e72185afd6fb4e9ae76e1" }, "downloads": -1, "filename": "cisco_gnmi-1.0.4.tar.gz", "has_sig": false, "md5_digest": "3734aa207a7811905074eafe9185abf1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 33356, "upload_time": "2019-12-19T16:33:00", "upload_time_iso_8601": "2019-12-19T16:33:00.556481Z", "url": "https://files.pythonhosted.org/packages/7b/0c/aef31d35d9d35307f22eb1c72283094ff8fb910ba80838882faf4ac12b87/cisco_gnmi-1.0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "1b3e22eb7413103a31e9ed1c7d8c7189", "sha256": "740931d017aed929ab1c47d6994279049df29d5473cf1d8b7bfafceedf811bb7" }, "downloads": -1, "filename": "cisco_gnmi-1.0.5-py2-none-any.whl", "has_sig": false, "md5_digest": "1b3e22eb7413103a31e9ed1c7d8c7189", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 48600, "upload_time": "2020-04-01T17:13:25", "upload_time_iso_8601": "2020-04-01T17:13:25.564988Z", "url": "https://files.pythonhosted.org/packages/a5/24/cd152b7ba84c9acd3546c30daaa6a6c2a27d97b7e3d4215fd8f03d45fcfc/cisco_gnmi-1.0.5-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ff03536b1594fe088bdb471007eaa1a7", "sha256": "de330953798d9cc14d4d457a9732e5ea2e64bf69d5015c9ca3252e69bd1655bd" }, "downloads": -1, "filename": "cisco_gnmi-1.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "ff03536b1594fe088bdb471007eaa1a7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 48598, "upload_time": "2020-04-01T17:13:27", "upload_time_iso_8601": "2020-04-01T17:13:27.057973Z", "url": "https://files.pythonhosted.org/packages/aa/4c/b68e06ac06e13aa52646caf02155db31008aa210342a63157ffd335c7e1c/cisco_gnmi-1.0.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a6a41d70a22822091e68a7f14451ff73", "sha256": "afed86c95f25fee52c94d22baa58504997f731d0af8faddb6ca00a10f327bd4a" }, "downloads": -1, "filename": "cisco_gnmi-1.0.5.tar.gz", "has_sig": false, "md5_digest": "a6a41d70a22822091e68a7f14451ff73", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 41236, "upload_time": "2020-04-01T17:13:28", "upload_time_iso_8601": "2020-04-01T17:13:28.208786Z", "url": "https://files.pythonhosted.org/packages/9e/45/144b850fcf416997d65600aa3a87d03595eaac0c0d04e8e13acd07c808d8/cisco_gnmi-1.0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "093ea84a15e83061975d933c4e6e20d7", "sha256": "5545d3d928aa5d9260e5239f08e899a712633aa79cf849ac13a272f19809ca93" }, "downloads": -1, "filename": "cisco_gnmi-1.0.6-py2-none-any.whl", "has_sig": false, "md5_digest": "093ea84a15e83061975d933c4e6e20d7", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 50020, "upload_time": "2020-04-16T23:13:12", "upload_time_iso_8601": "2020-04-16T23:13:12.495492Z", "url": "https://files.pythonhosted.org/packages/87/12/5b37ca0554915c045a09b01be8bee77c4b7bba5a761941541464489869e5/cisco_gnmi-1.0.6-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4c4dd57af224d19e17f53fb2149ceac7", "sha256": "b20e617bdfddb28b1fd72562adef0e8d63740f30ea21724171db7c75a1a082a5" }, "downloads": -1, "filename": "cisco_gnmi-1.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "4c4dd57af224d19e17f53fb2149ceac7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 50019, "upload_time": "2020-04-16T23:13:14", "upload_time_iso_8601": "2020-04-16T23:13:14.076315Z", "url": "https://files.pythonhosted.org/packages/43/b7/5919f506148ff25f8853c9084fc76517d77ef8d5fd4fe8abde4e59dbd250/cisco_gnmi-1.0.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "17900919c9da5010f32ace3eb2fa743a", "sha256": "930e43d98963742d29de0db1c9d584ebd30be3396ae46af22919b0fa722d3219" }, "downloads": -1, "filename": "cisco_gnmi-1.0.6.tar.gz", "has_sig": false, "md5_digest": "17900919c9da5010f32ace3eb2fa743a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 41420, "upload_time": "2020-04-16T23:13:15", "upload_time_iso_8601": "2020-04-16T23:13:15.119867Z", "url": "https://files.pythonhosted.org/packages/14/e9/ca5b7d3219af0420138c046cf47df6d180bb173e1ba37c3eb67454483be5/cisco_gnmi-1.0.6.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "df17adf83f9a87ee360fc79c73ba6cdc", "sha256": "b12e6534981d52e3505248d055f8ebec93962154dd4c4edefdf03d1bde2eae72" }, "downloads": -1, "filename": "cisco_gnmi-1.0.7-py2-none-any.whl", "has_sig": false, "md5_digest": "df17adf83f9a87ee360fc79c73ba6cdc", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 50095, "upload_time": "2020-04-17T23:19:44", "upload_time_iso_8601": "2020-04-17T23:19:44.158305Z", "url": "https://files.pythonhosted.org/packages/8d/48/835d46c0b9141ac7861623ddc5c5e9e0db53d579875f1703a6e59eb63924/cisco_gnmi-1.0.7-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3bcedc32af35293bd3d111a68fd94cf0", "sha256": "9a7328d3a29c342af8725e611b41b89257f5072d12cbf7ee6765b0b0586d80f6" }, "downloads": -1, "filename": "cisco_gnmi-1.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "3bcedc32af35293bd3d111a68fd94cf0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 50094, "upload_time": "2020-04-17T23:19:45", "upload_time_iso_8601": "2020-04-17T23:19:45.825996Z", "url": "https://files.pythonhosted.org/packages/c6/eb/dbdf18ac46793bcd753dcdcb6d1c494a94f248c6bd13fd10123dad491e8e/cisco_gnmi-1.0.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7e88fe6f6511862827a27ade4321da7d", "sha256": "b2e7228e5d7b9daea84e04b97e9751f54f341a1d3ca2210447c06369e0796112" }, "downloads": -1, "filename": "cisco_gnmi-1.0.7.tar.gz", "has_sig": false, "md5_digest": "7e88fe6f6511862827a27ade4321da7d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 41547, "upload_time": "2020-04-17T23:19:47", "upload_time_iso_8601": "2020-04-17T23:19:47.018253Z", "url": "https://files.pythonhosted.org/packages/41/58/a685432ff3aeea8a9c482dbcb09b7e04fb5d6e452e5145476c5d05f1f314/cisco_gnmi-1.0.7.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "5ba1e3f403a69370405b00b478cdb1c3", "sha256": "92c0c6d9ceb5f7ceafbb772a278b4d3137f0bc812995e1b6d0ebdd28ea8cb91f" }, "downloads": -1, "filename": "cisco_gnmi-1.0.8-py2-none-any.whl", "has_sig": false, "md5_digest": "5ba1e3f403a69370405b00b478cdb1c3", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 50336, "upload_time": "2020-05-01T00:03:31", "upload_time_iso_8601": "2020-05-01T00:03:31.219551Z", "url": "https://files.pythonhosted.org/packages/62/d5/c2f481c69850a9b46d641813e920bcf44290e0d52d6c26aaeb6c8170228a/cisco_gnmi-1.0.8-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "721de91eaf47b469a1d3e66b84e30da8", "sha256": "aeb1ac017a68e69e40364a0966dbe93f28b703f59c0e1163cec6aa69f3bad665" }, "downloads": -1, "filename": "cisco_gnmi-1.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "721de91eaf47b469a1d3e66b84e30da8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 50334, "upload_time": "2020-05-01T00:03:32", "upload_time_iso_8601": "2020-05-01T00:03:32.521154Z", "url": "https://files.pythonhosted.org/packages/af/7c/062c2326c4e72e37aa03f9ebb51f19872d8be6b9abb41cf6442dcca34f9e/cisco_gnmi-1.0.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4f15f073b136b333b993ddb12e9c1cca", "sha256": "13ba51ba61dc08ae18ae4caad27c15df13d7e43ba57d0d4680949ac60c83c4ee" }, "downloads": -1, "filename": "cisco_gnmi-1.0.8.tar.gz", "has_sig": false, "md5_digest": "4f15f073b136b333b993ddb12e9c1cca", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 41672, "upload_time": "2020-05-01T00:03:33", "upload_time_iso_8601": "2020-05-01T00:03:33.910821Z", "url": "https://files.pythonhosted.org/packages/1b/04/6f5fa14212be3272f81a246c7f3d75f23ff1fea87153150791d8345223d6/cisco_gnmi-1.0.8.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.9": [ { "comment_text": "", "digests": { "md5": "45af07168c5974f97252540721f2cffc", "sha256": "d0665fc9d72d0bfd5861bb8ff0f394806c14d3295a4724111851cd641f824a5c" }, "downloads": -1, "filename": "cisco_gnmi-1.0.9-py2-none-any.whl", "has_sig": false, "md5_digest": "45af07168c5974f97252540721f2cffc", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 50655, "upload_time": "2020-05-27T16:25:36", "upload_time_iso_8601": "2020-05-27T16:25:36.200785Z", "url": "https://files.pythonhosted.org/packages/da/53/85e7b47282d2bb6fb978008d97107b7bf397ae15e7837e57f1ea3ea87732/cisco_gnmi-1.0.9-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e58b4f9442c7cfeb47be9d25861cf13d", "sha256": "f4dcbc83cb036ece1e5c9c2036648d5828b0b43c4d7e9ebb9a205ac77dbc863d" }, "downloads": -1, "filename": "cisco_gnmi-1.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "e58b4f9442c7cfeb47be9d25861cf13d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 50657, "upload_time": "2020-05-27T16:25:37", "upload_time_iso_8601": "2020-05-27T16:25:37.725202Z", "url": "https://files.pythonhosted.org/packages/ea/e1/50711def8685ce3de532ee5c9ae76c89325d90c0979ea1c495f595f09632/cisco_gnmi-1.0.9-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "06bd3ae1872b54c60989c705759b43b2", "sha256": "7e4ada6d9c7dbcb06d876b192a99e533a0a16caa66b4306f4c460354d55401ec" }, "downloads": -1, "filename": "cisco_gnmi-1.0.9.tar.gz", "has_sig": false, "md5_digest": "06bd3ae1872b54c60989c705759b43b2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 41964, "upload_time": "2020-05-27T16:25:39", "upload_time_iso_8601": "2020-05-27T16:25:39.042340Z", "url": "https://files.pythonhosted.org/packages/c4/39/6dec3c65a9e0ef5a6debc1a684af19a4b82cf5fbe022126c321537151ce5/cisco_gnmi-1.0.9.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a156c8a69cbd11262f5bcd62e97cfafe", "sha256": "5384532d3145b8e348cbdf9d75b24d0a2619b5ba7f406e454400c9c67ff24ccb" }, "downloads": -1, "filename": "cisco_gnmi-1.0.15-py3-none-any.whl", "has_sig": false, "md5_digest": "a156c8a69cbd11262f5bcd62e97cfafe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 52771, "upload_time": "2021-03-31T19:38:11", "upload_time_iso_8601": "2021-03-31T19:38:11.874887Z", "url": "https://files.pythonhosted.org/packages/22/12/cea66e47a1f96c2b60ecc0805b6eb518a65351ae3c1f63b11a4b397ddcd5/cisco_gnmi-1.0.15-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4220368e714310bd0880cee96144bbc6", "sha256": "cab322f50095b11b2fed2a16e18b9ca3f772da978e9862be7692ca9bd2bcfd71" }, "downloads": -1, "filename": "cisco_gnmi-1.0.15.tar.gz", "has_sig": false, "md5_digest": "4220368e714310bd0880cee96144bbc6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 42433, "upload_time": "2021-03-31T19:38:13", "upload_time_iso_8601": "2021-03-31T19:38:13.159052Z", "url": "https://files.pythonhosted.org/packages/b4/f4/f63613d50e46562a3d06405e904caed82ae310d562b8df2f34cbe58d639d/cisco_gnmi-1.0.15.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }