{ "info": { "author": "Kiran Kumar Kotari", "author_email": "kotarikirankumar@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Build Tools" ], "description": "# Show Configuration Parser (shconfparser)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Build Status](https://travis-ci.org/network-tools/shconfparser.svg?branch=master)](https://travis-ci.org/network-tools/shconfparser)\n[![Coverage Status](https://coveralls.io/repos/github/network-tools/shconfparser/badge.svg?branch=master)](https://coveralls.io/github/network-tools/shconfparser?branch=master)\n[![Downloads](https://pepy.tech/badge/shconfparser)](https://pepy.tech/project/shconfparser)\n[![GitHub issues open](https://img.shields.io/github/issues/network-tools/shconfparser.svg?)](https://github.com/network-tools/shconfparser/issues)\n[![Known Vulnerabilities](https://snyk.io/test/github/network-tools/shconfparser/badge.svg?targetFile=requirements.txt)](https://snyk.io/test/github/network-tools/shconfparser?targetFile=requirements.txt)\n\n- [Introduction](#introduction)\n- [Docs](#docs)\n- [Pre-requisites](#pre-requisites)\n- [Installation and Downloads](#installation-and-downloads)\n- [FAQ](#faq)\n- [Other Resources](#other-resources)\n- [Bug Tracker and Support](#bug-tracker-and-support)\n- [Unit-Tests](#unit-tests)\n- [License and Copyright](#license-and-copyright)\n- [Author and Thanks](#author-and-thanks)\n\n## Introduction\n\nShow configuration parser i.e. shconfparser is a Python library, whcih parser Network configurations. \nThis library examines the config and breaks it into a set of parent and clild relationships.\n\nshconfparser is a vendor independent library where you can parse the following formats:\n\n- Tree structure *`i.e. show running`*\n- Table structure *`i.e. show ip interface`*\n- Data *`i.e. show version`*\n\nTree Structure\n\n![show run to tree structure](https://raw.githubusercontent.com/kirankotari/shconfparser/master/asserts/img/sh_run.png)\n\nTable Structure\n\n![show cdp neighbour to table structure](https://raw.githubusercontent.com/kirankotari/shconfparser/master/asserts/img/sh_cdp_neighbor.png)\n\n## Docs\n\nHow to use shconfparser?\n\n- How to split show commands from a file\n\n```python\n>>> from shconfparser.parser import Parser\n>>> from os import path\n>>> file_path = path.abspath('data/shcommands.txt')\n>>> p = Parser()\n>>> data = p.read(file_path) # read file content\n>>> data = p.split(data) # split each show commands and it's data\n>>> data.keys()\n```\n\n```python\nodict_keys(['running', 'version', 'cdp_neighbors', 'ip_interface_brief']) # keys\n```\n\n- How to convert `running config` to Tree structure\n\n```python\n>>> data['running'] = p.parse_tree(data['running']) # translating show running data to tree format\n>>> p.dump(data['running'], indent=4) # running data in tree format\n```\n\n```json\n{\n \"R1#sh run\": \"None\",\n \"Building configuration...\": \"None\",\n \"Current configuration : 891 bytes\": \"None\",\n \"version 12.4\": \"None\",\n \"service timestamps debug datetime msec\": \"None\",\n \"service timestamps log datetime msec\": \"None\",\n \"no service password-encryption\": \"None\",\n \"hostname R1\": \"None\",\n \"boot-start-marker\": \"None\",\n \"boot-end-marker\": \"None\",\n \"no aaa new-model\": \"None\",\n \"memory-size iomem 5\": \"None\",\n \"no ip icmp rate-limit unreachable\": \"None\",\n \"ip cef\": \"None\",\n \"no ip domain lookup\": \"None\",\n \"ip auth-proxy max-nodata-conns 3\": \"None\",\n \"ip admission max-nodata-conns 3\": \"None\",\n \"ip tcp synwait-time 5\": \"None\",\n \"l2vpn\": {\n \"bridge group test-group\": {\n \"bridge-domain test-domain1\": {\n \"interface FastEthernet 0/0\": {\n \"static-mac-address AB:CD:ED:01\": \"None\"\n }\n },\n \"bridge-domain test-domain2\": {\n \"interface FastEthernet 0/1\": {\n \"static-mac-address AC:ED:12:34\": \"None\"\n }\n }\n }\n },\n \"interface FastEthernet0/0\": {\n \"ip address 1.1.1.1 255.255.255.0\": \"None\",\n \"duplex auto\": \"None\",\n \"speed auto\": \"None\"\n },\n \"interface FastEthernet0/1\": {\n \"no ip address\": \"None\",\n \"shutdown\": \"None\",\n \"duplex auto\": \"None\",\n \"speed auto\": \"None\"\n },\n \"ip forward-protocol nd\": \"None\",\n \"no ip http server\": \"None\",\n \"no ip http secure-server\": \"None\",\n \"no cdp log mismatch duplex\": \"None\",\n \"control-plane\": \"None\",\n \"line con 0\": {\n \"exec-timeout 0 0\": \"None\",\n \"privilege level 15\": \"None\",\n \"logging synchronous\": \"None\"\n },\n \"line aux 0\": {\n \"exec-timeout 0 0\": \"None\",\n \"privilege level 15\": \"None\",\n \"logging synchronous\": \"None\"\n },\n \"line vty 0 4\": {\n \"login\": \"None\"\n }\n}\n```\n\n- How to convert Table structure\n\n```python\n>>> header_names = ['Device ID', 'Local Intrfce', 'Holdtme', 'Capability', 'Platform', 'Port ID']\n>>> data['cdp_neighbors'] = p.parse_table(data['cdp_neighbors'], header_names=header_names)\n>>> p.dump(data['cdp_neighbors'], indent=4)\n```\n\n```json\n[\n {\n \"Device ID\": \"R2\",\n \"Local Intrfce\": \"Fas 0/0\",\n \"Holdtme\": \"154\",\n \"Capability\": \"R S I\",\n \"Platform\": \"3725\",\n \"Port ID\": \"Fas 0/0\"\n }\n]\n```\n\n- How to convert data to Tree\n\n```python\n>>> data['version'] = p.parse_data(data['version'])\n>>> p.dump(data['version'], indent=4)\n```\n\n```json\n{\n \"R1#sh ver\": \"None\",\n \"Cisco IOS Software, 3700 Software (C3725-ADVENTERPRISEK9-M), Version 12.4(25d), RELEASE SOFTWARE (fc1)\": \"None\",\n \"Technical Support: http://www.cisco.com/techsupport\": \"None\",\n \"Copyright (c) 1986-2010 by Cisco Systems, Inc.\": \"None\",\n \"Compiled Wed 18-Aug-10 07:55 by prod_rel_team\": \"None\",\n \"\": \"None\",\n \"ROM: ROMMON Emulation Microcode\": \"None\",\n \"ROM: 3700 Software (C3725-ADVENTERPRISEK9-M), Version 12.4(25d), RELEASE SOFTWARE (fc1)\": \"None\",\n \"R1 uptime is 10 minutes\": \"None\",\n \"System returned to ROM by unknown reload cause - suspect boot_data[BOOT_COUNT] 0x0, BOOT_COUNT 0, BOOTDATA 19\": \"None\",\n \"System image file is \\\"tftp://255.255.255.255/unknown\\\"\": \"None\",\n \"This product contains cryptographic features and is subject to United\": \"None\",\n \"States and local country laws governing import, export, transfer and\": \"None\",\n \"use. Delivery of Cisco cryptographic products does not imply\": \"None\",\n \"third-party authority to import, export, distribute or use encryption.\": \"None\",\n \"Importers, exporters, distributors and users are responsible for\": \"None\",\n \"compliance with U.S. and local country laws. By using this product you\": \"None\",\n \"agree to comply with applicable laws and regulations. If you are unable\": \"None\",\n \"to comply with U.S. and local laws, return this product immediately.\": \"None\",\n \"A summary of U.S. laws governing Cisco cryptographic products may be found at:\": \"None\",\n \"http://www.cisco.com/wwl/export/crypto/tool/stqrg.html\": \"None\",\n \"If you require further assistance please contact us by sending email to\": \"None\",\n \"export@cisco.com.\": \"None\",\n \"Cisco 3725 (R7000) processor (revision 0.1) with 124928K/6144K bytes of memory.\": \"None\",\n \"Processor board ID FTX0945W0MY\": \"None\",\n \"R7000 CPU at 240MHz, Implementation 39, Rev 2.1, 256KB L2, 512KB L3 Cache\": \"None\",\n \"2 FastEthernet interfaces\": \"None\",\n \"DRAM configuration is 64 bits wide with parity enabled.\": \"None\",\n \"55K bytes of NVRAM.\": \"None\",\n \"Configuration register is 0x2102\": \"None\"\n}\n```\n\n- Search all occurrences in Tree\n\n```python\n>>> pattern = 'interface\\s+FastEthernet.*'\n>>> m = p.search.search_all_in_tree(pattern, data['running'])\n>>> m.values()\n```\n\n```python\ndict_values(['interface FastEthernet0/0', 'interface FastEthernet0/1'])\n```\n\n- Search first occurrences in Tree\n\n```python\n>>> pattern = 'Cisco\\s+IOS\\s+Software.*'\n>>> m = p.search.search_in_tree(pattern, data['version'])\n>>> m.group(0)\n```\n\n```python\n'Cisco IOS Software, 3700 Software (C3725-ADVENTERPRISEK9-M), Version 12.4(25d), RELEASE SOFTWARE (fc1)'\n```\n\n- Search first occurrences in Table\n\n```python\n>>> pattern = 'R\\d+'\n>>> header = 'Device ID'\n>>> m = p.search.search_in_table(pattern, data['cdp_neighbors'], header)\n>>> m\n```\n\n```python\n{'Device ID': 'R2', 'Local Intrfce': 'Fas 0/0', 'Holdtme': '154', 'Capability': 'R S I', 'Platform': '3725', 'Port ID': 'Fas 0/0'}\n```\n\n- Search all occurrences in Table\n\n```python\n>>> header = ['Interface', 'IP-Address', 'OK?', 'Method', 'Status', 'Protocol']\n>>> data['ip_interface_brief'] = p.parse_table(data['ip_interface_brief'], header)\n>>> pattern = 'FastEthernet.*'\n>>> header = 'Interface'\n>>> m = p.search.search_all_in_table(pattern, data['ip_interface_brief'], header)\n>>> m\n```\n\n```python\n[\n {\n \"Interface\":\"FastEthernet0/0\",\n \"IP-Address\":\"1.1.1.1\",\n \"OK?\":\"YES\",\n \"Method\":\"manual\",\n \"Status\":\"up\",\n \"Protocol\":\"up\"\n },\n {\n \"Interface\":\"FastEthernet0/1\",\n \"IP-Address\":\"unassigned\",\n \"OK?\":\"YES\",\n \"Method\":\"unset\",\n \"Status\":\"administratively down\",\n \"Protocol\":\"down\"\n }\n]\n```\n\n## Pre-requisites\n\nshconfparser supports both trains of **python** `2.7+ and 3.1+`, the OS should not matter.\n\n## Installation and Downloads\n\nThe best way to get shconfparser is with setuptools or pip. If you already have setuptools, you can install as usual:\n\n`python -m pip install shconfparser`\n\nOtherwise download it from PyPi, extract it and run the `setup.py` script\n\n`python setup.py install`\n\nIf you're Interested in the source, you can always pull from the github repo:\n\n- From github `git clone https://github.com/network-tools/shconfparser.git`\n\n## FAQ\n\n- **Question:** I want to use shconfparser with Python3, is that safe? \n **Answer:** As long as you're using python 3.3 or higher, it's safe. I tested every release against python 3.1+, however python 3.1 and 3.2 not running in continuous integration test. \n\n- **Question:** I want to use shconfparser with Python2, is that safe? \n **Answer:** As long as you're using python 2.7 or higher, it's safe. I tested against python 2.7.\n\n## Other Resources\n\n- [Python3 documentation](https://docs.python.org/3/) is a good way to learn python\n- Python [GeeksforGeeks](https://www.geeksforgeeks.org/python-programming-language/)\n- [Ordered Dictionary](https://docs.python.org/2/library/collections.html#collections.OrderedDict)\n- [JSON](http://json.org/)\n\n## Bug Tracker and Support\n\n- Please report any suggestions, bug reports, or annoyances with shconfparser through the [Github bug tracker](https://github.com/network-tools/shconfparser/issues). If you're having problems with general python issues, consider searching for a solution on [Stack Overflow](https://stackoverflow.com/search?q=).\n- If you can't find a solution for your problem or need more help, you can [ask a question](https://stackoverflow.com/questions/ask).\n- You can also ask on the [Stack Exchange Network Engineering](https://networkengineering.stackexchange.com/) site.\n\n## Unit Tests\n\n- [Travis CI](https://travis-ci.org/network-tools/shconfparser/builds) project tests shconfparser on Python versions `2.7` through `3.7`.\n\n- The current build status is:\n\n [![Build Status](https://travis-ci.org/network-tools/shconfparser.svg?branch=master)](https://travis-ci.org/network-tools/shconfparser)\n\n## License and Copyright\n\n- shconfparser is licensed [MIT](http://opensource.org/licenses/mit-license.php) *2016-2018*\n\n [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Author and Thanks\n\nshconfparser was developed by [Kiran Kumar Kotari](https://github.com/kirankotari)\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/kirankotari/shconfparser", "keywords": "network conf parser translator cisco show output parser", "license": "", "maintainer": "", "maintainer_email": "", "name": "shconfparser", "package_url": "https://pypi.org/project/shconfparser/", "platform": "", "project_url": "https://pypi.org/project/shconfparser/", "project_urls": { "Homepage": "https://github.com/kirankotari/shconfparser" }, "release_url": "https://pypi.org/project/shconfparser/2.2.2/", "requires_dist": null, "requires_python": "", "summary": "It's a Network configuration parser, which translates the show outputs", "version": "2.2.2" }, "last_serial": 4901130, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "77d6816beecdcc0888257939e2343fe0", "sha256": "b30d0cae2eeb79f7bf870e6a1bc9b8864fe8fa14c54f108c2190d19bfb5361ee" }, "downloads": -1, "filename": "shconfparser-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "77d6816beecdcc0888257939e2343fe0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7889, "upload_time": "2018-12-30T07:47:21", "url": "https://files.pythonhosted.org/packages/56/95/ed1bd0c1a869182846d962dfff670f73e6e4a2f16b0e898771596e564d36/shconfparser-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d9acf0351eec6598da4980573549bf8e", "sha256": "80c192ef178158e840c968e148a039feaadb6c77df8489111b91d54ebf52283f" }, "downloads": -1, "filename": "shconfparser-1.0.0.tar.gz", "has_sig": false, "md5_digest": "d9acf0351eec6598da4980573549bf8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4389, "upload_time": "2018-12-30T07:47:23", "url": "https://files.pythonhosted.org/packages/a8/a2/cb047fe41ef4e991ddc8b7b03548f2d989683b67b5b824eb4cf4f985bd01/shconfparser-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "6b78497b59d7de43ee73c162cd97c2d8", "sha256": "b299b76758f9f94018c224a1f4846ac840bd34f52ec7569d60edf184e9c64bda" }, "downloads": -1, "filename": "shconfparser-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6b78497b59d7de43ee73c162cd97c2d8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9085, "upload_time": "2018-12-30T22:28:19", "url": "https://files.pythonhosted.org/packages/85/bb/d0dfe227a09142e7c2ea209fc562144694102568b1fcfd9e1a7e44d69e43/shconfparser-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8c16bc02e41b0fdab4b0db2100cf9a52", "sha256": "99e147dfd7205a929d4118bb7ac56a98dd551216335b60e8b110e7c5547fbe93" }, "downloads": -1, "filename": "shconfparser-1.1.0.tar.gz", "has_sig": false, "md5_digest": "8c16bc02e41b0fdab4b0db2100cf9a52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5809, "upload_time": "2018-12-30T22:28:21", "url": "https://files.pythonhosted.org/packages/25/c1/85ce8db85c40f019ddddfbda12bc04a9ba6c9c43d711254688c1fbd957ec/shconfparser-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "44b7f8d9a747c46e07b212d0ff16a4b7", "sha256": "daab406a9fbcf7bb60eaf2f6a2b328987d12eb1fbf7d1e7f9f68ebce05a3f461" }, "downloads": -1, "filename": "shconfparser-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "44b7f8d9a747c46e07b212d0ff16a4b7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10202, "upload_time": "2018-12-30T23:42:24", "url": "https://files.pythonhosted.org/packages/2a/05/ab78949ff1408c58d3412903cdf36c60b4dc784c67fd5009ce00f1164f3c/shconfparser-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2d42212fea0400bd7694dc0868ff08f5", "sha256": "d9729e3e7e43f0b6ffefbdc10213544e131bb764fa33706fda7de568b2273a96" }, "downloads": -1, "filename": "shconfparser-1.1.1.tar.gz", "has_sig": false, "md5_digest": "2d42212fea0400bd7694dc0868ff08f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8205, "upload_time": "2018-12-30T23:42:25", "url": "https://files.pythonhosted.org/packages/7b/be/e753d05519b64e044e3ee7a28aaa7d9d6bb240097a1c4309d80ed92a92d9/shconfparser-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "39d3ddad1ac91acc55e197de10302359", "sha256": "ab82a42d9b8ecfc9c01111440ea86c967d180cff5993603b5e481c1756bd58b7" }, "downloads": -1, "filename": "shconfparser-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "39d3ddad1ac91acc55e197de10302359", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10224, "upload_time": "2018-12-31T00:27:53", "url": "https://files.pythonhosted.org/packages/2c/35/56cc7f20834cfedfd9f1e4bbc09899df8dea53261a18a64b83553fe10479/shconfparser-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ee197f3daf01efdf44fc7e66e8cbfe61", "sha256": "dafbd6d8cba9f25d8ecb2c285d462aa2dcff00100db966767ed20e6fd86fda8a" }, "downloads": -1, "filename": "shconfparser-1.1.2.tar.gz", "has_sig": false, "md5_digest": "ee197f3daf01efdf44fc7e66e8cbfe61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8234, "upload_time": "2018-12-31T00:27:55", "url": "https://files.pythonhosted.org/packages/f8/26/558872382977635581eefb3495768fdf527b66ae12a96736020a295e8587/shconfparser-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "df8915bb299ecb3b91830d884f61d8c1", "sha256": "92d2e6f54163c80e0014c239e2ea0755af3e47faf77a2ec237d0c83481afe270" }, "downloads": -1, "filename": "shconfparser-1.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "df8915bb299ecb3b91830d884f61d8c1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10222, "upload_time": "2018-12-31T00:56:19", "url": "https://files.pythonhosted.org/packages/95/22/0febde06f0fe7f0c8725c8774350314600483896ea262bc6ddabecb51d70/shconfparser-1.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "35dfe7f660e3961ea49df72a2a22c8d7", "sha256": "5a4e2c563eb06d54cbac887e18cbab3518b9da06d5d1798bfc62963ab93b7afe" }, "downloads": -1, "filename": "shconfparser-1.1.3.tar.gz", "has_sig": false, "md5_digest": "35dfe7f660e3961ea49df72a2a22c8d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9608, "upload_time": "2018-12-31T00:56:21", "url": "https://files.pythonhosted.org/packages/d4/52/2c114fd32a448db1561f273c17c1690b5765f8634cf1daf52c8e9c004021/shconfparser-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "4711ab1f9012b00971ebb43a5990c4e8", "sha256": "43c6396b462ef2542f04b30978039f1547b48d6fc847a8f7a05970580c2946d1" }, "downloads": -1, "filename": "shconfparser-1.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "4711ab1f9012b00971ebb43a5990c4e8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10389, "upload_time": "2018-12-31T00:57:12", "url": "https://files.pythonhosted.org/packages/aa/85/b149ad72a4e5d0a8e86348dd6c1744f985f287a0286246227b9aae25e70d/shconfparser-1.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a2cae9e7edb07b9c83ecaaa125ac4f9b", "sha256": "2589c70c8d75805c8abf8b27253e46d2ef3735a6b2cbdbcec08fda9ac0fa5d96" }, "downloads": -1, "filename": "shconfparser-1.1.4.tar.gz", "has_sig": false, "md5_digest": "a2cae9e7edb07b9c83ecaaa125ac4f9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9741, "upload_time": "2018-12-31T00:57:14", "url": "https://files.pythonhosted.org/packages/47/43/46e5c9e366aa618ba8a76078eb724d389788bdbbb924c942d8192c1cc111/shconfparser-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "5a79fe5680eabf752490f73b1a69e9d1", "sha256": "eccf4a5050aebd78d769e975257259da5c9183fdd765eebeef4410319ca5017d" }, "downloads": -1, "filename": "shconfparser-1.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "5a79fe5680eabf752490f73b1a69e9d1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10223, "upload_time": "2018-12-31T00:59:36", "url": "https://files.pythonhosted.org/packages/79/79/fb077403befe94ed7bd99a72a69bc1ebe91c0554ede4965dc5d625d59d18/shconfparser-1.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "66ceff9def3f30583f5fd8780feb8211", "sha256": "ac481e39cce35cb07f822aa068228a65f2ee9a4f635738a7c89a828bab6bb476" }, "downloads": -1, "filename": "shconfparser-1.1.5.tar.gz", "has_sig": false, "md5_digest": "66ceff9def3f30583f5fd8780feb8211", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8237, "upload_time": "2018-12-31T00:59:38", "url": "https://files.pythonhosted.org/packages/1a/3d/5fe1bbac758bdf0829b2f287a162e1c97c029b5c391ef7af554f5ba3ec92/shconfparser-1.1.5.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "d4dbd147e4f0d4d8703b5ee636e11090", "sha256": "677cfa07e532e5ffaacc51f08365904c0348572f8fc7b1b28a9dba4be18875cd" }, "downloads": -1, "filename": "shconfparser-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d4dbd147e4f0d4d8703b5ee636e11090", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10681, "upload_time": "2019-01-04T09:55:27", "url": "https://files.pythonhosted.org/packages/a1/a7/54c228007b538a78c07e07f350c80216550c7f5fdfaed667adf72536f368/shconfparser-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fda054e2d497d9e4c284638d6ac8a28c", "sha256": "cceb3f5f9a25e6d1a0a0fb02e173ce2354a00fa1fed1ddcf0d01d1133cea5e48" }, "downloads": -1, "filename": "shconfparser-2.0.0.tar.gz", "has_sig": false, "md5_digest": "fda054e2d497d9e4c284638d6ac8a28c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8438, "upload_time": "2019-01-04T09:55:29", "url": "https://files.pythonhosted.org/packages/83/06/6c7e1c2f6e3ab76fed71f3b89e6ba4d6d95bf0726a4f9133f662cf02a7d6/shconfparser-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "a779d279919882d77856e2ded2e9d0a5", "sha256": "074bb2ad5a3dd764d9b54680b51edcf22a0626fb50d7ac2e6c6419f7eb3f68e3" }, "downloads": -1, "filename": "shconfparser-2.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a779d279919882d77856e2ded2e9d0a5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11168, "upload_time": "2019-01-04T13:21:49", "url": "https://files.pythonhosted.org/packages/94/14/9ac561761a1d7de209a2f658f43e6722f0852511d582c6c2bb91e16c828f/shconfparser-2.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4a02f122c3bf0cdadace2fe78b7c52b", "sha256": "ab0f7ee9f62978b1da2f6fcdb5f9b00b50296f9347e1a00b96195aa43153096c" }, "downloads": -1, "filename": "shconfparser-2.0.1.tar.gz", "has_sig": false, "md5_digest": "f4a02f122c3bf0cdadace2fe78b7c52b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9272, "upload_time": "2019-01-04T13:21:50", "url": "https://files.pythonhosted.org/packages/80/d7/76f7c10c57af3b70cfeaa2dd1a6021aee5bd627ddffcb482db2222ad9e0a/shconfparser-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "6df7376ba4485594ac65466dcbe1fe4f", "sha256": "3494d39cf02a356b4e042c2d841d64b823b52ad6d0257e628efeb5182ebdaeea" }, "downloads": -1, "filename": "shconfparser-2.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6df7376ba4485594ac65466dcbe1fe4f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11165, "upload_time": "2019-01-04T13:49:30", "url": "https://files.pythonhosted.org/packages/ed/db/8968d073d218952f4b0a3080568366845934fcfb3f39b4dfffafffc7fa5d/shconfparser-2.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "024162655b3f47116c88875bf135fa52", "sha256": "7689a8f33373179930549f134740976aa59f8164c650739549263624c129e24f" }, "downloads": -1, "filename": "shconfparser-2.0.2.tar.gz", "has_sig": false, "md5_digest": "024162655b3f47116c88875bf135fa52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9268, "upload_time": "2019-01-04T13:49:32", "url": "https://files.pythonhosted.org/packages/98/ff/680294c095c85254f588ecf4d15c3f3a63e8ff98e4e1431771cfe1137b66/shconfparser-2.0.2.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "ba2514f55f7ee23768b923f20fff23e4", "sha256": "126b80fb83560825f0c0411dcea859cae367222b2d4ccce2db755948462f4d8e" }, "downloads": -1, "filename": "shconfparser-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ba2514f55f7ee23768b923f20fff23e4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9337, "upload_time": "2019-01-25T07:18:53", "url": "https://files.pythonhosted.org/packages/89/44/69358f4dd699aed1f3ae2772eeb2067653200b94f3cd46d15a45a267e223/shconfparser-2.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48077b6f828b2cfdca4681a1694ee6c3", "sha256": "5a129c48a96421ba8751d918742d1021bdde95f3b0a92d5a70722129ca3ee3c4" }, "downloads": -1, "filename": "shconfparser-2.1.0.tar.gz", "has_sig": false, "md5_digest": "48077b6f828b2cfdca4681a1694ee6c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9321, "upload_time": "2019-01-25T07:18:56", "url": "https://files.pythonhosted.org/packages/c4/f8/7a8ebabb97c9a321fb75891bbf11b4ddab864919c689b19a9f15315cea16/shconfparser-2.1.0.tar.gz" } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "65b2e8d6efcf2f441ade604490215bc9", "sha256": "6765c91daa23eb53452bbaedf52cc8ab1d23e26c9c0c77bd7170b4c0e2a5c5e5" }, "downloads": -1, "filename": "shconfparser-2.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "65b2e8d6efcf2f441ade604490215bc9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9360, "upload_time": "2019-01-25T08:16:20", "url": "https://files.pythonhosted.org/packages/b4/94/f24912982eefdd7d3f7a107de15eee7e3df5925d7cc69f3f612f9a6b6ec4/shconfparser-2.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36e4fb0cc9bea929b6d86dc394c62cd1", "sha256": "077f90c703032fbf0b75017971308530e2e42eb5150308fc909afc2c54d15022" }, "downloads": -1, "filename": "shconfparser-2.1.1.tar.gz", "has_sig": false, "md5_digest": "36e4fb0cc9bea929b6d86dc394c62cd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9339, "upload_time": "2019-01-25T08:16:22", "url": "https://files.pythonhosted.org/packages/5a/b3/80778b61e52a8a8e2941ad3f136fe7a446feb8872d44e68da8e6520fa69f/shconfparser-2.1.1.tar.gz" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "517f1bd8a8f852540e195dcadb67b090", "sha256": "ba387f6af23ac3ad828cabe4c5d6fffbef48aa2990f3a134cd668515e3e82c5b" }, "downloads": -1, "filename": "shconfparser-2.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "517f1bd8a8f852540e195dcadb67b090", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9609, "upload_time": "2019-02-26T06:49:10", "url": "https://files.pythonhosted.org/packages/ef/ca/f7ad760a4625661d0bab28b4689ce339b4e7ec21c6a6ab7665c9904469ed/shconfparser-2.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ef9c35f72d32e63dd40fdaaa04aa0d20", "sha256": "d479557354b011c0662389e746d13bb472ec7d38cf59c4866ebcb5cd9e0b8cff" }, "downloads": -1, "filename": "shconfparser-2.2.1.tar.gz", "has_sig": false, "md5_digest": "ef9c35f72d32e63dd40fdaaa04aa0d20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10304, "upload_time": "2019-02-26T06:49:12", "url": "https://files.pythonhosted.org/packages/f1/66/89d1c4a65fa7f96cc7f463d47bc378db277289fb66907c74ee09386345b1/shconfparser-2.2.1.tar.gz" } ], "2.2.2": [ { "comment_text": "", "digests": { "md5": "4a316fb307d42bf2b1fac784a1141428", "sha256": "3715a5278639a11df5032e8d5adb1d6e613335b96b29080a9d8be18020f0c08e" }, "downloads": -1, "filename": "shconfparser-2.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4a316fb307d42bf2b1fac784a1141428", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9660, "upload_time": "2019-03-05T18:13:29", "url": "https://files.pythonhosted.org/packages/f3/9d/05262b8f66ff931764da783f651c02b3f906095d1efed8b81493e42bf070/shconfparser-2.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9294492c1c301e5eacf69208eeaf8b1f", "sha256": "d4f4a9689b9b50b316f546503f745655e6a43c53c881b760d4ee105fc62fcc58" }, "downloads": -1, "filename": "shconfparser-2.2.2.tar.gz", "has_sig": false, "md5_digest": "9294492c1c301e5eacf69208eeaf8b1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10389, "upload_time": "2019-03-05T18:13:30", "url": "https://files.pythonhosted.org/packages/28/73/35793d50f2a094339e3ac44b273a78199c8cb6022366c75336e367d0f6a2/shconfparser-2.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4a316fb307d42bf2b1fac784a1141428", "sha256": "3715a5278639a11df5032e8d5adb1d6e613335b96b29080a9d8be18020f0c08e" }, "downloads": -1, "filename": "shconfparser-2.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4a316fb307d42bf2b1fac784a1141428", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9660, "upload_time": "2019-03-05T18:13:29", "url": "https://files.pythonhosted.org/packages/f3/9d/05262b8f66ff931764da783f651c02b3f906095d1efed8b81493e42bf070/shconfparser-2.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9294492c1c301e5eacf69208eeaf8b1f", "sha256": "d4f4a9689b9b50b316f546503f745655e6a43c53c881b760d4ee105fc62fcc58" }, "downloads": -1, "filename": "shconfparser-2.2.2.tar.gz", "has_sig": false, "md5_digest": "9294492c1c301e5eacf69208eeaf8b1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10389, "upload_time": "2019-03-05T18:13:30", "url": "https://files.pythonhosted.org/packages/28/73/35793d50f2a094339e3ac44b273a78199c8cb6022366c75336e367d0f6a2/shconfparser-2.2.2.tar.gz" } ] }