Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 4.4.12 #437

Open
wants to merge 102 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
194d2ec
pysnmp-apps renamed into snmpclitools
etingof Feb 16, 2018
4b21d3d
typo fix in RFC1158::snmpOutReadOnlys
etingof Apr 9, 2018
6aed418
4.4.5
etingof Apr 9, 2018
bec02e6
Include LICENSE in wheel
etingof Apr 13, 2018
dff00bf
Use old Sphinx with old Python
etingof Apr 13, 2018
c419576
fix InetAddressType rendering
etingof Apr 18, 2018
1021d56
better InetAddressType rendering fix
etingof Apr 21, 2018
4938e8e
asyncio.async deprecated since 3.4.4 (#143)
wallies Apr 21, 2018
8da24e3
fix potential infinite loop in GETBULK response builder
etingof Apr 21, 2018
e7ca18b
VACM contextName memory leakk fix
etingof Apr 24, 2018
293f451
VACM contextName memory leak fix followup
etingof Apr 24, 2018
acab4ce
Add Python 3.7 support (#162)
ericwb Jun 28, 2018
49927e0
pin twisted versions
etingof May 18, 2018
1cec4e7
Typo "preperly" -> "properly" (#156)
acspike May 18, 2018
9051369
reduce tests output by tailing them
etingof Jun 29, 2018
ed7e72c
switch Travis back to 3.7-dev while 3.7 is not avail
etingof Jun 29, 2018
ee4c0a5
Fix typos
etingof Jul 3, 2018
f08dad8
Switch back to offical Python 3.7 build (#163)
ericwb Jul 3, 2018
06eeaf6
Fix scoping bug in asyncio wrapper
etingof Jul 4, 2018
23d1aa7
Fix var-bind initialization from ObjectIdentity at hlapi
etingof Jul 5, 2018
d7b86be
Fix typo in docstring
etingof Jul 5, 2018
d70831c
Revert "Fix var-bind initialization from ObjectIdentity at hlapi"
etingof Jul 5, 2018
6031836
Fix `Bits` initialization with `namedValues`
etingof Jul 20, 2018
e25f128
adding a basic tox handle to simplify running tests
mattsb42-aws Jan 31, 2018
5e13765
adding py33 to the tox auto-run environments
mattsb42-aws Feb 9, 2018
83a8ac9
Ensure tests run through tox are using the expected Python executable…
vincentbernat Jul 31, 2018
0d7f612
Fix py3.7 syntax error caused by async keyword (#180)
keuko Jul 31, 2018
7abfa51
Fix crash on wrong SNMPv3 security model
etingof Aug 4, 2018
ee321e0
Fix out-of-scope OID leak in hlapi table (#172)
etingof Aug 5, 2018
36f7584
Add PySnmpError.cause attribute (#168)
etingof Aug 5, 2018
d72ad91
Fix PySnmpError implementation
etingof Aug 5, 2018
44ab5d3
release 4.4.5
etingof Aug 5, 2018
d9f5fd2
changelog typo
etingof Aug 5, 2018
43a181b
Rename LICENSE.txt -> LICENSE.rst
etingof Aug 5, 2018
8a3727a
Fix Python 2.4-2.5 except statement
etingof Aug 5, 2018
98e2a3e
prepare 4.4.6
etingof Aug 6, 2018
be8d2ca
Improve package build and dependency tracking
etingof Aug 6, 2018
b0bbd37
Improve long description in Trove
etingof Aug 6, 2018
34836cc
Recover missing LICENSE in tarball
etingof Aug 8, 2018
daa2ce0
Fix lcd.unconfigure not removing cached addr value preventing the sam…
ryban Sep 9, 2018
fcd4435
Add a CHANGELOG entry for previous fix
etingof Sep 9, 2018
2a9466d
Tolerate duplicate enumerations
etingof Sep 9, 2018
51a15bd
Tolerate non-initialised entries in SNMP community table
etingof Sep 13, 2018
ddf3085
Release 4.4.6
etingof Sep 13, 2018
2d91fa1
Cut for 4.4.7
etingof Sep 13, 2018
250deca
Ensure distinct transports if timeout/retries differ
etingof Sep 20, 2018
c7f8654
Avoid deprecation warnings for asyncio.async() in server mode (#202)
fabriziovanni Sep 26, 2018
4cf3317
Reformat `isAccessAllowed()` for clarity
etingof Oct 6, 2018
1315e5e
Fix Sphinx markup for USM crypto algorithm IDs
etingof Oct 6, 2018
5057a1f
Use `compile()` before `exec` of MIB modules
etingof Oct 26, 2018
c8d699c
Expose ASN.1 `Null` type through `rfc1902` module
etingof Oct 26, 2018
cd48f6e
Fix hlapi LCD to include `contextName` (#217)
etingof Nov 3, 2018
6a850ea
Disable Travis builds for py 2.6, 3.2 & 3.3
etingof Nov 3, 2018
59de44e
Fix possible duplicate key condition in `OrderedDict`
etingof Dec 25, 2018
a2d1e7c
Fix wrong `set()` member deletion in `MibBuilder`
etingof Dec 25, 2018
5cc25c9
Switch Travis CI to Trusty
etingof Dec 29, 2018
49af917
Extend copyright notice to year 2019
etingof Dec 29, 2018
d1689d7
Fix undefined names in `TRANSPORT-ADDRESS-MIB.py`
etingof Dec 29, 2018
29825c1
Release 4.4.7
etingof Dec 30, 2018
a375c07
Prepare for 4.4.8
etingof Dec 30, 2018
475a0ba
Fix Pythonized MIB load in source form
etingof Dec 30, 2018
4b018af
Release 4.4.8
etingof Dec 30, 2018
2b3dcaf
Prepare for 4.4.9
etingof Jan 8, 2019
fd7f6a7
MIB loader ignores file and directory access errors
etingof Jan 8, 2019
bded1e3
Emit low-level sendmsg/recvmsg debugging
etingof Jan 10, 2019
11eb3fa
Add `IPV6_V6ONLY` IPV6 socket option
etingof Jan 10, 2019
3527500
Fix socket iov blob dump in debug
etingof Jan 11, 2019
b8638ff
Improve IPV6 debugging
etingof Jan 11, 2019
1f52f82
Do not set IP_PKTINFO socket option on IPv6 socket
etingof Jan 11, 2019
fbaa6da
Fix IPV6_TRANSPARENT socket option
etingof Jan 14, 2019
ed70cdf
Add missing SNMP PDU error classes
etingof Feb 8, 2019
c393c0c
Release 4.4.9
etingof Feb 9, 2019
531ccbc
Prepare for 4.4.10
etingof Feb 9, 2019
1de1055
Respect timer resolution in asyncore main loop
etingof Mar 31, 2019
8a6dc63
Update periodics call interval on timer resolution change
etingof Mar 31, 2019
c3d6619
Replace `imp` with `importlib` is available
etingof Apr 1, 2019
b7971b9
Fix `importlib` use on Py27
etingof Apr 12, 2019
d75f2fd
Fix `var-bindings` initialization
etingof Jun 23, 2019
0228371
Fix TRAP PDU proxy translation
etingof Jul 19, 2019
9441850
Rework VACM access control function (#287)
etingof Jul 29, 2019
f240384
Fix Python 2.4 compatibility
etingof Jul 29, 2019
4546121
Fix Python 2.5 compatibility
etingof Jul 29, 2019
5d9a176
Release 4.4.10
etingof Jul 29, 2019
5cefacc
Support various forms of `vacmViewTreeFamilyMask` input
etingof Jul 30, 2019
9dd4bcc
Make MIB objects resolution more forgiving
etingof Jul 30, 2019
e8fa401
Make received MIB objects resolution more forgiving
etingof Jul 30, 2019
a901d4f
Prepare for 4.4.11
etingof Aug 1, 2019
8cbbaeb
Add USM master and localized keys configuration support (#295)
etingof Aug 3, 2019
cd06c6f
Add missing enumeration to `pysnmpUemKeyType`
etingof Aug 4, 2019
0604280
Do not store incomplete USM keys and improve USM debugging
etingof Aug 4, 2019
6066897
Fix USM configuration for the case of partial keys
etingof Aug 4, 2019
89d14d5
Fix crashing VACM debugging
etingof Aug 5, 2019
c351e90
Move most of SNMP engine discovery code to security module
etingof Aug 6, 2019
6049b0c
Pin Twisted on Python < 3.5
etingof Aug 10, 2019
3488150
Introduce "wildcard" SNMP engine ID (#297)
etingof Aug 10, 2019
8a49b7d
Fix crash on AES key localization
etingof Aug 11, 2019
1340258
Release 4.4.11
etingof Aug 11, 2019
ba53a10
Prepare for 4.4.12
etingof Aug 11, 2019
5ecc898
Docstring fix
etingof Aug 11, 2019
a9964be
Add examples on master&localized keys use
etingof Aug 13, 2019
c5cefab
Fix broken SNMPv3 authoritative engine ID discovery
etingof Sep 24, 2019
1dcc042
Release 4.4.12
etingof Sep 24, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,6 @@ docs/source/.templates/layout.html

# Virtual envs
venv*

# Tox
.tox/
49 changes: 37 additions & 12 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,41 @@

language: python
python:
- "2.6"
- "2.7"
- "3.2"
- "3.3"
- "3.4"
- "3.5"
- "3.6"
- "nightly"
# - "pypy"
# - "pypy3"
cache: pip
matrix:
include:
- os: linux
dist: trusty
python: '2.6'
- os: linux
dist: trusty
python: '2.7'
- os: linux
dist: trusty
python: '3.2'
- os: linux
dist: trusty
python: '3.3'
- os: linux
dist: trusty
python: '3.4'
- os: linux
dist: trusty
python: '3.5'
- os: linux
dist: trusty
python: '3.6'
- os: linux
dist: xenial
sudo: true
python: '3.7'
- os: linux
dist: trusty
python: 'nightly'
- os: linux
dist: trusty
python: 'pypy'
- os: linux
dist: trusty
python: 'pypy3'
install:
- pip install -r requirements.txt -r devel-requirements.txt
- pip install -e .
Expand Down
116 changes: 110 additions & 6 deletions CHANGES.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,108 @@

Revision 4.4.12, released 2019-09-24
------------------------------------

- Fixed broken SNMPv3 `msgFlag` initialization on authoritative SNMP
engine ID discovery. This bug causes secure communication with peer
SNMP engines to stall at SNMP engine ID discovery procedure.

Revision 4.4.11, released 2019-08-10
------------------------------------

- Added SNMPv3 USM master and localized keys support to LCD configuration
- Improved initial and runtime USM debugging
- Fixed a bug in USM configuration which did not allow the same user names
to be added under different security names

Revision 4.4.10, released 2019-07-29
------------------------------------

- Reworked VACM access control function. Most important changes include:

* Added subtree match negation support (vacmViewTreeFamilyType)
* Added subtree family mask support (vacmViewTreeFamilyMask)
* Added prefix content name matching support (vacmAccessContextMatch)
* Added key VACM tables caching for better `isAccessAllowed` lookup
performance

One potential incompatibility may be caused by the `addContext()` call
which now needs to be made explicitly during low-level VACM configuration
rather than be a side effect of `addVacmAccess()` call.

- Rebased MIB importing code onto `importlib` because `imp` is long
deprecated
- Received MIB objects resolution made more forgiving to errors, added
optional `ignoreErrors` parameter to `ObjectType.resolveWithMib()` to
control that behaviour.
- Fixed asyncore main loop to respect non-default timer resolution
- Fixed `.setTimerResolution()` behaviour of abstract main loop dispatcher
to update call intervals of the existing periodic dispatcher jobs
- Fixed `var-bindings` initialization to prevent pyasn1 encoder failures
with newer pyasn1 versions where `SequenceOf` type looses its default
initializer.
- Fixed crash on uninitialized component serialization left out in
SNMP v1 TRAP PDU to SNMPv2/3 TRAP PDU proxy translation routine.

Revision 4.4.9, released 2019-02-09
-----------------------------------

- Made MIB loader ignoring file and directory access errors
- Added missing SNMP PDU error classes and their handling in Command Responder
- Fixed crash on MIB load failure in case of directory access error
- Fixed socket transparency option (IPV6_TRANSPARENT) to make IPv6
transparent operation functional

Revision 4.4.8, released 2018-12-30
-----------------------------------

- Fixed Pythonized MIB load (in the source form) - made sure to turn
it into a code object prior to its execution

Revision 4.4.7, released 2018-12-29
-----------------------------------

- Copyright notice extended to the year 2019
- Exposed ASN.1 `Null` type through `rfc1902` module for convenience.
- Use `compile()` before `exec`'ing MIB modules to attach filename to
the stack frames (ultimately shown in traceback/debugger)
- Fixed hlapi/v3arch transport target caching to ensure transport targets
are different even if just timeout/retries options differ
- Fixed hlapi LCD configurator to include `contextName`. Prior to this fix
sending SNMPv3 TRAP with non-default `contextName` would fail.
- Fixed possible duplicate key occurrence in the `OrderedDict` following
a race condition
- Fixed undefined name references in `inet_pton`/`inet_ntop` substitute
routines for IPv6 in `TRANSPORT-ADDRESS-MIB.py`

Revision 4.4.6, released 2018-09-13
-----------------------------------

- Improved package build and dependency tracking
- Fixed missing LICENSE from the tarball distribution
- Fixed `CommandGeneratorLcdConfigurator.unconfigure()` to fully clean up
internal caches, otherwise repetitive attempts to configure the target
would fail.
- Fix to tolerate possible duplicate enumerations in `Bits` and `Integer`
SMI types.
- Fix to tolerate non-initialised entries in SNMP community table. Once a
bad entry sneaked into the SNMP community table, all the subsequent
SNMP v1/v2c operations failed. The fix ignores incomplete SNMP community
table entries in the course of building indices.

Revision 4.4.5, released 2018-08-05
-----------------------------------

- Added PySnmpError.cause attribute holding parent exception tuple
- Fixed broken InetAddressType rendering caused by a pyasn1 regression
- Fixed typo in RFC1158 module
- Fixed possible infinite loop in GETBULK response PDU builder
- Fixed memory leak in the `config.delContext()` VACM management harness
- Fixed `Bits` class initialization when enumeration values are given
- Fixed crash caused by incoming SNMPv3 message requesting SNMPv1/v2c
security model
- Fixed out-of-scope OIDs leaking at the end of SNMP table at hlapi
`nextCmd` and `bulkCmd` calls when `lexicographicMode = False`

Revision 4.4.4, released 2018-01-03
-----------------------------------

Expand Down Expand Up @@ -557,7 +661,7 @@ Revision 4.2.4, released 2013-01-30
defaulted value changed from None to () meaning no var-binds.
- Attempt to convert Windows style EOL into UNIX ones in MIB source
modules appeared to be unnecessary and even destructive to modules
data in some cases. So the convertion code removed altogether.
data in some cases. So the conversion code removed altogether.
- Fix to isAccessAllowed() error handling at NotificationOriginator. System
used to crash on access denied condition.
- Fix to NotificationOriginator to make it use system uptime and trap OID
Expand Down Expand Up @@ -818,7 +922,7 @@ Revision 4.1.16a, released 2011-03-17
configuration (LCD).
+ default debug.logger is now just a zero value instead of an object
what saves big on frequent calls
+ SNMPv2-SMI columnar indices <-> index values convertion code optimized.
+ SNMPv2-SMI columnar indices <-> index values conversion code optimized.
+ pre-compute and re-use some of ASN.1 structures.
+ avoid setting PDU defaults to save on unnecessary initialization.
+ skip ASN.1 types verification where possible.
Expand Down Expand Up @@ -1008,7 +1112,7 @@ Revision 4.1.9a, released 2007-11-28
effects.
- Fix to rfc2576.v1ToV2c() PDU converter to perform noSuchName error code
translation.
- Fixes to Notification PDU convertion code at rfc2576 in part of
- Fixes to Notification PDU conversion code at rfc2576 in part of
snmpTrapOID handling.
- Fix to nonRepeaters object use as sequence slicer (must be int) at
cmdrsp.CommandResponderApplication
Expand All @@ -1030,7 +1134,7 @@ Revision 4.1.8a, released 2007-08-14
------------------------------------

- UNSTABLE ALPHA RELEASE.
- SMI/dispatcher timeout convertion multiplier is actually 100 (1/100 sec)
- SMI/dispatcher timeout conversion multiplier is actually 100 (1/100 sec)
rather than 1/1000. This fix affects timeouts specified through SMI.
- __repr__() implemented for UdpTransportTarget, CommunityData, UsmUserData
in oneliner module.
Expand Down Expand Up @@ -1081,7 +1185,7 @@ Revision 4.1.7a, released 2007-02-19
- Fix to MibViewController.getNodeName() to take MIB module name
into account (SF bug #1505847).
- Do explicit check for Counter32,Unsigned32,TimeTicks,Counter64 value types
in MibTableRow index convertion and in TextualConvention.prettyPrint()
in MibTableRow index conversion and in TextualConvention.prettyPrint()
methods (SF bug #1506341). Handle Bits in indices as RFC2578 suggests.
- Apply read-create column status to libsmi2pysnmp-generated code
whenever MIB text specifies that (SF bug #1508955).
Expand All @@ -1105,7 +1209,7 @@ Revision 4.1.7a, released 2007-02-19
- LCD unconfiguration functions for oneliners implemented (SF bug #1635270).
- unloadModules() and unexportSymbols() implemented at MibBuilder
- Notification type PDU proxy code fixed to produce symmetrical
convertion.
conversion.
- Various SNMP engine-internal caches expiration implemented.
- SMI-level access control now takes effect only if AC object is
passed to MIB instrumentation API.
Expand Down
2 changes: 1 addition & 1 deletion LICENSE.txt → LICENSE.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright (c) 2005-2018, Ilya Etingof <[email protected]>
Copyright (c) 2005-2019, Ilya Etingof <[email protected]>
All rights reserved.

Redistribution and use in source and binary forms, with or without
Expand Down
2 changes: 1 addition & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
include *.txt *.md *.sh
include *.rst *.txt *.md *.sh
recursive-include examples *.py
recursive-include docs/source *.rst *.svg *.py
recursive-include docs/mibs *.txt
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ SNMP library for Python
-----------------------
[![PyPI](https://img.shields.io/pypi/v/pysnmp.svg?maxAge=2592000)](https://pypi.python.org/pypi/pysnmp)
[![Python Versions](https://img.shields.io/pypi/pyversions/pysnmp.svg)](https://pypi.python.org/pypi/pysnmp/)
[![Build status](https://travis-ci.org/etingof/pysnmp.svg?branch=master)](https://secure.travis-ci.org/etingof/pysnmp)
[![GitHub license](https://img.shields.io/badge/license-BSD-blue.svg)](https://raw.githubusercontent.com/etingof/pysnmp/master/LICENSE.txt)
[![Build status](https://travis-ci.org/etingof/pysnmp.svg?branch=master)](https://travis-ci.org/etingof/pysnmp)
[![GitHub license](https://img.shields.io/badge/license-BSD-blue.svg)](https://raw.githubusercontent.com/etingof/pysnmp/master/LICENSE.rst)

This is a pure-Python, open source and free implementation of v1/v2c/v3
SNMP engine distributed under 2-clause [BSD license](http://snmplabs.com/pysnmp/license.html).
Expand All @@ -27,7 +27,7 @@ Features
* [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
* 100% Python, works with Python 2.4 though 3.7
* MT-safe (if SnmpEngine is thread-local)

Features, specific to SNMPv3 model include:
Expand Down Expand Up @@ -59,11 +59,11 @@ to download and install PySNMP along with its dependencies:
* [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)
Besides the library, command-line [SNMP utilities](https://github.com/etingof/snmpclitools)
written in pure-Python could be installed via:

```bash
$ pip install pysnmp-apps
$ pip install snmpclitools
```

and used in the very similar manner as conventional Net-SNMP tools:
Expand Down Expand Up @@ -156,4 +156,4 @@ or try browsing pysnmp

Bug reports and PRs are appreciated! ;-)

Copyright (c) 2005-2018, [Ilya Etingof](mailto:[email protected]). All rights reserved.
Copyright (c) 2005-2019, [Ilya Etingof](mailto:[email protected]). All rights reserved.
17 changes: 15 additions & 2 deletions devel-requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
sphinx
twisted
Sphinx <= 1.6; python_version < '2.7'
Sphinx > 1.6; python_version >= '2.7'
trollius; python_version < '3.0'
# NOTE: Twisted < 19.2.1 has a security problem in URL handling.
# However, newer Twisted does not work on older Pythons. That's why
# we have to pin to older Twisted here.
# On the other hand, pysnmp does not use anything HTTP, however other
# dependencies can rely on that.
twisted < 15.4; python_version < '2.7'
twisted; python_version == '2.7'
twisted < 17.9; python_version == '3.0'
twisted < 17.9; python_version == '3.1'
twisted < 17.9; python_version == '3.2'
twisted <= 17.9; python_version == '3.3'
twisted <= 17.9; python_version == '3.4'
twisted; python_version >= '3.5'
15 changes: 15 additions & 0 deletions docs/mibs/PYSNMP-USM-MIB.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ pysnmpUsmMIB MODULE-IDENTITY
DESCRIPTION
"This MIB module defines objects specific to User
Security Model (USM) implementation at PySNMP."
REVISION "201908300000Z"
DESCRIPTION "Added USM key types"
REVISION "201707300000Z"
DESCRIPTION "Extended authentication key size"
REVISION "201704140000Z"
Expand Down Expand Up @@ -56,6 +58,19 @@ pysnmpUsmDiscovery OBJECT-TYPE
DEFVAL { doDiscover }
::= { pysnmpUsmCfg 2 }

pysnmpUsmKeyType OBJECT-TYPE
SYNTAX INTEGER { passphrase (0), master(1), localized(2) }
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "When configuring USM user, the value of this enumeration
determines how the keys should be treated. The default
value "passphrase" means that given keys are plain-text
pass-phrases, "master" indicates that the keys are pre-hashed
pass-phrases, while "localized" stands for pre-hashed
pass-phrases mixed with SNMP Security Engine ID value."
DEFVAL { passphrase }
::= { pysnmpUsmCfg 3 }

-- The usmUser Group ************************************************

pysnmpUsmUser OBJECT IDENTIFIER ::= { pysnmpUsmMIBObjects 3 }
Expand Down
2 changes: 1 addition & 1 deletion docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@

# General information about the project.
project = u'SNMP library for Python'
copyright = u'2005-2018, Ilya Etingof <[email protected]>'
copyright = u'2005-2019, Ilya Etingof <[email protected]>'
author = u'Ilya Etingof <[email protected]>'

# The version info for the project you're documenting, acts as replacement for
Expand Down
4 changes: 2 additions & 2 deletions docs/source/contents.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ 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.4. It runs with Python 2.4 through 3.6
Current PySNMP stable version is 4.4. It runs with Python 2.4 through 3.7
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.4 and later versions in mind.
Older materials are still available under the obsolete section.

Besides the libraries, a set of pure-Python
`command-line tools <https://pypi.python.org/pypi/pysnmp-apps/>`_
`command-line tools <https://pypi.python.org/pypi/snmpclitools/>`_
are shipped along with the system. Those tools mimic the interface
and behaviour of popular Net-SNMP snmpget/snmpset/snmpwalk utilities.
They may be useful in a cross-platform situations as well as a testing
Expand Down
2 changes: 1 addition & 1 deletion docs/source/development.rst
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ sponsoring it. Please get back to us to discuss details.

Contributions to the PySNMP source code is greatly appreciated as well.
We require contributed code to run with Python 2.4 through the latest
Python version (which is 3.6 at the time of this writing). Contributed
Python version (which is 3.7 at the time of this writing). Contributed
code will be redistributed under the terms of the same
`license <http://snmplabs.com/pysnmp/>`_ as PySNMP is.

Loading