[Python-modules-commits] [python-pysnmp4] 01/08: New upstream release.

Vincent Bernat bernat at moszumanska.debian.org
Sun Dec 31 13:50:48 UTC 2017


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

bernat pushed a commit to annotated tag debian/4.4.3-1
in repository python-pysnmp4.

commit 5278eab4dd5e03c08eda9ee3d46e4b93873ca9fc
Author: Vincent Bernat <bernat at debian.org>
Date:   Sun Dec 31 14:07:56 2017 +0100

    New upstream release.
---
 .gitignore                                         |  12 +-
 .travis.yml                                        |   4 +-
 CHANGES.txt                                        |  63 +++++++
 README.md                                          |  20 +--
 THANKS.txt                                         |   2 +
 devel-requirements.txt                             |   3 +
 docs/mibs/PYSNMP-USM-MIB.txt                       |  10 +-
 docs/source/.static/favicon.ico                    | Bin 0 -> 4030 bytes
 docs/source/.static/logo.svg                       |  95 +++++++++++
 docs/source/.templates/layout.html                 | 189 ---------------------
 docs/source/conf.py                                |  59 ++++---
 docs/source/contents.rst                           |  14 +-
 docs/source/development.rst                        |  29 ++--
 docs/source/docs/api-reference.rst                 |   6 +-
 docs/source/docs/pysnmp-hlapi-tutorial.rst         |   4 +-
 docs/source/docs/snmp-design.rst                   |   4 +-
 docs/source/docs/snmp-history.rst                  |  18 +-
 docs/source/download.rst                           |  14 +-
 docs/source/examples/contents.rst                  |  14 +-
 .../asyncio/manager/cmdgen/advanced-topics.rst     |   6 +-
 .../asyncore/manager/cmdgen/advanced-topics.rst    |  18 +-
 .../sync/manager/cmdgen/advanced-topics.rst        |   6 +-
 .../sync/manager/cmdgen/table-operations.rst       |   6 +-
 .../cmdrsp/agent-side-mib-implementations.rst      |   6 +-
 .../asyncore/manager/ntfrcv/advanced-topics.rst    |   6 +-
 .../asyncore/manager/ntfrcv/transport-tweaks.rst   |   6 +-
 .../proxy/command/transport-conversion.rst         |   6 +-
 docs/source/faq.rst                                |   2 +-
 docs/source/faq/non-printable-snmp-values-apps.rst |   2 +-
 .../source/faq/non-printable-snmp-values-tools.rst |   2 +-
 docs/source/faq/pass-custom-mib-to-manager.rst     |   4 +-
 docs/source/oldsite.rst                            |   4 +-
 docs/source/quick-start.rst                        |   4 +-
 ...tiple-concurrent-queries-over-ipv4-and-ipv6.py} |   0
 ...tiple-concurrent-queries-over-ipv4-and-ipv6.py} |   0
 ...-multiple-agents-at-once-over-ipv4-and-ipv6.py} |   0
 ...ry-multiple-snmp-engines-over-ipv4-and-ipv6.py} |   0
 ...-fetch-scalar-and-table-variables-over-ipv6.py} |   0
 .../sync/manager/cmdgen/preload-pysnmp-mibs.py     |   8 +-
 ...ts-from-multuple-threads-over-ipv4-and-ipv6.py} |   2 +-
 .../asyncore/sync/manager/cmdgen/usm-sha-aes128.py |   4 +
 .../smi/agent/operations-on-managed-objects.py     |   6 +-
 ...nting-scalar-mib-objects-over-ipv4-and-ipv6.py} |   0
 ...tiple-network-transports-incl-ipv4-and-ipv6.py} |   0
 ...serve-request-processing-over-ipv4-and-ipv6.py} |   0
 .../manager/ntfrcv/regexp-community-name.py        |   1 -
 ...p4-conversion.py => ipv6-to-ipv4-conversion.py} |   0
 pysnmp/__init__.py                                 |   2 +-
 pysnmp/cache.py                                    |   2 +-
 pysnmp/carrier/asyncio/base.py                     |   2 +-
 pysnmp/carrier/asyncio/dgram/base.py               |   2 +-
 pysnmp/carrier/asyncio/dgram/udp.py                |   2 +-
 pysnmp/carrier/asyncio/dgram/udp6.py               |   2 +-
 pysnmp/carrier/asyncio/dispatch.py                 |   2 +-
 pysnmp/carrier/asyncore/base.py                    |   2 +-
 pysnmp/carrier/asyncore/dgram/base.py              |   2 +-
 pysnmp/carrier/asyncore/dgram/udp.py               |   2 +-
 pysnmp/carrier/asyncore/dgram/udp6.py              |   2 +-
 pysnmp/carrier/asyncore/dgram/unix.py              |   2 +-
 pysnmp/carrier/asyncore/dispatch.py                |   2 +-
 pysnmp/carrier/asynsock/dgram/udp.py               |   2 +-
 pysnmp/carrier/asynsock/dgram/udp6.py              |   2 +-
 pysnmp/carrier/asynsock/dgram/unix.py              |   2 +-
 pysnmp/carrier/asynsock/dispatch.py                |   2 +-
 pysnmp/carrier/base.py                             |   2 +-
 pysnmp/carrier/error.py                            |   2 +-
 pysnmp/carrier/sockfix.py                          |   2 +-
 pysnmp/carrier/sockmsg.py                          |   2 +-
 pysnmp/carrier/twisted/base.py                     |   2 +-
 pysnmp/carrier/twisted/dgram/base.py               |   2 +-
 pysnmp/carrier/twisted/dgram/udp.py                |   2 +-
 pysnmp/carrier/twisted/dgram/unix.py               |   2 +-
 pysnmp/carrier/twisted/dispatch.py                 |   2 +-
 pysnmp/debug.py                                    |   2 +-
 pysnmp/entity/config.py                            |  11 +-
 pysnmp/entity/engine.py                            |   2 +-
 pysnmp/entity/observer.py                          |   2 +-
 pysnmp/entity/rfc3413/cmdgen.py                    |  41 +++--
 pysnmp/entity/rfc3413/cmdrsp.py                    |   2 +-
 pysnmp/entity/rfc3413/config.py                    |   2 +-
 pysnmp/entity/rfc3413/context.py                   |   2 +-
 pysnmp/entity/rfc3413/mibvar.py                    |   2 +-
 pysnmp/entity/rfc3413/ntforg.py                    |  30 ++--
 pysnmp/entity/rfc3413/ntfrcv.py                    |  11 +-
 pysnmp/entity/rfc3413/oneliner/cmdgen.py           |   2 +-
 pysnmp/entity/rfc3413/oneliner/ntforg.py           |   2 +-
 pysnmp/error.py                                    |   2 +-
 pysnmp/hlapi/__init__.py                           |   2 +-
 pysnmp/hlapi/asyncio/__init__.py                   |   2 +-
 pysnmp/hlapi/asyncio/cmdgen.py                     |  86 +++++++---
 pysnmp/hlapi/asyncio/ntforg.py                     |  14 +-
 pysnmp/hlapi/asyncio/transport.py                  |   2 +-
 pysnmp/hlapi/asyncore/__init__.py                  |   2 +-
 pysnmp/hlapi/asyncore/cmdgen.py                    |  34 +++-
 pysnmp/hlapi/asyncore/ntforg.py                    |   2 +-
 pysnmp/hlapi/asyncore/sync/__init__.py             |   2 +-
 pysnmp/hlapi/asyncore/sync/cmdgen.py               |   6 +-
 pysnmp/hlapi/asyncore/sync/compat/cmdgen.py        |   6 +-
 pysnmp/hlapi/asyncore/sync/compat/ntforg.py        |   2 +-
 pysnmp/hlapi/asyncore/sync/ntforg.py               |   2 +-
 pysnmp/hlapi/asyncore/transport.py                 |   2 +-
 pysnmp/hlapi/auth.py                               |  15 +-
 pysnmp/hlapi/context.py                            |   2 +-
 pysnmp/hlapi/lcd.py                                |   2 +-
 pysnmp/hlapi/transport.py                          |   2 +-
 pysnmp/hlapi/twisted/cmdgen.py                     |  93 +++++++---
 pysnmp/hlapi/twisted/ntforg.py                     |  15 +-
 pysnmp/hlapi/twisted/transport.py                  |   2 +-
 pysnmp/hlapi/varbinds.py                           |   2 +-
 pysnmp/nextid.py                                   |   2 +-
 pysnmp/proto/acmod/rfc3415.py                      |   2 +-
 pysnmp/proto/acmod/void.py                         |   2 +-
 pysnmp/proto/api/__init__.py                       |   2 +-
 pysnmp/proto/api/v1.py                             |   6 +-
 pysnmp/proto/api/v2c.py                            |   2 +-
 pysnmp/proto/api/verdec.py                         |   8 +-
 pysnmp/proto/cache.py                              |   2 +-
 pysnmp/proto/errind.py                             |   2 +-
 pysnmp/proto/error.py                              |   2 +-
 pysnmp/proto/mpmod/base.py                         |   2 +-
 pysnmp/proto/mpmod/cache.py                        |   2 +-
 pysnmp/proto/mpmod/rfc2576.py                      |   2 +-
 pysnmp/proto/mpmod/rfc3412.py                      |   2 +-
 pysnmp/proto/proxy/rfc2576.py                      |  24 ++-
 pysnmp/proto/rfc1155.py                            |  56 +++++-
 pysnmp/proto/rfc1157.py                            |   2 +-
 pysnmp/proto/rfc1901.py                            |   2 +-
 pysnmp/proto/rfc1902.py                            |  60 ++-----
 pysnmp/proto/rfc1905.py                            |  10 +-
 pysnmp/proto/rfc3411.py                            |   2 +-
 pysnmp/proto/rfc3412.py                            |   2 +-
 pysnmp/proto/secmod/base.py                        |   2 +-
 pysnmp/proto/secmod/cache.py                       |   2 +-
 pysnmp/proto/secmod/eso/priv/aes192.py             |   2 +-
 pysnmp/proto/secmod/eso/priv/aes256.py             |   2 +-
 pysnmp/proto/secmod/eso/priv/aesbase.py            |  44 +++--
 pysnmp/proto/secmod/eso/priv/des3.py               |  26 +--
 pysnmp/proto/secmod/rfc2576.py                     |   2 +-
 pysnmp/proto/secmod/rfc3414/__init__.py            |   2 +-
 pysnmp/proto/secmod/rfc3414/auth/base.py           |   6 +-
 pysnmp/proto/secmod/rfc3414/auth/hmacmd5.py        |   6 +-
 pysnmp/proto/secmod/rfc3414/auth/hmacsha.py        |   6 +-
 pysnmp/proto/secmod/rfc3414/auth/noauth.py         |   2 +-
 pysnmp/proto/secmod/rfc3414/localkey.py            |  65 ++++---
 pysnmp/proto/secmod/rfc3414/priv/base.py           |   2 +-
 pysnmp/proto/secmod/rfc3414/priv/des.py            |  27 ++-
 pysnmp/proto/secmod/rfc3414/priv/nopriv.py         |   2 +-
 pysnmp/proto/secmod/rfc3414/service.py             |  12 +-
 pysnmp/proto/secmod/rfc3826/priv/aes.py            |  27 ++-
 pysnmp/proto/secmod/rfc7860/__init__.py            |   1 +
 pysnmp/proto/secmod/rfc7860/auth/__init__.py       |   1 +
 pysnmp/proto/secmod/rfc7860/auth/hmacsha2.py       | 126 ++++++++++++++
 pysnmp/smi/builder.py                              |  10 +-
 pysnmp/smi/compiler.py                             |   2 +-
 pysnmp/smi/error.py                                |   2 +-
 pysnmp/smi/exval.py                                |   2 +-
 pysnmp/smi/indices.py                              |   2 +-
 pysnmp/smi/instrum.py                              |   2 +-
 pysnmp/smi/mibs/ASN1-ENUMERATION.py                |   2 +-
 pysnmp/smi/mibs/ASN1-REFINEMENT.py                 |   2 +-
 pysnmp/smi/mibs/ASN1.py                            |   2 +-
 pysnmp/smi/mibs/INET-ADDRESS-MIB.py                |  10 +-
 pysnmp/smi/mibs/PYSNMP-MIB.py                      |   4 +-
 pysnmp/smi/mibs/PYSNMP-SOURCE-MIB.py               |   4 +-
 pysnmp/smi/mibs/PYSNMP-USM-MIB.py                  |  12 +-
 pysnmp/smi/mibs/RFC1158-MIB.py                     |   4 +-
 pysnmp/smi/mibs/RFC1213-MIB.py                     |   7 +-
 pysnmp/smi/mibs/SNMP-COMMUNITY-MIB.py              |   4 +-
 pysnmp/smi/mibs/SNMP-FRAMEWORK-MIB.py              |   4 +-
 pysnmp/smi/mibs/SNMP-MPD-MIB.py                    |   4 +-
 pysnmp/smi/mibs/SNMP-NOTIFICATION-MIB.py           |   4 +-
 pysnmp/smi/mibs/SNMP-PROXY-MIB.py                  |   4 +-
 pysnmp/smi/mibs/SNMP-TARGET-MIB.py                 |   4 +-
 pysnmp/smi/mibs/SNMP-USER-BASED-SM-3DES-MIB.py     |   4 +-
 pysnmp/smi/mibs/SNMP-USER-BASED-SM-MIB.py          |   4 +-
 pysnmp/smi/mibs/SNMP-USM-AES-MIB.py                |   4 +-
 pysnmp/smi/mibs/SNMP-USM-HMAC-SHA2-MIB.py          |  37 ++++
 pysnmp/smi/mibs/SNMP-VIEW-BASED-ACM-MIB.py         |   4 +-
 pysnmp/smi/mibs/SNMPv2-CONF.py                     | 115 ++++++++++---
 pysnmp/smi/mibs/SNMPv2-MIB.py                      |   4 +-
 pysnmp/smi/mibs/SNMPv2-SMI.py                      |  79 ++++++---
 pysnmp/smi/mibs/SNMPv2-TC.py                       |  33 ++--
 pysnmp/smi/mibs/SNMPv2-TM.py                       |   4 +-
 pysnmp/smi/mibs/TRANSPORT-ADDRESS-MIB.py           |   4 +-
 pysnmp/smi/mibs/instances/__PYSNMP-USM-MIB.py      |   2 +-
 pysnmp/smi/mibs/instances/__SNMP-FRAMEWORK-MIB.py  |   2 +-
 pysnmp/smi/mibs/instances/__SNMP-MPD-MIB.py        |   2 +-
 pysnmp/smi/mibs/instances/__SNMP-TARGET-MIB.py     |   2 +-
 .../smi/mibs/instances/__SNMP-USER-BASED-SM-MIB.py |   2 +-
 .../mibs/instances/__SNMP-VIEW-BASED-ACM-MIB.py    |   2 +-
 pysnmp/smi/mibs/instances/__SNMPv2-MIB.py          |   2 +-
 pysnmp/smi/rfc1902.py                              |  14 +-
 pysnmp/smi/view.py                                 |   2 +-
 requirements.txt                                   |   2 +-
 setup.py                                           |   6 +-
 195 files changed, 1310 insertions(+), 793 deletions(-)

diff --git a/.gitignore b/.gitignore
index 4025b6e..77f208c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+# Python stuff
 *.pyc
 __pycache__
 
@@ -9,7 +10,16 @@ MANIFEST
 dist/
 build/
 *.egg-info/
-docs/source/.templates/
 
 # PyCharm stuff
 .idea/
+
+# Sphinx template
+docs/source/.templates/layout.html
+
+# Eclipse stuff
+.project
+.pydevproject
+
+# Virtual envs
+venv*
diff --git a/.travis.yml b/.travis.yml
index de23e72..e2d8960 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,8 +13,8 @@ python:
 #  - "pypy"
 #  - "pypy3"
 install:
-  - pip install -r requirements.txt
+  - pip install -r requirements.txt -r devel-requirements.txt
+  - pip install -e .
   - pip install pysnmp-mibs
-  - pip install --no-deps .
 script:
   - sh runtests.sh
diff --git a/CHANGES.txt b/CHANGES.txt
index 094a80c..1e9332b 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,67 @@
 
+Revision 4.4.3, released 2017-12-22
+-----------------------------------
+
+- Migrated references from SourceForge
+- Added missing SHA2 support for Blumenthal key localization
+- Fixed named bits handling at rfc1902.Bits
+- Fixed missing SmiError exception class at pysnmp.proto.rfc1155
+- Fixed SNMP v1->v2c PDU proxy -- error-status & error-index fields
+  from v1 PDU get copied over to v2c PDU in addition to the exception
+  sentinels being set
+
+Revision 4.4.2, released 2017-11-11
+-----------------------------------
+
+- The pysnmp version being used gets exposed to the MIB modules
+  via the `MibBuilder` instance
+- The .setObjects() method of the SMI types now accepts
+  `append=False` parameter to let the caller adding more
+  than 255 elements over the course of multiple calls
+- Added support for some more missing fields of SMIv2 MACRO types
+- Example scripts rearranged in a way that IPv6 requirement is
+  clearly encoded in the script's name
+- Fixed SNMPv2-SMI.NotificationType to expose .set/getReference()
+  instead of .set/getRevision() which should not be there in the
+  first place
+- Fixed non-implied-OID encoding in SNMP table indices
+- Fixed inconsistent SNMPv3 discovery and retrying algorithm
+
+Revision 4.4.1, released 2017-10-23
+-----------------------------------
+
+- HMAC-SHA-2 Authentication Protocols support added (RFC-7860)
+- The pycryptodome dependency replaced with pycryptodomex as
+  it is recommended by the upstream to avoid unwanted interference
+  with PyCrypto package should it also be installed
+- Sphinx theme changed to Alabaster in the documentation
+- Minor adjustments towards pyasn1 0.4.x compatibility
+- Fixed ObjectIdentifier-into-ObjectIdentity casting at
+  rfc1902.ObjectType MIB resolution harness
+- Fixed NetworkAddress object handling in SNMP table indices
+- Fixed MIB lookup by module:object.indices MIB object with
+  InetAddressIPv{4,6} objects being in the index
+- Fixed non-translated PDU being retries at CommandGenerator what
+  leads to wrong PDU version being sent and even a crash on
+  incompatible PDU/SNMP message combination
+
+Revision 4.3.10, released 2017-10-06
+------------------------------------
+
+- Refactored partial SNMP message decoding to make it less dependent
+  on unpublished pyasn1 API features.
+- Fix to MibTableRow.setFromName() to keep the input parameter type when
+  it propagates to the return value. Before this fix
+  ObjectIdentity.prettyPrint() may crash when rendering malformed SNMP
+  table indices.
+- Fixed NotificationReceiver to include SNMPv1 TRAP Message community
+  string into SNMPv2c/v3 TRAP PDU
+- Fixed multiple bugs in SNMP table indices rendering, especially
+  the InetAddressIPv6 type which was severely broken.
+- Fixed crashing Bits.prettyPrint() implementation
+- Fixed crashing Bits.clone()/subtype() implementation
+- Fixed leaking exceptions bubbling up from the asyncio and Twisted adapters
+
 Revision 4.3.9, released 2017-07-26
 -----------------------------------
 
diff --git a/README.md b/README.md
index 70e5eb4..fbe6f8f 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ SNMP library for Python
 [![GitHub license](https://img.shields.io/badge/license-BSD-blue.svg)](https://raw.githubusercontent.com/etingof/pysnmp/master/LICENSE.txt)
 
 This is a pure-Python, open source and free implementation of v1/v2c/v3
-SNMP engine distributed under 2-clause [BSD license](http://pysnmp.sourceforge.net/license.html).
+SNMP engine distributed under 2-clause [BSD license](http://snmplabs.com/pysnmp/license.html).
 
 The PySNMP project was initially sponsored by a [PSF](http://www.python.org/psf/) grant.
 Thank you!
@@ -24,7 +24,7 @@ Features
 * Asynchronous socket-based IO API support
 * [Twisted](http://twistedmatrix.com), [Asyncio](https://docs.python.org/3/library/asyncio.html)
   and [Trollius](http://trollius.readthedocs.org/index.html) integration
-* [PySMI](http://pysmi.sf.net) integration for dynamic MIB compilation
+* [PySMI](http://snmplabs.com/pysmi/) integration for dynamic MIB compilation
 * Built-in instrumentation exposing protocol engine operations
 * Python eggs and py2exe friendly
 * 100% Python, works with Python 2.4 though 3.6
@@ -32,7 +32,7 @@ Features
 
 Features, specific to SNMPv3 model include:
 
-* USM authentication (MD5/SHA) and privacy (DES/AES) protocols (RFC3414)
+* USM authentication (MD5/SHA-1/SHA-2) and privacy (DES/AES) protocols (RFC3414, RFC7860)
 * View-based access control to use with any SNMP model (RFC3415)
 * Built-in SNMP proxy PDU converter for building multi-lingual
   SNMP entities (RFC2576)
@@ -55,9 +55,9 @@ $ pip install pysnmp
     
 to download and install PySNMP along with its dependencies:
 
-* [PyASN1](http://pyasn1.sf.net)
-* [PyCryptodome](https://pycryptodome.readthedocs.io) (required only if SNMPv3 encryption is in use)
-* [PySMI](http://pysmi.sf.net) (required for MIB services only)
+* [PyASN1](http://snmplabs.com/pyasn1/)
+* [PyCryptodomex](https://pycryptodome.readthedocs.io) (required only if SNMPv3 encryption is in use)
+* [PySMI](http://snmplabs.com/pysmi/) (required for MIB services only)
 
 Besides the library, command-line [SNMP utilities](https://github.com/etingof/pysnmp-apps)
 written in pure-Python could be installed via:
@@ -123,7 +123,7 @@ if errorIndication:
 ```
 
 We maintain publicly available SNMP Agent and TRAP sink at 
-[demo.snmplabs.com](http://snmpsim.sourceforge.net/public-snmp-simulator.html). You are
+[demo.snmplabs.com](http://snmplabs.com/snmpsim/public-snmp-agent-simulator.html). You are
 welcome to use it while experimenting with whatever SNMP software you deal with.
 
 ```bash
@@ -140,19 +140,19 @@ Other than that, PySNMP is capable to automatically fetch and use required MIBs
 or local directories. You could configure any MIB source available to you (including
 [this one](http://mibs.snmplabs.com/asn1/)) for that purpose.
 
-For more example scripts please refer to [examples section](http://pysnmp.sourceforge.net/examples/contents.html#high-level-snmp)
+For more example scripts please refer to [examples section](http://snmplabs.com/pysnmp/examples/contents.html#high-level-snmp)
 at pysnmp web site.
 
 Documentation
 -------------
 
-Library documentation and examples can be found at the [pysnmp project site](http://pysnmp.sf.net/).
+Library documentation and examples can be found at the [pysnmp project site](http://snmplabs.com/pysnmp/).
 
 If something does not work as expected, please
 [open an issue](https://github.com/etingof/pysnmp/issues) at GitHub or
 post your question [on Stack Overflow](http://stackoverflow.com/questions/ask)
 or try browsing pysnmp 
-[mailing list archives](https://sourceforge.net/p/pyasn1/mailman/pysnmp-users/).
+[mailing list archives](https://sourceforge.net/p/pysnmp/mailman/pysnmp-users/).
 
 Bug reports and PRs are appreciated! ;-)
 
diff --git a/THANKS.txt b/THANKS.txt
index 791f3d0..b44833a 100644
--- a/THANKS.txt
+++ b/THANKS.txt
@@ -28,5 +28,7 @@ Zachary Lorusso
 Floris Bruynooghe
 Laurelin of Middle Earth
 Robert Reese
+Olivier Verriest
+Eugene M. Kim
 Thanks to Python Software Foundation for granting financial support 
 for the project.
diff --git a/devel-requirements.txt b/devel-requirements.txt
new file mode 100644
index 0000000..e78c2eb
--- /dev/null
+++ b/devel-requirements.txt
@@ -0,0 +1,3 @@
+sphinx
+twisted
+trollius; python_version < '3.0'
diff --git a/docs/mibs/PYSNMP-USM-MIB.txt b/docs/mibs/PYSNMP-USM-MIB.txt
index d5fd9bf..81e112c 100644
--- a/docs/mibs/PYSNMP-USM-MIB.txt
+++ b/docs/mibs/PYSNMP-USM-MIB.txt
@@ -21,6 +21,8 @@ pysnmpUsmMIB MODULE-IDENTITY
     DESCRIPTION
         "This MIB module defines objects specific to User
          Security Model (USM) implementation at PySNMP."
+    REVISION    "201707300000Z"
+    DESCRIPTION "Extended authentication key size"
     REVISION    "201704140000Z"
     DESCRIPTION "Updated addresses"
     REVISION "200505140000Z"          -- 14 May 2005, midnight
@@ -153,7 +155,7 @@ PysnmpUsmKeyEntry ::= SEQUENCE {
 }
 
 pysnmpUsmKeyAuthLocalized OBJECT-TYPE
-    SYNTAX       OCTET STRING (SIZE(8..32))
+    SYNTAX       OCTET STRING (SIZE(8..64))
     MAX-ACCESS   not-accessible
     STATUS       current
     DESCRIPTION
@@ -161,7 +163,7 @@ pysnmpUsmKeyAuthLocalized OBJECT-TYPE
     ::= { pysnmpUsmKeyEntry 1 }
 
 pysnmpUsmKeyPrivLocalized OBJECT-TYPE
-    SYNTAX       OCTET STRING (SIZE(8..32))
+    SYNTAX       OCTET STRING (SIZE(8..64))
     MAX-ACCESS   not-accessible
     STATUS       current
     DESCRIPTION
@@ -169,7 +171,7 @@ pysnmpUsmKeyPrivLocalized OBJECT-TYPE
     ::= { pysnmpUsmKeyEntry 2 }
 
 pysnmpUsmKeyAuth OBJECT-TYPE
-    SYNTAX       OCTET STRING (SIZE(8..32))
+    SYNTAX       OCTET STRING (SIZE(8..64))
     MAX-ACCESS   not-accessible
     STATUS       current
     DESCRIPTION
@@ -177,7 +179,7 @@ pysnmpUsmKeyAuth OBJECT-TYPE
     ::= { pysnmpUsmKeyEntry 3 }
 
 pysnmpUsmKeyPriv OBJECT-TYPE
-    SYNTAX       OCTET STRING (SIZE(8..32))
+    SYNTAX       OCTET STRING (SIZE(8..64))
     MAX-ACCESS   not-accessible
     STATUS       current
     DESCRIPTION
diff --git a/docs/source/.static/favicon.ico b/docs/source/.static/favicon.ico
new file mode 100644
index 0000000..87528bb
Binary files /dev/null and b/docs/source/.static/favicon.ico differ
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/.templates/layout.html b/docs/source/.templates/layout.html
deleted file mode 100644
index 9cb875a..0000000
--- a/docs/source/.templates/layout.html
+++ /dev/null
@@ -1,189 +0,0 @@
-{# TEMPLATE VAR SETTINGS #}
-{%- set url_root = pathto('', 1) %}
-{%- if url_root == '#' %}{% set url_root = '' %}{% endif %}
-{%- if not embedded and docstitle %}
-  {%- set titlesuffix = " — "|safe + docstitle|e %}
-{%- else %}
-  {%- set titlesuffix = "" %}
-{%- endif %}
-
-<!DOCTYPE html>
-<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
-<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
-<head>
-  <meta charset="utf-8">
-  {{ metatags }}
-  <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  {% block htmltitle %}
-  <title>{{ title|striptags|e }}{{ titlesuffix }}</title>
-  {% endblock %}
-
-  {# FAVICON #}
-  {% if favicon %}
-    <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
-  {% endif %}
-
-  {# CSS #}
-
-  {# OPENSEARCH #}
-  {% if not embedded %}
-    {% if use_opensearch %}
-      <link rel="search" type="application/opensearchdescription+xml" title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}" href="{{ pathto('_static/opensearch.xml', 1) }}"/>
-    {% endif %}
-
-  {% endif %}
-
-  {# RTD hosts this file, so just load on non RTD builds #}
-  {% if not READTHEDOCS %}
-    <link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
-  {% endif %}
-
-  {% for cssfile in css_files %}
-    <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
-  {% endfor %}
-
-  {% for cssfile in extra_css_files %}
-    <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
-  {% endfor %}
-
-  {%- block linktags %}
-    {%- if hasdoc('about') %}
-        <link rel="author" title="{{ _('About these documents') }}"
-              href="{{ pathto('about') }}"/>
-    {%- endif %}
-    {%- if hasdoc('genindex') %}
-        <link rel="index" title="{{ _('Index') }}"
-              href="{{ pathto('genindex') }}"/>
-    {%- endif %}
-    {%- if hasdoc('search') %}
-        <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}"/>
-    {%- endif %}
-    {%- if hasdoc('copyright') %}
-        <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}"/>
-    {%- endif %}
-    <link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}"/>
-    {%- if parents %}
-        <link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}"/>
-    {%- endif %}
-    {%- if next %}
-        <link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}"/>
-    {%- endif %}
-    {%- if prev %}
-        <link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}"/>
-    {%- endif %}
-  {%- endblock %}
-  {%- block extrahead %} {% endblock %}
-
-  {# Keep modernizr in head - http://modernizr.com/docs/#installing #}
-  <script src="_static/js/modernizr.min.js"></script>
-
-</head>
-
-<body class="wy-body-for-nav" role="document">
-
-  <div class="wy-grid-for-nav">
-
-    {# SIDE NAV, TOGGLES ON MOBILE #}
-    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
-      <div class="wy-side-nav-search">
-        {% block sidebartitle %}
-
-        {% if logo and theme_logo_only %}
-          <a href="{{ pathto(master_doc) }}">
-        {% else %}
-          <a href="{{ pathto(master_doc) }}" class="icon icon-home"> {{ project }}
-        {% endif %}
-
-        {% if logo %}
-          {# Not strictly valid HTML, but it's the only way to display/scale it properly, without weird scripting or heaps of work #}
-          <img src="{{ pathto('_static/' + logo, 1) }}" class="logo" />
-        {% endif %}
-        </a>
-
-        {% include "searchbox.html" %}
-
-        {% endblock %}
-      </div>
-
-      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-        {% block menu %}
-          {% set toctree = toctree(maxdepth=4, collapse=True, includehidden=True) %}
-          {% if toctree %}
-              {{ toctree }}
-          {% else %}
-              <!-- Local TOC -->
-              <div class="local-toc">{{ toc }}</div>
-          {% endif %}
-        {% endblock %}
-      </div>
-       
-    </nav>
-
-    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-      {# MOBILE NAV, TRIGGLES SIDE NAV ON TOGGLE #}
-      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
-        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
-        <a href="{{ pathto(master_doc) }}">{{ project }}</a>
-      </nav>
-
-
-      {# PAGE CONTENT #}
-      <div class="wy-nav-content">
-        <div class="rst-content">
-          {% include "breadcrumbs.html" %}
-          <div role="main" class="document">
-            {% if include_analytics %}
-              {% include "top.html" %}
-            {% endif %}
-            {% block body %}{% endblock %}
-            {% if include_analytics %}
-              {% include "bottom.html" %}
-              {% include "analytics.html" %}
-            {% endif %}
-          <hr/>
-          </div>
-          {% include "footer.html" %}
-        </div>
-      </div>
-
-    </section>
-
-  </div>
-  {% include "versions.html" %}
-
-  {% if not embedded %}
-
-    <script type="text/javascript">
-        var DOCUMENTATION_OPTIONS = {
-            URL_ROOT:'{{ url_root }}',
-            VERSION:'{{ release|e }}',
-            COLLAPSE_INDEX:false,
-            FILE_SUFFIX:'{{ '' if no_search_suffix else file_suffix }}',
-            HAS_SOURCE:  {{ has_source|lower }}
-        };
-    </script>
-    {%- for scriptfile in script_files %}
-      <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
-    {%- endfor %}
-
-  {% endif %}
-
-  {# RTD hosts this file, so just load on non RTD builds #}
-  {% if not READTHEDOCS %}
-    <script type="text/javascript" src="{{ pathto('_static/js/theme.js', 1) }}"></script>
-  {% endif %}
-
-  {# STICKY NAVIGATION #}
-  {% if theme_sticky_navigation %}
-  <script type="text/javascript">
-      jQuery(function () {
-          SphinxRtdTheme.StickyNav.enable();
-      });
-  </script>
-  {% endif %}
-
-  {%- block footer %} {% endblock %}
-
-</body>
-</html>
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 95cae29..0fddca0 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -32,9 +32,7 @@ import shlex
 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.
@@ -52,7 +50,7 @@ source_suffix = '.rst'
 master_doc = 'contents'
 
 # General information about the project.
-project = u'PySNMP'
+project = u'SNMP library for Python'
 copyright = u'2005-2017, Ilya Etingof <etingof at gmail.com>'
 author = u'Ilya Etingof <etingof at gmail.com>'
 
@@ -61,9 +59,9 @@ author = u'Ilya Etingof <etingof at gmail.com>'
 # built documents.
 #
 # The short X.Y version.
-version = '4.3'
+version = '4.4'
 # The full version, including alpha/beta/rc tags.
-release = '4.3'
+release = '4.4'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
@@ -107,20 +105,37 @@ pygments_style = 'sphinx'
 #keep_warnings = False
 
 # If true, `todo` and `todoList` produce output, else they produce nothing.
-todo_include_todos = True
+#todo_include_todos = True
 
 
 # -- Options for HTML output ----------------------------------------------
 
 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
-#html_theme = 'alabaster'
-html_theme = 'sphinx_rtd_theme'
+html_theme = 'alabaster'
+#html_theme = 'sphinx_rtd_theme'
 
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
 # documentation.
-#html_theme_options = {}
+html_theme_options = {
+    'logo': 'logo.svg',
+    'description': '<p align=left><i><b>Brewing free software for the greater good</i></b></p>',
+    'show_powered_by': False,
+    'github_user': 'etingof',
+    'github_repo': 'pysnmp',
+    'fixed_sidebar': True,
+}
+
+html_sidebars = {
+    '**': [
+        'about.html',
+        'navigation.html',
+        'relations.html',
+        'searchbox.html',
+        'donate.html',
+    ]
+}
 
 # Add any paths that contain custom themes here, relative to this directory.
 #html_theme_path = []
@@ -128,7 +143,7 @@ html_theme = 'sphinx_rtd_theme'
 # The name for this set of Sphinx documents.  If None, it defaults to
 # "<project> v<release> documentation".
 #html_title = None
-html_title = "PySNMP"
+#html_title = "PySNMP"
 
 # A shorter title for the navigation bar.  Default is the same as html_title.
 #html_short_title = None
@@ -140,17 +155,12 @@ html_title = "PySNMP"
 # The name of an image file (within the static path) to use as favicon of the
 # docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
 # pixels large.
-#html_favicon = None
+html_favicon = '.static/favicon.ico'
 
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
-if 'PYSNMPDEV' in os.environ:
-    html_static_path = ['.static']
-
-# Custom CSS theme
-if 'PYSNMPDEV' in os.environ:
-    html_style = 'css/rtdimproved.css'
+html_static_path = ['.static']
 
 # Add any extra paths that contain custom files (such as robots.txt or
 # .htaccess) here, relative to this directory. These files are copied
@@ -215,10 +225,6 @@ html_show_sphinx = False
 # Output file base name for HTML help builder.
 htmlhelp_basename = 'PySNMPdoc'
 
-html_context = {
-    'include_analytics': 'PYSNMPDEV' in os.environ
-}
-
 # -- Options for LaTeX output ---------------------------------------------
 
 latex_elements = {
@@ -301,10 +307,13 @@ texinfo_documents = [
 #texinfo_no_detailmenu = False
 
 
-# Example configuration for intersphinx: refer to the Python standard library.
-intersphinx_mapping = { 'python': ('https://docs.python.org/3.4/', None),
-                        'pysmi': ('http://pysmi.sf.net/', None),
-                        'twisted': ('https://twistedmatrix.com/documents/15.4.0/api/', None) }
+# Configuration for Intersphinx
+intersphinx_mapping = {
+    'python': ('https://docs.python.org/3.4/', None),
+    'pyasn1': ('http://snmplabs.com/pyasn1/', None),
+    'pysmi': ('http://snmplabs.com/pysmi/', None),
+    'twisted': ('https://twistedmatrix.com/documents/15.4.0/api/', None)
+}
 
 # this merges constructor docstring with class docstring
 autoclass_content = 'both'
diff --git a/docs/source/contents.rst b/docs/source/contents.rst
index 494d208..2319bbf 100644
--- a/docs/source/contents.rst
+++ b/docs/source/contents.rst
@@ -11,16 +11,16 @@ engine implementation. It features fully-functional SNMP engine capable
 to act in Agent/Manager/Proxy roles, talking SNMP v1/v2c/v3 protocol 
 versions over IPv4/IPv6 and other network transports.
 
-Despite its name, SNMP is not a really simple protocol. For instance its 
+Despite its name, SNMP is not really a simple protocol. For instance its
 third version introduces complex and open-ended security framework, 
 multilingual capabilities, remote configuration and other features. 
 PySNMP implementation closely follows intricate system details and features 
 bringing most possible power and flexibility to its users.
 
-Current PySNMP stable version is 4.3. It runs with Python 2.4 through 3.5 
+Current PySNMP stable version is 4.4. It runs with Python 2.4 through 3.6
 and is recommended for new applications as well as for migration from
 older, now obsolete, PySNMP releases. All site documentation and 
-examples are written for the 4.3 and later versions in mind.
+examples are written for the 4.4 and later versions in mind.
 Older materials are still available under the obsolete section.
 
 Besides the libraries, a set of pure-Python 
@@ -121,11 +121,9 @@ are collected in the following section.
 Contact
 -------
 
-Please, use our
-`mailing list <https://lists.sourceforge.net/lists/listinfo/pysnmp-users>`_
-or refer to
-`Stack Overflow <http://stackoverflow.com/questions/tagged/pysnmp>`_ 
-should you have any questions or issues in regards to PySNMP.
+In case of questions or troubles using PySNMP, please open up an
+`issue <https://github.com/etingof/pysnmp/issues>`_ at GitHub or ask at
+`Stack Overflow <http://stackoverflow.com/questions/tagged/pysnmp>`_ .
 
 Old site archive
 ----------------
diff --git a/docs/source/development.rst b/docs/source/development.rst
index abe9cba..920b0ad 100644
--- a/docs/source/development.rst
+++ b/docs/source/development.rst
@@ -11,17 +11,17 @@ hands on in the future.
 PySNMP library
 ++++++++++++++
 
-#. Built-in MIB parser. PySNMP uses a data model of its own to work with 
-   information contained in MIB files. To convert ASN.1-based MIB texts 
-   into Python modules, an off-line, third-party tool is employed. As it 
-   turns out, this approach has two major drawback: one is that PySNMP 
-   users may need to pre-process MIB texts to use them with their 
-   PySNMP-based applications. Another is that LibSMI's Python driver 
-   seems to miss some information carried by MIBs. Thus the solution would 
-   be to write another MIB parser and code generator which would produce 
+#. Built-in MIB parser. PySNMP uses a data model of its own to work with
+   information contained in MIB files. To convert ASN.1-based MIB texts
+   into Python modules, an off-line, third-party tool is employed. As it
+   turns out, this approach has two major drawback: one is that PySNMP
+   users may need to pre-process MIB texts to use them with their
+   PySNMP-based applications. Another is that LibSMI's Python driver
+   seems to miss some information carried by MIBs. Thus the solution would
+   be to write another MIB parser and code generator which would produce
    PySNMP compliant Python code right from MIB text files all by itself.
 
-   **Done:** see `PySMI project <http://pysmi.sf.net>`_ in conjuction with the latest PySNMP codebase.
+   **Done:** see `PySMI project <http://snmplabs.com/pysmi/>`_ in conjuction with the latest PySNMP codebase.
 
 #. Reverse MIB index. The variable-bindings received by the system whilst 
    in Manager role could be post-processed using the information kept in 
@@ -54,7 +54,6 @@ PySNMP library
    SMI/MIB subsystem into a database. PySNMP engine would talk to it 
    through its simple and well defined SMI API.
 
-
 Stand-alone PySNMP-based tools
 ++++++++++++++++++++++++++++++
 
@@ -64,7 +63,7 @@ Stand-alone PySNMP-based tools
    include extensive configuration facilities, fine-graned access 
    control and logging.
 
-   **Done:** see `SNMP Proxy Forwarder <http://snmpfwd.sf.net>`_.
+   **Done:** see `SNMP Proxy Forwarder <http://snmplabs.com/snmpfwd/>`_.
 
 #. SNMP Trap Receiver. We see this application as a simple yet flexible 
    SNMP TRAP collector. It would listen on network sockets of different 
@@ -82,10 +81,10 @@ Stand-alone PySNMP-based tools
    a relational database application. So we are planning to put some more 
    efforts into the Simulator project as time permits. 
 
-   **Done:** since `snmpsim-0.2.4 <http://snmpsim.sf.net>`_ 
+   **Done:** since `snmpsim-0.2.4 <http://snmplabs.com/snmpsim/>`_ 
 
 If you need some particular feature - please, 
-`drop us a note <http://pysnmp.sourceforge.net/contact.html>`_ . Once we 
+`open a feature request <https://github.com/etingof/pysnmp/issues/new>`_ . Once we 
 see a greater demand in particular area, we would re-arrange our 
 development resources to meet it sooner. 
 
@@ -94,7 +93,7 @@ sponsoring it. Please get back to us to discuss details.
 
... 4702 lines suppressed ...

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



More information about the Python-modules-commits mailing list