[Python-modules-commits] [pysmi] 01/05: import pysmi_0.2.2.orig.tar.gz

Vincent Bernat bernat at moszumanska.debian.org
Sat Dec 30 15:51:38 UTC 2017


This is an automated email from the git hooks/post-receive script.

bernat pushed a commit to annotated tag debian/0.2.2-1
in repository pysmi.

commit 8896a54aa6e9af6b0b78efd6de1cd46da8cb6e32
Author: Vincent Bernat <vincent at bernat.im>
Date:   Sat Dec 30 16:25:10 2017 +0100

    import pysmi_0.2.2.orig.tar.gz
---
 CHANGES.rst                                        |  117 ++
 LICENSE.rst                                        |   24 +
 MANIFEST.in                                        |    4 +
 PKG-INFO                                           |   35 +
 README.md                                          |  199 +++
 THANKS.txt                                         |    2 +
 TODO.txt                                           |   32 +
 devel-requirements.txt                             |    2 +
 docs/Makefile                                      |  192 +++
 docs/README.txt                                    |   11 +
 docs/source/.static/logo.svg                       |   95 ++
 docs/source/changelog.rst                          |    5 +
 docs/source/conf.py                                |  327 +++++
 docs/source/contents.rst                           |   75 +
 docs/source/documentation.rst                      |   45 +
 docs/source/download.rst                           |   15 +
 .../always-borrow-precompiled-pysnmp-files.rst     |   11 +
 .../borrow-precompiled-pysnmp-files-on-failure.rst |   11 +
 ...le-smistar-mibs-into-pysnmp-files-if-needed.rst |   11 +
 ...mpile-smiv2-mibs-from-text-into-pysnmp-code.rst |   11 +
 ...download-and-compile-smistar-mibs-into-json.rst |   11 +
 ...-and-compile-smistar-mibs-into-pysnmp-files.rst |   11 +
 docs/source/library-reference.rst                  |  170 +++
 docs/source/license.rst                            |    5 +
 docs/source/mibdump.rst                            |  374 +++++
 .../pysmi/borrower/anyfile/anyfileborrower.rst     |    8 +
 .../pysmi/borrower/pyfile/pyfileborrower.rst       |    8 +
 docs/source/pysmi/codegen/jsondoc/jsoncodegen.rst  |    8 +
 docs/source/pysmi/codegen/null/nullcodegen.rst     |    8 +
 docs/source/pysmi/codegen/pysnmp/pysnmpcodegen.rst |    8 +
 docs/source/pysmi/compiler/mibcompiler.rst         |    8 +
 docs/source/pysmi/compiler/mibstatus.rst           |   11 +
 docs/source/pysmi/parser/smi/dialect.rst           |   34 +
 docs/source/pysmi/parser/smi/parserfactory.rst     |   27 +
 .../pysmi/reader/callback/callbackreader.rst       |   10 +
 docs/source/pysmi/reader/ftpclient/ftpreader.rst   |   10 +
 docs/source/pysmi/reader/httpclient/httpreader.rst |   10 +
 docs/source/pysmi/reader/localfile/filereader.rst  |   11 +
 docs/source/pysmi/reader/zipreader/zipreader.rst   |   11 +
 .../pysmi/searcher/pyfile/pyfilesearcher.rst       |   11 +
 .../pysmi/searcher/pypackage/pypackagesearcher.rst |   11 +
 docs/source/pysmi/searcher/stub/stubsearcher.rst   |   17 +
 .../pysmi/writer/callback/callbackwriter.rst       |   10 +
 docs/source/pysmi/writer/localfile/filewriter.rst  |    8 +
 docs/source/pysmi/writer/pyfile/pyfilewriter.rst   |    8 +
 examples/always-borrow-precompiled-pysnmp-files.py |   44 +
 .../borrow-precompiled-pysnmp-files-on-failure.py  |   52 +
 ...ile-smistar-mibs-into-pysnmp-files-if-needed.py |   53 +
 ...ompile-smiv2-mibs-from-text-into-pysnmp-code.py |   45 +
 .../download-and-compile-smistar-mibs-into-json.py |   50 +
 ...d-and-compile-smistar-mibs-into-pysnmp-files.py |   51 +
 pysmi.egg-info/PKG-INFO                            |   35 +
 pysmi.egg-info/SOURCES.txt                         |  123 ++
 pysmi.egg-info/dependency_links.txt                |    1 +
 pysmi.egg-info/requires.txt                        |    1 +
 pysmi.egg-info/top_level.txt                       |    1 +
 pysmi.egg-info/zip-safe                            |    1 +
 pysmi/__init__.py                                  |    7 +
 pysmi/borrower/__init__.py                         |    8 +
 pysmi/borrower/anyfile.py                          |   11 +
 pysmi/borrower/base.py                             |   53 +
 pysmi/borrower/pyfile.py                           |   16 +
 pysmi/codegen/__init__.py                          |   10 +
 pysmi/codegen/base.py                              |  303 ++++
 pysmi/codegen/jsondoc.py                           | 1053 ++++++++++++++
 pysmi/codegen/null.py                              |   23 +
 pysmi/codegen/pysnmp.py                            | 1206 ++++++++++++++++
 pysmi/codegen/symtable.py                          |  625 +++++++++
 pysmi/compat.py                                    |   30 +
 pysmi/compiler.py                                  |  538 ++++++++
 pysmi/debug.py                                     |  142 ++
 pysmi/error.py                                     |   80 ++
 pysmi/lexer/__init__.py                            |    7 +
 pysmi/lexer/base.py                                |   11 +
 pysmi/lexer/smi.py                                 |  364 +++++
 pysmi/mibinfo.py                                   |   45 +
 pysmi/parser/__init__.py                           |   10 +
 pysmi/parser/base.py                               |   14 +
 pysmi/parser/dialect.py                            |   29 +
 pysmi/parser/null.py                               |   18 +
 pysmi/parser/smi.py                                | 1452 ++++++++++++++++++++
 pysmi/parser/smiv1.py                              |   11 +
 pysmi/parser/smiv1compat.py                        |   12 +
 pysmi/parser/smiv2.py                              |   11 +
 pysmi/reader/__init__.py                           |   12 +
 pysmi/reader/base.py                               |   51 +
 pysmi/reader/callback.py                           |   43 +
 pysmi/reader/ftpclient.py                          |  122 ++
 pysmi/reader/httpclient.py                         |  108 ++
 pysmi/reader/localfile.py                          |  138 ++
 pysmi/reader/url.py                                |   70 +
 pysmi/reader/zipreader.py                          |  193 +++
 pysmi/searcher/__init__.py                         |   10 +
 pysmi/searcher/anyfile.py                          |   59 +
 pysmi/searcher/base.py                             |   17 +
 pysmi/searcher/pyfile.py                           |   92 ++
 pysmi/searcher/pypackage.py                        |  122 ++
 pysmi/searcher/stub.py                             |   35 +
 pysmi/writer/__init__.py                           |    9 +
 pysmi/writer/base.py                               |   18 +
 pysmi/writer/callback.py                           |   52 +
 pysmi/writer/localfile.py                          |   88 ++
 pysmi/writer/pyfile.py                             |  109 ++
 requirements.txt                                   |    4 +
 scripts/mibdump.py                                 |  384 ++++++
 setup.cfg                                          |    8 +
 setup.py                                           |  144 ++
 tests/__init__.py                                  |    1 +
 tests/__main__.py                                  |   33 +
 tests/test_agentcapabilities_smiv2_pysnmp.py       |  101 ++
 tests/test_imports_smiv2_pysnmp.py                 |   59 +
 tests/test_modulecompliance_smiv2_pysnmp.py        |   86 ++
 tests/test_moduleidentity_smiv2_pysnmp.py          |  116 ++
 tests/test_notificationgroup_smiv2_pysnmp.py       |   84 ++
 tests/test_notificationtype_smiv2_pysnmp.py        |   83 ++
 tests/test_objectgroup_smiv2_pysnmp.py             |   92 ++
 tests/test_objectidentity_smiv2_pysnmp.py          |   88 ++
 tests/test_objecttype_smiv2_pysnmp.py              |  652 +++++++++
 tests/test_smiv1_smiv2_pysnmp.py                   |   92 ++
 tests/test_traptype_smiv2_pysnmp.py                |   92 ++
 tests/test_typedeclaration_smiv1_pysnmp.py         |  108 ++
 tests/test_typedeclaration_smiv2_pysnmp.py         |  195 +++
 tests/test_valuedeclaration_smiv2_pysnmp.py        |  100 ++
 tests/test_zipreader.py                            |  215 +++
 124 files changed, 12663 insertions(+)

diff --git a/CHANGES.rst b/CHANGES.rst
new file mode 100644
index 0000000..c0cdb8d
--- /dev/null
+++ b/CHANGES.rst
@@ -0,0 +1,117 @@
+
+Revision 0.2.2, 13-11-2017
+--------------------------
+
+- Library documentation refactored and updated
+- Fixed malformed Python code being produced by pysnmp code generator
+
+Revision 0.2.1, 11-11-2017
+--------------------------
+
+- Added MIB *status*, *product release* and *revision description* set
+  calls at pysnmp code generator
+- Changed REVISION field format in JSON representation - it is now
+  a list of dicts each with *revision* timestamp and *description* text
+- MIB REFERENCE fields are only exported if --with-mib-text is on
+- Sphinx documentation theme changed to Alabaster
+- Multiple fixes to pysnmp codegen not to produce function calls
+  with more than 255 parameters
+
+Revision 0.1.4, 14-10-2017
+--------------------------
+
+- Fix to SMI lexer to treat tokens starting from a digit as belonging
+  to a lower-cased class. This fixes sub-OID parsing bug (specifically,
+  802dot3(10006))
+- Fix to the mibdump.py local MIB path automatic injection in front
+  of existing --mib-sources
+
+Revision 0.1.3, 19-05-2017
+--------------------------
+
+* INET-ADDRESS-MIB configured as pre-built at pysnmp codegen
+* JSON codegen produces "nodetype" element for OBJECT-TYPE
+* Fix to mibdump.py --destination-directory option
+* Fix to pysnmp and JSON code generators to properly refer to MIB module
+  defining particular MIB object
+
+Revision 0.1.2, 12-04-2017
+--------------------------
+
+* The @mib@ magic in reader's URL template made optional. If it is not present,
+  MIB module name is just appended to URL template
+* Send User-Agent containing pysmi and Python versions as well as platform name.
+* Fixed missing STATUS/DISPLAY-HINT/REFERENCE/etc fields generation at pysnmp
+  backend when running in the non-full-text mode
+* Fixed broken `ordereddict` dependency on Python 2.6-
+
+Revision 0.1.1, 30-03-2017
+--------------------------
+
+* Generate REFERENCE and STATUS fields at various SMI objects
+* Generate DESCRIPTION field followed REVISION field at MODULE-IDENTITY objects
+* Generate PRODUCT-RELEASE field at AGENT-CAPABILITIES objects
+* Generated Python source aligned with PEP8
+* MIB texts cleaned up by default, --keep-texts-layout preserves original formatting
+* Fix to the `ordereddict` conditional dependency
+* Missing test module recovered
+* Failing tests fixed
+
+Revision 0.1.0, 25-03-2017
+--------------------------
+
+* JSON code generating backend implemented
+* Experimental JSON OID->MIB indices generation implemented
+* Package structure flattened for easier use
+* Minor refactoring to the test suite
+* Source code statically analyzed, hardened and PEP8-ized
+* Files closed explicitly to mute ResourceWarnings
+* Fixed to Python 2.4 (and aged ply) compatibility
+* Added a workaround to avoid generating pysnmp TextualConvention classes
+  inheriting from TextualConvention (when MIB defines a TEXTUAL-CONVENTION
+  based on another TEXTUAL-CONVENTION as SYNTAX)
+* Author's e-mail changed, copyright extended to year 2017
+
+Revision 0.0.7, 12-02-2016
+--------------------------
+
+* Crash on existing .py file handling fixed.
+* Fix to __doc__ use in setup.py to make -O0 installation mode working.
+* Fix to PyPackageSearcher not to fail on broken Python packages.
+* Source code pep8'ed
+* Copyright added to source files.
+
+Revision 0.0.6, 01-10-2015
+--------------------------
+
+* Several typos fixed, source code linted again.
+* Some dead code cleaned up.
+
+Revision 0.0.5, 28-09-2015
+--------------------------
+
+* Wheel distribution format now supported.
+* Handle the case of MIB symbols conflict with Python reserved words.
+* Handle binary DEFVAL initializer for INTEGER's.
+* Generate LAST-UPDATED at pysnmp code generator.
+
+Revision 0.0.4, 01-07-2015
+--------------------------
+
+* Fix to MRO compliance for mixin classes generation at pysnmp backend
+* Fix to repeated imports in generated code at pysnmp backend
+* Fix to mibdump tool to properly handle the --generate-mib-texts option.
+* Fix to Python compile() - optimize flag is valid only past Python 3.1
+* Fix to SMIv1 INDEX clause code generation for pysnmp backend.
+* Tighten file creation security at pysmi.writer.pyfile
+
+Revision 0.0.3, 28-06-2015
+--------------------------
+
+* Two-pass compiler design allows for much accurate code generation.
+* Sphinx-based documentation first introduced
+
+Revision 0.0.0, 11-04-2015
+--------------------------
+
+* First public release, not fully operational yet
diff --git a/LICENSE.rst b/LICENSE.rst
new file mode 100644
index 0000000..3f1072c
--- /dev/null
+++ b/LICENSE.rst
@@ -0,0 +1,24 @@
+Copyright (c) 2015-2017 Ilya Etingof <etingof at gmail.com>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+  * Redistributions of source code must retain the above copyright notice, 
+    this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE. 
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..6e790fb
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,4 @@
+include *.txt *.rst *.md
+recursive-include tests *.py
+recursive-include examples *.py
+recursive-include docs *.txt *.rst *.svg *.py Makefile
diff --git a/PKG-INFO b/PKG-INFO
new file mode 100644
index 0000000..965c442
--- /dev/null
+++ b/PKG-INFO
@@ -0,0 +1,35 @@
+Metadata-Version: 1.1
+Name: pysmi
+Version: 0.2.2
+Summary: SNMP SMI/MIB Parser
+Home-page: https://github.com/etingof/pysmi
+Author: Ilya Etingof <etingof at gmail.com>
+Author-email: etingof at gmail.com
+License: BSD
+Description: A pure-Python implementation of SNMP/SMI MIB parsing and conversion library.
+Platform: any
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Console
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: Education
+Classifier: Intended Audience :: Information Technology
+Classifier: Intended Audience :: System Administrators
+Classifier: Intended Audience :: Telecommunications Industry
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Natural Language :: English
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.4
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.2
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Topic :: Communications
+Classifier: Topic :: System :: Monitoring
+Classifier: Topic :: System :: Networking :: Monitoring
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..39a14ea
--- /dev/null
+++ b/README.md
@@ -0,0 +1,199 @@
+
+SNMP MIB parser
+---------------
+[![Python Versions](https://img.shields.io/pypi/pyversions/pysmi.svg)](https://pypi.python.org/pypi/pysmi/)
+[![Build status](https://travis-ci.org/etingof/pysmi.svg?branch=master)](https://secure.travis-ci.org/etingof/pysmi)
+[![Coverage Status](https://img.shields.io/codecov/c/github/etingof/pysmi.svg)](https://codecov.io/github/etingof/pysmi)
+[![GitHub license](https://img.shields.io/badge/license-BSD-blue.svg)](https://raw.githubusercontent.com/etingof/pysmi/master/LICENSE.rst)
+
+PySMI is a pure-Python implementation of
+[SNMP SMI](https://en.wikipedia.org/wiki/Management_information_base) MIB parser.
+This tool is designed to turn ASN.1 MIBs into various formats. As of this moment,
+JSON and [pysnmp](https://github.com/etingof/pysnmp) modules can be generated
+from ASN.1 MIBs.
+
+Features
+--------
+
+* Understands SMIv1, SMIv2 and de-facto SMI dialects
+* Turns MIBs into pysnmp classes and JSON documents
+* Maintains an index of MIB objects over many MIB modules
+* Automatically pulls ASN.1 MIBs from local directories, ZIP archives,
+  HTTP and FTP servers
+* 100% Python, works with Python 2.4 up to Python 3.6
+
+Rendered PySMI documentation can be found at [pysmi site](http://pysmi.sf.net).
+
+How to use PySMI
+----------------
+
+If you are using pysnmp, you might never notice pysmi presence - pysnmp
+calls pysmi for MIB download and compilation behind the scenes (you can
+still can do that manually by invoking *mibdump.py* tool).
+
+To turn ASN.1 MIB into a JSON document, call *mibdump.py* tool like this:
+
+```
+$ mibdump.py --generate-mib-texts  --destination-format json IF-MIB
+Source MIB repositories: file:///usr/share/snmp/mibs, http://mibs.snmplabs.com/asn1/@mib@
+Borrow missing/failed MIBs from: http://mibs.snmplabs.com/json/fulltexts/@mib@
+Existing/compiled MIB locations: 
+Compiled MIBs destination directory: .
+MIBs excluded from code generation: RFC-1212, RFC-1215, RFC1065-SMI, RFC1155-SMI,
+RFC1158-MIB, RFC1213-MIB, SNMPv2-CONF, SNMPv2-SMI, SNMPv2-TC, SNMPv2-TM
+MIBs to compile: IF-MIB
+Destination format: json
+Parser grammar cache directory: not used
+Also compile all relevant MIBs: yes
+Rebuild MIBs regardless of age: yes
+Do not create/update MIBs: no
+Byte-compile Python modules: no (optimization level no)
+Ignore compilation errors: no
+Generate OID->MIB index: no
+Generate texts in MIBs: yes
+Keep original texts layout: no
+Try various filenames while searching for MIB module: yes
+Created/updated MIBs: IANAifType-MIB, IF-MIB, SNMPv2-MIB
+Pre-compiled MIBs borrowed: 
+Up to date MIBs: SNMPv2-CONF, SNMPv2-SMI, SNMPv2-TC
+Missing source MIBs: 
+Ignored MIBs: 
+Failed MIBs: 
+```
+
+JSON document build from
+[IF-MIB module](http://mibs.snmplabs.com/asn1/IF-MIB)
+would hold information such as:
+
+```
+   {
+      "ifMIB": {
+          "name": "ifMIB",
+          "oid": "1.3.6.1.2.1.31",
+          "class": "moduleidentity",
+          "revisions": [
+            "2007-02-15 00:00",
+            "1996-02-28 21:55",
+            "1993-11-08 21:55"
+          ]
+        },
+      ...
+      "ifTestTable": {
+        "name": "ifTestTable",
+        "oid": "1.3.6.1.2.1.31.1.3",
+        "nodetype": "table",
+        "class": "objecttype",
+        "maxaccess": "not-accessible"
+      },
+      "ifTestEntry": {
+        "name": "ifTestEntry",
+        "oid": "1.3.6.1.2.1.31.1.3.1",
+        "nodetype": "row",
+        "class": "objecttype",
+        "maxaccess": "not-accessible",
+        "augmention": {
+          "name": "ifTestEntry",
+          "module": "IF-MIB",
+          "object": "ifEntry"
+        }
+      },
+      "ifTestId": {
+        "name": "ifTestId",
+        "oid": "1.3.6.1.2.1.31.1.3.1.1",
+        "nodetype": "column",
+        "class": "objecttype",
+        "syntax": {
+          "type": "TestAndIncr",
+          "class": "type"
+        },
+        "maxaccess": "read-write"
+      },
+      ...
+   }
+```
+
+In general, converted MIBs capture all aspects of original (ASN.1) MIB contents
+and layout. The snippet above is just a partial example, but here is the
+complete [IF-MIB.json](http://mibs.snmplabs.com/json/fulltexts/IF-MIB.json)
+file.
+
+Besides one-to-one MIB conversion, PySMI library can produce JSON index to
+facilitate fast MIB information lookup across large collection of MIB files.
+For example, JSON index for
+[IP-MIB.json](http://mibs.snmplabs.com/json/asn1/IP-MIB),
+[TCP-MIB.json](http://mibs.snmplabs.com/json/asn1/TCP-MIB) and
+[UDP-MIB.json](http://mibs.snmplabs.com/json/asn1/UDP-MIB)
+modules would keep information like this:
+
+```
+   {
+      "compliance": {
+         "1.3.6.1.2.1.48.2.1.1": [
+           "IP-MIB"
+         ],
+         "1.3.6.1.2.1.49.2.1.1": [
+           "TCP-MIB"
+         ],
+         "1.3.6.1.2.1.50.2.1.1": [
+           "UDP-MIB"
+         ]
+      },
+      "identity": {
+          "1.3.6.1.2.1.48": [
+            "IP-MIB"
+          ],
+          "1.3.6.1.2.1.49": [
+            "TCP-MIB"
+          ],
+          "1.3.6.1.2.1.50": [
+            "UDP-MIB"
+          ]
+      },
+      "oids": {
+          "1.3.6.1.2.1.4": [
+            "IP-MIB"
+          ],
+          "1.3.6.1.2.1.5": [
+            "IP-MIB"
+          ],
+          "1.3.6.1.2.1.6": [
+            "TCP-MIB"
+          ],
+          "1.3.6.1.2.1.7": [
+            "UDP-MIB"
+          ],
+          "1.3.6.1.2.1.49": [
+            "TCP-MIB"
+          ],
+          "1.3.6.1.2.1.50": [
+            "UDP-MIB"
+          ]
+      }
+   }
+```
+
+With this example, *compliance* and *identity* keys point to
+*MODULE-COMPLIANCE* and *MODULE-IDENTITY* MIB objects, *oids*
+list top-level OIDs branches defined in MIB modules. Full index
+build over thousands of MIBs could be seen
+[here](http://mibs.snmplabs.com/json/index.json).
+
+The PySMI library can automatically fetch required MIBs from HTTP, FTP sites
+or local directories. You could configure any MIB source available to you (including
+[http://mibs.snmplabs.com/asn1/](http://mibs.snmplabs.com/asn1/)) for that purpose.
+
+How to get PySMI
+----------------
+
+The pysmi package is distributed under terms and conditions of 2-clause
+BSD [license](http://pyasn1.sourceforge.net/license.html). Source code is freely
+available as a GitHub [repo](https://github.com/etingof/pysmi).
+
+You could `pip install pysmi` or download it from [PyPI](https://pypi.python.org/pypi/pysmi).
+
+If something does not work as expected,
+[open an issue](https://github.com/etingof/pysmi/issues) at GitHub or
+post your question [on Stack Overflow](http://stackoverflow.com/questions/ask).
+
+Copyright (c) 2015-2017, [Ilya Etingof](mailto:etingof at gmail.com).
+All rights reserved.
diff --git a/THANKS.txt b/THANKS.txt
new file mode 100644
index 0000000..3ad921c
--- /dev/null
+++ b/THANKS.txt
@@ -0,0 +1,2 @@
+Lars Michelsen
+Tanya Tereschenko
diff --git a/TODO.txt b/TODO.txt
new file mode 100644
index 0000000..fcb86a8
--- /dev/null
+++ b/TODO.txt
@@ -0,0 +1,32 @@
+* add more tests on edge cases
+* generate reverse OID -> MIB index
+* handle SMIv1 MAX clause in range constraint
+* support MAX clause mapping it into type-specific value
+* possibly split symbol table code generator onto imported modules and symbol
+  table code generators.
+* support more common broken SMI constructs 
+* DEFVAL and AUGMENTS should not depend on the order of symbols in MIB
+* make a collection of fixed MIBs (e.g. Huawei has lots of bad/broken MIBs)
+* some MIBs use hex as DEFVAL for types other than OCTET STRING (additional AST processing phase will help)
+* handle the case when the symbol and the enumaration value (which can be in DEFVAL) have the same name - llc2 in NETLINK-SPECIFIC-MIB (additional AST processing phase will help)
+* check imports and try to add necessary ones if missed (like OBJECT-TYPE, MODULE-IDENTITY, etc)
+* generate TextualConvention first or add additional AST processing phase
+* implement a cache of available files at abstract reader path
+* create a command-line tool for splitting MIBs stored in a single file
+* create a MIB querying tool: get MIB module's OIDs, enterprise IDs,
+  canonical name(s); search MIB objects by regexp; build source .index
+* implement xml/html/yaml codegeneration backend
+* write a tool to fetch canonical MIB name from MIB file, rename MIB file, split merged MIBs onto individual files
+* write a tool to turn IANA assigned numbers into JSON
+* introduce cached MIBs invalidation feature -- may be useful when we screw up and produce bad MIBs
+* json codegen:
+  - make schema configurable
+  - further simplify/review codegen code
+  - rebuild the docs
+  - conditionally require simplejson and ordereddict
+  - add tests
+  - is it a good idea to make writers also reading data?
+  - review symtable for unused pieces
+  - write a tool to split json index onto separate documents
+  - index NOTIFICATION-TYPE's
+  - add example script on index build
diff --git a/devel-requirements.txt b/devel-requirements.txt
new file mode 100644
index 0000000..1d3f5f3
--- /dev/null
+++ b/devel-requirements.txt
@@ -0,0 +1,2 @@
+sphinx
+pysnmp
diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 0000000..6edd2f6
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,192 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = build
+
+# User-friendly check for sphinx-build
+ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
+$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
+endif
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html       to make standalone HTML files"
+	@echo "  dirhtml    to make HTML files named index.html in directories"
+	@echo "  singlehtml to make a single large HTML file"
+	@echo "  pickle     to make pickle files"
+	@echo "  json       to make JSON files"
+	@echo "  htmlhelp   to make HTML files and a HTML help project"
+	@echo "  qthelp     to make HTML files and a qthelp project"
+	@echo "  applehelp  to make an Apple Help Book"
+	@echo "  devhelp    to make HTML files and a Devhelp project"
+	@echo "  epub       to make an epub"
+	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+	@echo "  latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
+	@echo "  text       to make text files"
+	@echo "  man        to make manual pages"
+	@echo "  texinfo    to make Texinfo files"
+	@echo "  info       to make Texinfo files and run them through makeinfo"
+	@echo "  gettext    to make PO message catalogs"
+	@echo "  changes    to make an overview of all changed/added/deprecated items"
+	@echo "  xml        to make Docutils-native XML files"
+	@echo "  pseudoxml  to make pseudoxml-XML files for display purposes"
+	@echo "  linkcheck  to check all external links for integrity"
+	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+	@echo "  coverage   to run coverage check of the documentation (if enabled)"
+
+clean:
+	rm -rf $(BUILDDIR)/*
+
+html:
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+	@echo
+	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+json:
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PySMI.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PySMI.qhc"
+
+applehelp:
+	$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
+	@echo
+	@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
+	@echo "N.B. You won't be able to view it unless you put it in" \
+	      "~/Library/Documentation/Help or install it in your application" \
+	      "bundle."
+
+devhelp:
+	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+	@echo
+	@echo "Build finished."
+	@echo "To view the help file:"
+	@echo "# mkdir -p $$HOME/.local/share/devhelp/PySMI"
+	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PySMI"
+	@echo "# devhelp"
+
+epub:
+	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+	@echo
+	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make' in that directory to run these through (pdf)latex" \
+	      "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through pdflatex..."
+	$(MAKE) -C $(BUILDDIR)/latex all-pdf
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+latexpdfja:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through platex and dvipdfmx..."
+	$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+	@echo
+	@echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+	@echo
+	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+texinfo:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo
+	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+	@echo "Run \`make' in that directory to run these through makeinfo" \
+	      "(use \`make info' here to do that automatically)."
+
+info:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo "Running Texinfo files through makeinfo..."
+	make -C $(BUILDDIR)/texinfo info
+	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+gettext:
+	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+	@echo
+	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+changes:
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."
+
+coverage:
+	$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
+	@echo "Testing of coverage in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/coverage/python.txt."
+
+xml:
+	$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
+	@echo
+	@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
+
+pseudoxml:
+	$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
+	@echo
+	@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
diff --git a/docs/README.txt b/docs/README.txt
new file mode 100644
index 0000000..c160636
--- /dev/null
+++ b/docs/README.txt
@@ -0,0 +1,11 @@
+You need Sphinx too build this documentation. Or you can read it in ASCII. ;)
+
+Better run:
+
+# pip sphinx
+
+and once Sphinx is installed on your system, run:
+
+$ make html
+
+To build a copy of HTML'ed PySMI documentation.
diff --git a/docs/source/.static/logo.svg b/docs/source/.static/logo.svg
new file mode 100644
index 0000000..e6062aa
--- /dev/null
+++ b/docs/source/.static/logo.svg
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg viewBox="0 0 788.22937 829.02386" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+  <filter id="j">
+   <feGaussianBlur stdDeviation="6.2732"/>
+  </filter>
+  <filter id="g">
+   <feGaussianBlur stdDeviation=".64973"/>
+  </filter>
+  <filter id="l" x="-.06193" y="-.19499" width="1.1239" height="1.39">
+   <feGaussianBlur stdDeviation="7.46855"/>
+  </filter>
+  <filter id="k" x="-.25093" y="-.14188" width="1.5019" height="1.2838">
+   <feGaussianBlur stdDeviation="3.07792"/>
+  </filter>
+  <filter id="i" x="-.03871" y="-.12187" width="1.0774" height="1.2437">
+   <feGaussianBlur stdDeviation="4.66785"/>
+  </filter>
+  <filter id="h" x="-.12783" y="-.07846" width="1.2557" height="1.1569">
+   <feGaussianBlur stdDeviation="1.708"/>
+  </filter>
+  <linearGradient id="e">
+   <stop stop-color="#817e7e" offset="0"/>
+   <stop stop-color="#f4ebeb" stop-opacity=".98824" offset=".5"/>
+   <stop stop-color="#241b1b" stop-opacity=".97826" offset="1"/>
+  </linearGradient>
+  <linearGradient id="f">
+   <stop stop-color="#1a5b78" offset="0"/>
+   <stop stop-color="#136890" offset="1"/>
+  </linearGradient>
+  <linearGradient id="r" x1="301.38" x2="318.52" y1="716.86" y2="106.67" gradientUnits="userSpaceOnUse">
+   <stop stop-color="#3aacfa" offset="0"/>
+   <stop stop-color="#2699d7" stop-opacity=".99608" offset=".83216"/>
+   <stop stop-color="#78c1e7" stop-opacity=".99216" offset=".98972"/>
+   <stop stop-color="#cae9f7" stop-opacity=".99216" offset="1"/>
+  </linearGradient>
+  <linearGradient id="q" x1="-6.9187" x2="583.27" gradientUnits="userSpaceOnUse">
+   <stop stop-color="#d4f6f7" offset="0"/>
+   <stop stop-color="#bdf0f2" offset=".5"/>
+   <stop stop-color="#76eaf0" offset=".75"/>
+   <stop stop-color="#465758" offset="1"/>
+  </linearGradient>
+  <linearGradient id="d" x1="172.72" x2="402.47" gradientUnits="userSpaceOnUse">
+   <stop stop-color="#2a9cf9" offset="0"/>
+   <stop stop-color="#afe2eb" offset="1"/>
+  </linearGradient>
+  <linearGradient id="c" x1="286.18" x2="292.27" y1="332.78" y2="297.07" gradientUnits="userSpaceOnUse">
+   <stop stop-color="#241b1b" offset="0"/>
+   <stop stop-color="#241b1b" stop-opacity="0" offset="1"/>
+  </linearGradient>
+  <linearGradient id="b" x1="291.93" x2="290.42" y1="654.44" y2="584.74" gradientUnits="userSpaceOnUse">
+   <stop stop-color="#4ec7ff" offset="0"/>
+   <stop stop-color="#177ba9" offset="1"/>
+  </linearGradient>
+  <linearGradient id="p" x1="166.1" x2="410.06" y1="529.93" y2="527.91" gradientUnits="userSpaceOnUse" xlink:href="#f"/>
+  <linearGradient id="o" x1="257.31" x2="320.16" gradientUnits="userSpaceOnUse" xlink:href="#e"/>
+  <linearGradient id="n" x1="229.49" x2="343.96" gradientUnits="userSpaceOnUse" xlink:href="#e"/>
+  <linearGradient id="m" x1="63.378" x2="507.69" y1="571" y2="567.46" gradientUnits="userSpaceOnUse" xlink:href="#f"/>
+  <radialGradient id="a" cx="288.79" cy="314.87" r="47.676" gradientTransform="matrix(.95889 0 0 .36279 11.873 202.26)" gradientUnits="userSpaceOnUse">
+   <stop stop-color="#f9faf8" offset="0"/>
+   <stop stop-color="#ccceca" stop-opacity=".67816" offset=".80581"/>
+   <stop stop-color="#a0a39d" stop-opacity=".98551" offset="1"/>
+  </radialGradient>
+ </defs>
+ <g transform="translate(36.408 -60.696)">
+  <path d="m217.12 214.13 1.8398 157.37s-68.072 76.035-114.07 139.69-123.27 152.07-110.39 206.89 147.18 111.4 270.45 109.63 316.44-30.06 318.28-100.79-88.31-185.67-121.43-229.87-101.19-123.78-101.19-123.78l-3.6796-159.14s-27.597 14.146-69.912 14.146-69.912-14.146-69.912-14.146z" fill="url(#q)" opacity=".59004"/>
+  <g transform="matrix(1.0193 0 0 .9797 275.35 -97.577)">
+   <path transform="matrix(1.0949 0 0 1.1946 -27.22 -91.679)" d="m433.86 608.91c0 25.384-64.786 45.962-144.7 45.962s-144.7-20.578-144.7-45.962 64.786-45.962 144.7-45.962 144.7 20.578 144.7 45.962z" filter="url(#l)"/>
+   <path d="m320.16 384.59c-20.034 6.3449-42.056 6.5046-62.156 0.15625 0.29535 26.623 0.5955 5.2459 0.875 31.875 6e-3 1.2834-0.46958 2.5635-1.3125 3.5312-27.411 31.834-52.856 65.234-76.938 99.75-17.564 25.17-36.956 49.209-44.688 77.531l-0.0312 0.0625c-2.7636 9.7018-0.36414 20.52 6.75 27.375l0.0937 0.0937c19.862 20.02 48.023 30.265 75.875 37.5 41.373 10.675 85.409 6.8178 128.31 1.0625v-0.0312c28.981-4.768 58.19-10.111 82.5-24.812-3e-5 -0.0104-3e-5 -0.0208 0-0.0312 4.5579-2.7227 8.8864-6.5 [...]
+   <path d="m308.76 387.93c-15.75 1.6761-28.556 1.9621-44.482-1.3589 0.21917 26.636 0.31563 3.3544 0.52303 29.996 5e-3 1.284-0.34845 2.5647-0.97395 3.533-20.341 31.85-39.222 65.266-57.092 99.798-13.034 25.182-27.423 49.233-33.161 77.569l-0.0232 0.0625c-2.0508 9.7065-0.27021 20.53 5.0089 27.388l0.0696 0.0937c11.203 12.958 20.695 21.066 48.728 28.023s68.254 7.0598 102.79 2.5782c20.824-2.7021 47.44-9.1506 61.22-16.876-3e-5 -0.0104-3e-5 -0.0208 0-0.0312 3.3822-2.724 6.5943-6.5538 8.6265-10.7 [...]
+   <path transform="matrix(1 0 0 .9375 0 20.254)" d="m324.07 315.36c0 4.8113-15.991 8.7116-35.718 8.7116s-35.718-3.9003-35.718-8.7116 15.991-8.7116 35.718-8.7116 35.718 3.9003 35.718 8.7116z" fill="url(#c)"/>
+   <path transform="matrix(1 0 0 1.087 0 -51.618)" d="m433.86 608.91c0 25.384-64.786 45.962-144.7 45.962s-144.7-20.578-144.7-45.962 64.786-45.962 144.7-45.962 144.7 20.578 144.7 45.962z" fill="url(#b)" filter="url(#i)" opacity=".7"/>
+   <path transform="matrix(.74812 .4869 -.42145 .93332 324.55 94.283)" d="m105.06 429.6c0 15.342-4.7487 27.779-10.607 27.779s-10.607-12.437-10.607-27.779 4.7487-27.779 10.607-27.779 10.607 12.437 10.607 27.779z" fill="#fff" filter="url(#h)"/>
+   <path transform="matrix(.69501 .29687 -.29983 .73496 329.84 101.99)" d="m105.06 429.6c0 15.342-4.7487 27.779-10.607 27.779s-10.607-12.437-10.607-27.779 4.7487-27.779 10.607-27.779 10.607 12.437 10.607 27.779z" fill="#fff" filter="url(#k)"/>
+   <path d="m293.58 299.25c4.5514 0.12881 9.3278 0.24858 13.379 0.77697 5.2851 0.68931 10.077 1.7034 14.201 3.0024s7.6027 2.8509 10.281 4.932 4.6532 4.9568 4.3302 8.2969-2.8562 6.2388-5.9368 8.3199-6.8597 3.633-11.235 4.932c-8.7499 2.598-19.953 4.0562-32.144 4.0562s-23.083-1.4582-31.33-4.0562c-4.1238-1.299-7.6317-2.8509-10.31-4.932s-4.6509-4.9799-4.328-8.3199 2.8539-6.2158 5.9346-8.2969 6.8887-3.633 11.264-4.932c6.6932-1.9873 14.805-3.3077 23.705-3.8187 2.7349-0.15701-1.2073-0.23758 1.65 [...]
+   <path d="m257.31 330.38c17.886 5.8187 39.891 3.5219 62.41-1.0835l0.44026 55.295c-21.953 6.8399-42.524 6.0827-62.156 0.15625z" fill="url(#o)" opacity=".49808"/>
+   <path d="m286.61 386.36h0.43558v3.0491h-0.43558z" fill="#241b1b" opacity=".64751"/>
+   <path d="m290.1 385.92h0.43558v3.4846h-0.43558z" fill="#241b1b" opacity=".64751"/>
+   <path d="m317.86 382.77c0 3.7423-12.687 6.776-28.336 6.776s-28.336-3.0337-28.336-6.776 12.687-6.776 28.336-6.776 28.336 3.0337 28.336 6.776z" fill="#135f9b" opacity=".68199"/>
+  </g>
+  <path transform="matrix(1.9941 0 0 2.091 -288.72 -517.12)" d="m433.86 608.91c0 25.384-64.786 45.962-144.7 45.962s-144.7-20.578-144.7-45.962 64.786-45.962 144.7-45.962 144.7 20.578 144.7 45.962z" filter="url(#l)"/>
+  <path d="m343.96 316.59c-36.488 11.107-76.596 11.386-113.2 0.27351 0.53792 46.603 1.0846 9.1828 1.5936 55.796 0.0109 2.2465-0.85524 4.4873-2.3904 6.1814-49.924 55.725-96.267 114.19-140.13 174.61-31.99 44.059-67.307 86.139-81.389 135.72l-0.05682 0.1094c-5.0334 16.983-0.66321 35.921 12.294 47.919 0.05755 0.0539 0.11456 0.10871 0.17066 0.16402 36.175 35.044 87.464 52.978 138.19 65.643 75.353 18.686 155.55 11.934 233.69 1.8599v-0.0546c52.783-8.3462 105.98-17.699 150.26-43.434-5e-5 -0.0182- [...]
+  <path transform="matrix(1.8213 0 0 1.7505 -239.14 -356.63)" d="m308.76 387.93c-15.75 1.6761-28.556 1.9621-44.482-1.3589 0.21917 26.636 0.31563 3.3544 0.52303 29.996 5e-3 1.284-0.34845 2.5647-0.97395 3.533-20.341 31.85-39.222 65.266-57.092 99.798-13.034 25.182-27.423 49.233-33.161 77.569l-0.0232 0.0625c-2.0508 9.7065-0.27021 20.53 5.0089 27.388l0.0696 0.0937c11.203 12.958 20.695 21.066 48.728 28.023s68.254 7.0598 102.79 2.5782c20.824-2.7021 47.44-9.1506 61.22-16.876-3e-5 -0.0104-3e-5 -0 [...]
+  <path transform="matrix(1.8213 0 0 1.6411 -239.14 -321.18)" d="m324.07 315.36c0 4.8113-15.991 8.7116-35.718 8.7116s-35.718-3.9003-35.718-8.7116 15.991-8.7116 35.718-8.7116 35.718 3.9003 35.718 8.7116z" fill="url(#c)"/>
+  <path transform="matrix(1.8213 0 0 1.9027 -239.14 -446.99)" d="m433.86 608.91c0 25.384-64.786 45.962-144.7 45.962s-144.7-20.578-144.7-45.962 64.786-45.962 144.7-45.962 144.7 20.578 144.7 45.962z" fill="url(#b)" filter="url(#i)" opacity=".7"/>
+  <path transform="matrix(1.3625 .8523 -.76759 1.6338 351.96 -191.6)" d="m105.06 429.6c0 15.342-4.7487 27.779-10.607 27.779s-10.607-12.437-10.607-27.779 4.7487-27.779 10.607-27.779 10.607 12.437 10.607 27.779z" fill="#fff" filter="url(#h)"/>
+  <path transform="matrix(1.2658 .51966 -.54607 1.2865 361.6 -178.11)" d="m105.06 429.6c0 15.342-4.7487 27.779-10.607 27.779s-10.607-12.437-10.607-27.779 4.7487-27.779 10.607-27.779 10.607 12.437 10.607 27.779z" fill="#fff" filter="url(#k)"/>
+  <path d="m282.86 319.68h0.79332v5.3373h-0.79332z" fill="#241b1b" opacity=".64751"/>
+  <path d="m289.21 318.92h0.79332v6.0998h-0.79332z" fill="#241b1b" opacity=".64751"/>
+  <path d="m229.49 221.69c32.576 10.186 72.653 6.165 113.67-1.8966l0.80184 96.793c-39.983 11.973-77.45 10.648-113.2 0.27351z" fill="url(#n)" opacity=".49808"/>
+  <path d="m314.53 88.096c11.175-7.4188 26.676-9.6276 40.922-9.6276 20.515 0 42.424 0.67751 63.119 1.3129-14.157 12.706-20.02 32.833-20.603 60.884s7.4772 46.002 19.522 56.234 26.603 12.035 36.71 12.035c9.5446 0 23.331-0.79894 35.231-9.8464s20.303-25.487 22.083-52.296c1.8812-28.327-6.4708-49.691-19.01-63.838 12.054 0.0088 22.878-0.32242 30.962 0.43762 11.434 1.0751 18.465 3.5429 26.636 14.168 6.5038 8.4571 10.278 28.096 11.099 50.764s-0.56916 48.252-0.56916 70.183h18.213c0-21.201 1.4303-4 [...]
+  <path transform="matrix(1.8213 0 0 1.7505 -239.14 -356.63)" d="m293.58 299.25c4.5514 0.12881 9.3278 0.24858 13.379 0.77697 5.2851 0.68931 10.077 1.7034 14.201 3.0024s7.6027 2.8509 10.281 4.932 4.6532 4.9568 4.3302 8.2969-2.8562 6.2388-5.9368 8.3199-6.8597 3.633-11.235 4.932c-8.7499 2.598-19.953 4.0562-32.144 4.0562s-23.083-1.4582-31.33-4.0562c-4.1238-1.299-7.6317-2.8509-10.31-4.932s-4.6509-4.9799-4.328-8.3199 2.8539-6.2158 5.9346-8.2969 6.8887-3.633 11.264-4.932c6.6932-1.9873 14.805-3. [...]
+  <path transform="matrix(1.8213 0 0 1.7505 -239.14 -356.63)" d="m317.86 382.77c0 3.7423-12.687 6.776-28.336 6.776s-28.336-3.0337-28.336-6.776 12.687-6.776 28.336-6.776 28.336 3.0337 28.336 6.776z" fill="#135f9b" opacity=".68199"/>
+ </g>
+</svg>
diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst
new file mode 100644
index 0000000..a546f93
--- /dev/null
+++ b/docs/source/changelog.rst
@@ -0,0 +1,5 @@
+
+Changelog
+=========
+
+.. include:: ../../CHANGES.rst
diff --git a/docs/source/conf.py b/docs/source/conf.py
new file mode 100644
index 0000000..4bf2e37
--- /dev/null
+++ b/docs/source/conf.py
@@ -0,0 +1,327 @@
+# -*- coding: utf-8 -*-
+#
+# PySMI documentation build configuration file, created by
+# sphinx-quickstart on Sat Jun 27 23:15:54 2015.
+#
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys
+import os
+import shlex
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration ------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+    'sphinx.ext.autodoc',
+    'sphinx.ext.napoleon',
+    'sphinx.ext.doctest',
+    'sphinx.ext.intersphinx',
+    'sphinx.ext.todo'
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['.templates']
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+# source_suffix = ['.rst', '.md']
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'contents'
+
+# General information about the project.
+project = u'SNMP SMI compiler'
+copyright = u'2015-2017, Ilya Etingof <etingof at gmail.com>'
+author = u'Ilya Etingof <etingof at gmail.com>'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '0.1'
+# The full version, including alpha/beta/rc tags.
+release = '0.1'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
... 12540 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/pysmi.git



More information about the Python-modules-commits mailing list