{"id":13650333,"url":"https://github.com/etingof/pysmi","last_synced_at":"2025-10-21T20:53:11.890Z","repository":{"id":56507882,"uuid":"52479456","full_name":"etingof/pysmi","owner":"etingof","description":"SNMP MIB parser","archived":false,"fork":false,"pushed_at":"2023-07-21T13:42:14.000Z","size":719,"stargazers_count":137,"open_issues_count":22,"forks_count":56,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-04-22T18:48:39.830Z","etag":null,"topics":["json","mib","pysnmp","python","smi","snmp","snmp-mib-parser"],"latest_commit_sha":null,"homepage":"http://snmplabs.com/pysmi/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/etingof.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.rst","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.rst","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"custom":"http://snmplabs.com/sponsorship.html"}},"created_at":"2016-02-24T22:35:54.000Z","updated_at":"2025-01-08T16:52:35.000Z","dependencies_parsed_at":"2022-08-15T20:01:01.952Z","dependency_job_id":"dcae1d89-c3db-4bdc-8f6b-0e6094b08dfd","html_url":"https://github.com/etingof/pysmi","commit_stats":{"total_commits":304,"total_committers":11,"mean_commits":"27.636363636363637","dds":0.5526315789473684,"last_synced_commit":"58f2bf29cccff633af703f319dc237e17e16e3d3"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/etingof/pysmi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etingof%2Fpysmi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etingof%2Fpysmi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etingof%2Fpysmi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etingof%2Fpysmi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/etingof","download_url":"https://codeload.github.com/etingof/pysmi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etingof%2Fpysmi/sbom","scorecard":{"id":384312,"data":{"date":"2025-08-11","repo":{"name":"github.com/etingof/pysmi","commit":"58f2bf29cccff633af703f319dc237e17e16e3d3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":1,"reason":"Found 3/29 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.rst:0","Info: FSF or OSI recognized license: BSD 2-Clause \"Simplified\" License: LICENSE.rst:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'","Warn: branch protection not enabled for branch 'release-0.3.4'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":1,"reason":"9 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2019-217 / GHSA-462w-v97r-4m45","Warn: Project is vulnerable to: PYSEC-2014-8 / GHSA-8r7q-cvjq-x353","Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: PYSEC-2014-82 / GHSA-fqh9-2qgg-h84h","Warn: Project is vulnerable to: PYSEC-2021-66 / GHSA-g3rq-g295-4j3m","Warn: Project is vulnerable to: GHSA-h5c8-rqwp-cp95","Warn: Project is vulnerable to: GHSA-h75v-3vvj-5mfj","Warn: Project is vulnerable to: PYSEC-2019-220 / GHSA-hj2j-77xm-mc5v","Warn: Project is vulnerable to: GHSA-q2x7-8rv6-6q7h"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 8 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T16:14:35.281Z","repository_id":56507882,"created_at":"2025-08-18T16:14:35.281Z","updated_at":"2025-08-18T16:14:35.281Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280333492,"owners_count":26312845,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["json","mib","pysnmp","python","smi","snmp","snmp-mib-parser"],"created_at":"2024-08-02T02:00:35.896Z","updated_at":"2025-10-21T20:53:11.862Z","avatar_url":"https://github.com/etingof.png","language":"Python","funding_links":["http://snmplabs.com/sponsorship.html"],"categories":["Libraries","Recently Updated"],"sub_categories":["Python","[Oct 31, 2024](/content/2024/10/31/README.md)"],"readme":"\nSNMP MIB parser\n---------------\n[![Python Versions](https://img.shields.io/pypi/pyversions/pysmi.svg)](https://pypi.org/project/pysmi/)\n[![Build status](https://travis-ci.org/etingof/pysmi.svg?branch=master)](https://secure.travis-ci.org/etingof/pysmi)\n[![Coverage Status](https://img.shields.io/codecov/c/github/etingof/pysmi.svg)](https://codecov.io/github/etingof/pysmi)\n[![GitHub license](https://img.shields.io/badge/license-BSD-blue.svg)](https://raw.githubusercontent.com/etingof/pysmi/master/LICENSE.rst)\n\nPySMI is a pure-Python implementation of\n[SNMP SMI](https://en.wikipedia.org/wiki/Management_information_base) MIB parser.\nThis tool is designed to turn ASN.1 MIBs into various formats. As of this moment,\nJSON and [pysnmp](https://github.com/etingof/pysnmp) modules can be generated\nfrom ASN.1 MIBs.\n\nFeatures\n--------\n\n* Understands SMIv1, SMIv2 and de-facto SMI dialects\n* Turns MIBs into pysnmp classes and JSON documents\n* Maintains an index of MIB objects over many MIB modules\n* Automatically pulls ASN.1 MIBs from local directories, ZIP archives,\n  HTTP and FTP servers\n* 100% Python, works with Python 2.4 up to Python 3.7\n\nRendered PySMI documentation can be found at [pysmi site](http://snmplabs.com/pysmi).\n\nHow to use PySMI\n----------------\n\nIf you are using pysnmp, you might never notice pysmi presence - pysnmp\ncalls pysmi for MIB download and compilation behind the scenes (you can\nstill can do that manually by invoking *mibdump.py* tool).\n\nTo turn ASN.1 MIB into a JSON document, call *mibdump.py* tool like this:\n\n```\n$ mibdump.py --generate-mib-texts  --destination-format json IF-MIB\nSource MIB repositories: file:///usr/share/snmp/mibs, http://mibs.snmplabs.com/asn1/@mib@\nBorrow missing/failed MIBs from: http://mibs.snmplabs.com/json/fulltexts/@mib@\nExisting/compiled MIB locations: \nCompiled MIBs destination directory: .\nMIBs excluded from code generation: RFC-1212, RFC-1215, RFC1065-SMI, RFC1155-SMI,\nRFC1158-MIB, RFC1213-MIB, SNMPv2-CONF, SNMPv2-SMI, SNMPv2-TC, SNMPv2-TM\nMIBs to compile: IF-MIB\nDestination format: json\nParser grammar cache directory: not used\nAlso compile all relevant MIBs: yes\nRebuild MIBs regardless of age: yes\nDo not create/update MIBs: no\nByte-compile Python modules: no (optimization level no)\nIgnore compilation errors: no\nGenerate OID-\u003eMIB index: no\nGenerate texts in MIBs: yes\nKeep original texts layout: no\nTry various filenames while searching for MIB module: yes\nCreated/updated MIBs: IANAifType-MIB, IF-MIB, SNMPv2-MIB\nPre-compiled MIBs borrowed: \nUp to date MIBs: SNMPv2-CONF, SNMPv2-SMI, SNMPv2-TC\nMissing source MIBs: \nIgnored MIBs: \nFailed MIBs: \n```\n\nJSON document build from\n[IF-MIB module](http://mibs.snmplabs.com/asn1/IF-MIB)\nwould hold information such as:\n\n```\n   {\n      \"ifMIB\": {\n          \"name\": \"ifMIB\",\n          \"oid\": \"1.3.6.1.2.1.31\",\n          \"class\": \"moduleidentity\",\n          \"revisions\": [\n            \"2007-02-15 00:00\",\n            \"1996-02-28 21:55\",\n            \"1993-11-08 21:55\"\n          ]\n        },\n      ...\n      \"ifTestTable\": {\n        \"name\": \"ifTestTable\",\n        \"oid\": \"1.3.6.1.2.1.31.1.3\",\n        \"nodetype\": \"table\",\n        \"class\": \"objecttype\",\n        \"maxaccess\": \"not-accessible\"\n      },\n      \"ifTestEntry\": {\n        \"name\": \"ifTestEntry\",\n        \"oid\": \"1.3.6.1.2.1.31.1.3.1\",\n        \"nodetype\": \"row\",\n        \"class\": \"objecttype\",\n        \"maxaccess\": \"not-accessible\",\n        \"augmention\": {\n          \"name\": \"ifTestEntry\",\n          \"module\": \"IF-MIB\",\n          \"object\": \"ifEntry\"\n        }\n      },\n      \"ifTestId\": {\n        \"name\": \"ifTestId\",\n        \"oid\": \"1.3.6.1.2.1.31.1.3.1.1\",\n        \"nodetype\": \"column\",\n        \"class\": \"objecttype\",\n        \"syntax\": {\n          \"type\": \"TestAndIncr\",\n          \"class\": \"type\"\n        },\n        \"maxaccess\": \"read-write\"\n      },\n      ...\n   }\n```\n\nIn general, converted MIBs capture all aspects of original (ASN.1) MIB contents\nand layout. The snippet above is just a partial example, but here is the\ncomplete [IF-MIB.json](http://mibs.snmplabs.com/json/fulltexts/IF-MIB.json)\nfile.\n\nBesides one-to-one MIB conversion, PySMI library can produce JSON index to\nfacilitate fast MIB information lookup across large collection of MIB files.\nFor example, JSON index for\n[IP-MIB.json](http://mibs.snmplabs.com/json/asn1/IP-MIB),\n[TCP-MIB.json](http://mibs.snmplabs.com/json/asn1/TCP-MIB) and\n[UDP-MIB.json](http://mibs.snmplabs.com/json/asn1/UDP-MIB)\nmodules would keep information like this:\n\n```\n   {\n      \"compliance\": {\n         \"1.3.6.1.2.1.48.2.1.1\": [\n           \"IP-MIB\"\n         ],\n         \"1.3.6.1.2.1.49.2.1.1\": [\n           \"TCP-MIB\"\n         ],\n         \"1.3.6.1.2.1.50.2.1.1\": [\n           \"UDP-MIB\"\n         ]\n      },\n      \"identity\": {\n          \"1.3.6.1.2.1.48\": [\n            \"IP-MIB\"\n          ],\n          \"1.3.6.1.2.1.49\": [\n            \"TCP-MIB\"\n          ],\n          \"1.3.6.1.2.1.50\": [\n            \"UDP-MIB\"\n          ]\n      },\n      \"oids\": {\n          \"1.3.6.1.2.1.4\": [\n            \"IP-MIB\"\n          ],\n          \"1.3.6.1.2.1.5\": [\n            \"IP-MIB\"\n          ],\n          \"1.3.6.1.2.1.6\": [\n            \"TCP-MIB\"\n          ],\n          \"1.3.6.1.2.1.7\": [\n            \"UDP-MIB\"\n          ],\n          \"1.3.6.1.2.1.49\": [\n            \"TCP-MIB\"\n          ],\n          \"1.3.6.1.2.1.50\": [\n            \"UDP-MIB\"\n          ]\n      }\n   }\n```\n\nWith this example, *compliance* and *identity* keys point to\n*MODULE-COMPLIANCE* and *MODULE-IDENTITY* MIB objects, *oids*\nlist top-level OIDs branches defined in MIB modules. Full index\nbuild over thousands of MIBs could be seen\n[here](http://mibs.snmplabs.com/json/index.json).\n\nThe PySMI library can automatically fetch required MIBs from HTTP, FTP sites\nor local directories. You could configure any MIB source available to you (including\n[http://mibs.snmplabs.com/asn1/](http://mibs.snmplabs.com/asn1/)) for that purpose.\n\nHow to get PySMI\n----------------\n\nThe pysmi package is distributed under terms and conditions of 2-clause\nBSD [license](http://snmplabs.com/pysmi/license.html). Source code is freely\navailable as a GitHub [repo](https://github.com/etingof/pysmi).\n\nYou could `pip install pysmi` or download it from [PyPI](https://pypi.org/project/pysmi/).\n\nIf something does not work as expected,\n[open an issue](https://github.com/etingof/pysmi/issues) at GitHub or\npost your question [on Stack Overflow](http://stackoverflow.com/questions/ask).\n\nCopyright (c) 2015-2020, [Ilya Etingof](mailto:etingof@gmail.com).\nAll rights reserved.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetingof%2Fpysmi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fetingof%2Fpysmi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetingof%2Fpysmi/lists"}