summaryrefslogtreecommitdiff
path: root/pysnmp
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2019-02-10 18:30:59 +0100
committerGitHub <noreply@github.com>2019-02-10 18:30:59 +0100
commit5c64b499c2cf6f168970aa7ae51fe4997cdd89fc (patch)
tree54a6e95198f22cf293923406f46f4eacc0f10155 /pysnmp
parentcc2632d6d5c0096e0b563fb15750562c281af1eb (diff)
downloadpysnmp-git-5c64b499c2cf6f168970aa7ae51fe4997cdd89fc.tar.gz
Officially remove Python < 2.6 support (#239)
Perhaps previous commits have already broken older Python support. This commit mostly declares Python 2.6+ support.
Diffstat (limited to 'pysnmp')
-rw-r--r--pysnmp/carrier/sockmsg.py1
-rw-r--r--pysnmp/hlapi/v1arch/asyncore/sync/cmdgen.py8
-rw-r--r--pysnmp/hlapi/v1arch/asyncore/sync/ntforg.py8
-rw-r--r--pysnmp/hlapi/v3arch/asyncore/sync/__init__.py8
-rw-r--r--pysnmp/hlapi/v3arch/asyncore/sync/cmdgen.py8
-rw-r--r--pysnmp/hlapi/v3arch/asyncore/sync/compat/__init__.py1
-rw-r--r--pysnmp/hlapi/v3arch/asyncore/sync/compat/cmdgen.py251
-rw-r--r--pysnmp/hlapi/v3arch/asyncore/sync/compat/ntforg.py51
-rw-r--r--pysnmp/hlapi/v3arch/asyncore/sync/ntforg.py8
-rw-r--r--pysnmp/proto/rfc1902.py1
-rw-r--r--pysnmp/proto/secmod/rfc3414/priv/des.py7
11 files changed, 3 insertions, 349 deletions
diff --git a/pysnmp/carrier/sockmsg.py b/pysnmp/carrier/sockmsg.py
index deab4b6d..e36bc85a 100644
--- a/pysnmp/carrier/sockmsg.py
+++ b/pysnmp/carrier/sockmsg.py
@@ -20,7 +20,6 @@ import sys
from pysnmp import debug
if sys.version_info[:2] < (3, 3):
- # noinspection PyUnusedLocal
def getRecvFrom(addressType):
raise error.CarrierError('sendmsg()/recvmsg() interface is not supported by this OS and/or Python version')
diff --git a/pysnmp/hlapi/v1arch/asyncore/sync/cmdgen.py b/pysnmp/hlapi/v1arch/asyncore/sync/cmdgen.py
index bb7b9ad5..4ca7c66c 100644
--- a/pysnmp/hlapi/v1arch/asyncore/sync/cmdgen.py
+++ b/pysnmp/hlapi/v1arch/asyncore/sync/cmdgen.py
@@ -4,7 +4,6 @@
# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
-from sys import version_info
from pysnmp.hlapi.v1arch.asyncore import cmdgen
from pysnmp.hlapi.varbinds import *
from pysnmp.proto.rfc1905 import endOfMibView
@@ -13,13 +12,6 @@ from pyasn1.type.univ import Null
__all__ = ['getCmd', 'nextCmd', 'setCmd', 'bulkCmd']
-if version_info[:2] < (2, 6):
- __all__.append('next')
-
- # noinspection PyShadowingBuiltins
- def next(iter):
- return iter.next()
-
VB_PROCESSOR = CommandGeneratorVarBinds()
diff --git a/pysnmp/hlapi/v1arch/asyncore/sync/ntforg.py b/pysnmp/hlapi/v1arch/asyncore/sync/ntforg.py
index 4732b460..d3e3ee03 100644
--- a/pysnmp/hlapi/v1arch/asyncore/sync/ntforg.py
+++ b/pysnmp/hlapi/v1arch/asyncore/sync/ntforg.py
@@ -4,7 +4,6 @@
# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
-from sys import version_info
from pysnmp.hlapi.v1arch.asyncore import ntforg
from pysnmp.hlapi.varbinds import *
from pysnmp.proto import errind
@@ -12,13 +11,6 @@ from pyasn1.type.univ import Null
__all__ = ['sendNotification']
-if version_info[:2] < (2, 6):
- __all__.append('next')
-
- # noinspection PyShadowingBuiltins
- def next(iter):
- return iter.next()
-
def sendNotification(snmpDispatcher, authData, transportTarget,
notifyType, *varBinds, **options):
diff --git a/pysnmp/hlapi/v3arch/asyncore/sync/__init__.py b/pysnmp/hlapi/v3arch/asyncore/sync/__init__.py
index b537bc28..9ff7d84d 100644
--- a/pysnmp/hlapi/v3arch/asyncore/sync/__init__.py
+++ b/pysnmp/hlapi/v3arch/asyncore/sync/__init__.py
@@ -11,9 +11,5 @@ from pysnmp.hlapi.v3arch.context import *
from pysnmp.hlapi.v3arch.asyncore.transport import *
from pysnmp.entity.engine import *
-try:
- from pysnmp.hlapi.v3arch.asyncore.sync.cmdgen import *
- from pysnmp.hlapi.v3arch.asyncore.sync.ntforg import *
-except SyntaxError:
- from pysnmp.hlapi.v3arch.asyncore.sync.compat.cmdgen import *
- from pysnmp.hlapi.v3arch.asyncore.sync.compat.ntforg import *
+from pysnmp.hlapi.v3arch.asyncore.sync.cmdgen import *
+from pysnmp.hlapi.v3arch.asyncore.sync.ntforg import *
diff --git a/pysnmp/hlapi/v3arch/asyncore/sync/cmdgen.py b/pysnmp/hlapi/v3arch/asyncore/sync/cmdgen.py
index d8bb8e34..7caa05ba 100644
--- a/pysnmp/hlapi/v3arch/asyncore/sync/cmdgen.py
+++ b/pysnmp/hlapi/v3arch/asyncore/sync/cmdgen.py
@@ -4,7 +4,6 @@
# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
-from sys import version_info
from pysnmp.hlapi.v3arch.asyncore import cmdgen
from pysnmp.hlapi.varbinds import *
from pysnmp.proto.rfc1905 import endOfMibView
@@ -13,13 +12,6 @@ from pyasn1.type.univ import Null
__all__ = ['getCmd', 'nextCmd', 'setCmd', 'bulkCmd']
-if version_info[:2] < (2, 6):
- __all__.append('next')
-
- # noinspection PyShadowingBuiltins
- def next(iter):
- return iter.next()
-
def getCmd(snmpEngine, authData, transportTarget, contextData,
*varBinds, **options):
diff --git a/pysnmp/hlapi/v3arch/asyncore/sync/compat/__init__.py b/pysnmp/hlapi/v3arch/asyncore/sync/compat/__init__.py
deleted file mode 100644
index 8c3066b2..00000000
--- a/pysnmp/hlapi/v3arch/asyncore/sync/compat/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# This file is necessary to make this directory a package.
diff --git a/pysnmp/hlapi/v3arch/asyncore/sync/compat/cmdgen.py b/pysnmp/hlapi/v3arch/asyncore/sync/compat/cmdgen.py
deleted file mode 100644
index bb9703f4..00000000
--- a/pysnmp/hlapi/v3arch/asyncore/sync/compat/cmdgen.py
+++ /dev/null
@@ -1,251 +0,0 @@
-#
-# This file is part of pysnmp software.
-#
-# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
-# License: http://snmplabs.com/pysnmp/license.html
-#
-# This is a Python 2.6- version of the same file at level up
-#
-from pysnmp.hlapi.v3arch.asyncore import cmdgen
-from pysnmp.hlapi.varbinds import *
-from pysnmp.proto.rfc1905 import endOfMibView
-from pysnmp.proto import errind
-from pyasn1.type.univ import Null
-
-__all__ = ['getCmd', 'nextCmd', 'setCmd', 'bulkCmd', 'next']
-
-
-# noinspection PyShadowingBuiltins
-def next(iter):
- return iter.next()
-
-
-def getCmd(snmpEngine, authData, transportTarget, contextData,
- *varBinds, **options):
- # noinspection PyShadowingNames
- def cbFun(snmpEngine, sendRequestHandle,
- errorIndication, errorStatus, errorIndex,
- varBinds, cbCtx):
- cbCtx['errorIndication'] = errorIndication
- cbCtx['errorStatus'] = errorStatus
- cbCtx['errorIndex'] = errorIndex
- cbCtx['varBinds'] = varBinds
-
- cbCtx = {}
-
- if varBinds:
- cmdgen.getCmd(snmpEngine, authData, transportTarget,
- contextData, *varBinds,
- cbFun=cbFun, cbCtx=cbCtx,
- lookupMib=options.get('lookupMib', True))
-
- snmpEngine.transportDispatcher.runDispatcher()
-
- errorIndication = cbCtx['errorIndication']
- errorStatus = cbCtx['errorStatus']
- errorIndex = cbCtx['errorIndex']
- varBinds = cbCtx['varBinds']
- else:
- errorIndication = errorStatus = errorIndex = None
- varBinds = []
-
- yield errorIndication, errorStatus, errorIndex, varBinds
-
-
-def setCmd(snmpEngine, authData, transportTarget, contextData,
- *varBinds, **options):
- # noinspection PyShadowingNames
- def cbFun(snmpEngine, sendRequestHandle,
- errorIndication, errorStatus, errorIndex,
- varBinds, cbCtx):
- cbCtx['errorIndication'] = errorIndication
- cbCtx['errorStatus'] = errorStatus
- cbCtx['errorIndex'] = errorIndex
- cbCtx['varBinds'] = varBinds
-
- cbCtx = {}
-
- while True:
- cmdgen.setCmd(snmpEngine, authData, transportTarget,
- contextData, *varBinds,
- cbFun=cbFun, cbCtx=cbCtx,
- lookupMib=options.get('lookupMib', True))
-
- snmpEngine.transportDispatcher.runDispatcher()
-
- yield (cbCtx['errorIndication'],
- cbCtx['errorStatus'], cbCtx['errorIndex'],
- cbCtx['varBinds'])
-
- if cbCtx['errorIndication'] != errind.requestTimedOut:
- break
-
-
-def nextCmd(snmpEngine, authData, transportTarget, contextData,
- *varBinds, **options):
- # noinspection PyShadowingNames
- def cbFun(snmpEngine, sendRequestHandle,
- errorIndication, errorStatus, errorIndex,
- varBindTable, cbCtx):
- cbCtx['errorIndication'] = errorIndication
- cbCtx['errorStatus'] = errorStatus
- cbCtx['errorIndex'] = errorIndex
- cbCtx['varBindTable'] = varBindTable
-
- lexicographicMode = options.get('lexicographicMode', True)
- ignoreNonIncreasingOid = options.get('ignoreNonIncreasingOid', False)
- maxRows = options.get('maxRows', 0)
- maxCalls = options.get('maxCalls', 0)
-
- cbCtx = {}
-
- vbProcessor = CommandGeneratorVarBinds()
-
- initialVars = [x[0] for x in vbProcessor.makeVarBinds(snmpEngine.cache, varBinds)]
-
- totalRows = totalCalls = 0
-
- while True:
- cmdgen.nextCmd(snmpEngine, authData, transportTarget, contextData,
- *[(x[0], Null('')) for x in varBinds],
- cbFun=cbFun, cbCtx=cbCtx,
- lookupMib=options.get('lookupMib', True))
-
- snmpEngine.transportDispatcher.runDispatcher()
-
- errorIndication = cbCtx['errorIndication']
- errorStatus = cbCtx['errorStatus']
- errorIndex = cbCtx['errorIndex']
-
- if ignoreNonIncreasingOid and errorIndication and \
- isinstance(errorIndication, errind.OidNotIncreasing):
- errorIndication = None
-
- if errorIndication:
- yield errorIndication, errorStatus, errorIndex, varBinds
- if errorIndication != errind.requestTimedOut:
- return
- elif errorStatus:
- if errorStatus == 2:
- # Hide SNMPv1 noSuchName error which leaks in here
- # from SNMPv1 Agent through internal pysnmp proxy.
- errorStatus = errorStatus.clone(0)
- errorIndex = errorIndex.clone(0)
- yield errorIndication, errorStatus, errorIndex, varBinds
- return
- else:
- varBinds = cbCtx['varBindTable'] and cbCtx['varBindTable'][0]
- for idx, varBind in enumerate(varBinds):
- name, val = varBind
- if not isinstance(val, Null):
- if lexicographicMode or initialVars[idx].isPrefixOf(name):
- break
- else:
- return
-
- totalRows += 1
- totalCalls += 1
-
- yield errorIndication, errorStatus, errorIndex, varBinds
-
- if maxRows and totalRows >= maxRows or \
- maxCalls and totalCalls >= maxCalls:
- return
-
-
-def bulkCmd(snmpEngine, authData, transportTarget, contextData,
- nonRepeaters, maxRepetitions, *varBinds, **options):
- # noinspection PyShadowingNames
- def cbFun(snmpEngine, sendRequestHandle,
- errorIndication, errorStatus, errorIndex,
- varBindTable, cbCtx):
- cbCtx['errorIndication'] = errorIndication
- cbCtx['errorStatus'] = errorStatus
- cbCtx['errorIndex'] = errorIndex
- cbCtx['varBindTable'] = varBindTable
-
- lexicographicMode = options.get('lexicographicMode', True)
- ignoreNonIncreasingOid = options.get('ignoreNonIncreasingOid', False)
- maxRows = options.get('maxRows', 0)
- maxCalls = options.get('maxCalls', 0)
-
- cbCtx = {}
-
- vbProcessor = CommandGeneratorVarBinds()
-
- initialVars = [x[0] for x in vbProcessor.makeVarBinds(snmpEngine.cache, varBinds)]
- nullVarBinds = [False] * len(initialVars)
-
- totalRows = totalCalls = 0
- stopFlag = False
-
- while not stopFlag:
- if maxRows and totalRows < maxRows:
- maxRepetitions = min(maxRepetitions, maxRows - totalRows)
-
- cmdgen.bulkCmd(snmpEngine, authData, transportTarget, contextData,
- nonRepeaters, maxRepetitions,
- *[(x[0], Null('')) for x in varBinds],
- cbFun=cbFun, cbCtx=cbCtx,
- lookupMib=options.get('lookupMib', True))
-
- snmpEngine.transportDispatcher.runDispatcher()
-
- errorIndication = cbCtx['errorIndication']
- errorStatus = cbCtx['errorStatus']
- errorIndex = cbCtx['errorIndex']
- varBindTable = cbCtx['varBindTable']
-
- if ignoreNonIncreasingOid and errorIndication and \
- isinstance(errorIndication, errind.OidNotIncreasing):
- errorIndication = None
-
- if errorIndication:
- yield (errorIndication, errorStatus, errorIndex,
- varBindTable and varBindTable[0] or [])
- if errorIndication != errind.requestTimedOut:
- return
- elif errorStatus:
- if errorStatus == 2:
- # Hide SNMPv1 noSuchName error which leaks in here
- # from SNMPv1 Agent through internal pysnmp proxy.
- errorStatus = errorStatus.clone(0)
- errorIndex = errorIndex.clone(0)
- yield (errorIndication, errorStatus, errorIndex,
- varBindTable and varBindTable[0] or [])
- return
- else:
- for i in range(len(varBindTable)):
- stopFlag = True
- if len(varBindTable[i]) != len(initialVars):
- varBindTable = i and varBindTable[:i - 1] or []
- break
- for j in range(len(varBindTable[i])):
- name, val = varBindTable[i][j]
- if nullVarBinds[j]:
- varBindTable[i][j] = name, endOfMibView
- continue
- stopFlag = False
- if isinstance(val, Null):
- nullVarBinds[j] = True
- elif not lexicographicMode and \
- not initialVars[j].isPrefixOf(name):
- varBindTable[i][j] = name, endOfMibView
- nullVarBinds[j] = True
- if stopFlag:
- varBindTable = i and varBindTable[:i - 1] or []
- break
-
- totalRows += len(varBindTable)
- totalCalls += 1
-
- if maxRows and totalRows >= maxRows:
- if totalRows > maxRows:
- varBindTable = varBindTable[:-(totalRows - maxRows)]
- stopFlag = True
-
- if maxCalls and totalCalls >= maxCalls:
- stopFlag = True
-
- for varBinds in varBindTable:
- yield errorIndication, errorStatus, errorIndex, varBinds
diff --git a/pysnmp/hlapi/v3arch/asyncore/sync/compat/ntforg.py b/pysnmp/hlapi/v3arch/asyncore/sync/compat/ntforg.py
deleted file mode 100644
index 5b10cd0e..00000000
--- a/pysnmp/hlapi/v3arch/asyncore/sync/compat/ntforg.py
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# This file is part of pysnmp software.
-#
-# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
-# License: http://snmplabs.com/pysnmp/license.html
-#
-# This is a Python 2.6- version of the same file at level up
-#
-from pysnmp.hlapi.v3arch.asyncore import ntforg
-
-__all__ = ['sendNotification', 'next']
-
-
-# noinspection PyShadowingBuiltins
-def next(iter):
- return iter.next()
-
-
-#
-# Synchronous one-liner SNMP Notification Originator application
-#
-
-def sendNotification(snmpEngine, authData, transportTarget, contextData,
- notifyType, varBinds, **options):
- # noinspection PyShadowingNames
- def cbFun(snmpEngine, sendRequestHandle,
- errorIndication, errorStatus, errorIndex,
- varBinds, cbCtx):
- cbCtx['errorIndication'] = errorIndication
- cbCtx['errorStatus'] = errorStatus
- cbCtx['errorIndex'] = errorIndex
- cbCtx['varBinds'] = varBinds
-
- cbCtx = {}
-
- if varBinds:
- ntforg.sendNotification(snmpEngine, authData, transportTarget,
- contextData, notifyType, varBinds,
- cbFun, cbCtx, options.get('lookupMib', True))
-
- snmpEngine.transportDispatcher.runDispatcher()
-
- errorIndication = cbCtx.get('errorIndication')
- errorStatus = cbCtx.get('errorStatus')
- errorIndex = cbCtx.get('errorIndex')
- varBinds = cbCtx.get('varBinds', [])
- else:
- errorIndication = errorStatus = errorIndex = None
- varBinds = []
-
- yield errorIndication, errorStatus, errorIndex, varBinds
diff --git a/pysnmp/hlapi/v3arch/asyncore/sync/ntforg.py b/pysnmp/hlapi/v3arch/asyncore/sync/ntforg.py
index c466c869..e334eefd 100644
--- a/pysnmp/hlapi/v3arch/asyncore/sync/ntforg.py
+++ b/pysnmp/hlapi/v3arch/asyncore/sync/ntforg.py
@@ -4,18 +4,10 @@
# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
-from sys import version_info
from pysnmp.hlapi.v3arch.asyncore import ntforg
__all__ = ['sendNotification']
-if version_info[:2] < (2, 6):
- __all__.append('next')
-
- # noinspection PyShadowingBuiltins
- def next(iter):
- return iter.next()
-
def sendNotification(snmpEngine, authData, transportTarget, contextData,
notifyType, *varBinds, **options):
diff --git a/pysnmp/proto/rfc1902.py b/pysnmp/proto/rfc1902.py
index 6c569a12..14900ce7 100644
--- a/pysnmp/proto/rfc1902.py
+++ b/pysnmp/proto/rfc1902.py
@@ -4,7 +4,6 @@
# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
-from sys import version_info
from pyasn1.type import univ, tag, constraint, namedtype, namedval
from pysnmp.proto import rfc1155, error
diff --git a/pysnmp/proto/secmod/rfc3414/priv/des.py b/pysnmp/proto/secmod/rfc3414/priv/des.py
index c9b483a2..a9a1137c 100644
--- a/pysnmp/proto/secmod/rfc3414/priv/des.py
+++ b/pysnmp/proto/secmod/rfc3414/priv/des.py
@@ -16,8 +16,6 @@ except ImportError:
md5 = md5.new
sha1 = sha.new
-from sys import version_info
-
try:
from pysnmpcrypto import des, PysnmpCryptoError
@@ -41,10 +39,7 @@ class Des(base.AbstractEncryptionService):
SERVICE_ID = (1, 3, 6, 1, 6, 3, 10, 1, 2, 2) # usmDESPrivProtocol
KEY_SIZE = 16
- if version_info < (2, 3):
- local_int = int(random.random() * 0xffffffff)
- else:
- local_int = random.randrange(0, 0xffffffff)
+ local_int = random.randrange(0, 0xffffffff)
def hashPassphrase(self, authProtocol, privKey):
if authProtocol == hmacmd5.HmacMd5.SERVICE_ID: