diff options
author | elie <elie> | 2012-02-11 11:44:06 +0000 |
---|---|---|
committer | elie <elie> | 2012-02-11 11:44:06 +0000 |
commit | 75726f8283730439dc618e92972912a5bc86e008 (patch) | |
tree | ffe4c884bff7b15c16e58dad977889ece3007d2e | |
parent | 7ea7ed5eee02474310d732bc4a03c7ce97ea2c87 (diff) | |
download | pysnmp-75726f8283730439dc618e92972912a5bc86e008.tar.gz |
out of PYTHONPATH MIB paths now supported
-rw-r--r-- | CHANGES | 1 | ||||
-rw-r--r-- | pysnmp/smi/builder.py | 32 |
2 files changed, 22 insertions, 11 deletions
@@ -25,6 +25,7 @@ Revision 4.2.2 module namespace so it could be used by ManagedObjects implementations. - When running on Python3, SMI will re-raise exceptions with the original traceback for easier diagnostics. +- Out of PYTHONPATH MIB paths now supported. - Fix to legacy MibBuilder.getMibPath() to prevent it from missing .egg-based components in path. - Fix to oneliner configuration routine that used to implicitly diff --git a/pysnmp/smi/builder.py b/pysnmp/smi/builder.py index 55c6795..116f712 100644 --- a/pysnmp/smi/builder.py +++ b/pysnmp/smi/builder.py @@ -43,7 +43,12 @@ class __AbstractMibSource: def init(self): if self.__inited is None: self.__inited = self._init() - return self.__inited + if self.__inited is self: + self.__inited = True + if self.__inited is True: + return self + else: + return self.__inited def listdir(self): return self._listdir() def read(self, f): for pycSfx, pycSfxLen, pycMode in self.__sfx[imp.PY_COMPILED]: @@ -90,15 +95,20 @@ class __AbstractMibSource: class ZipMibSource(__AbstractMibSource): def _init(self): - p = __import__( - self._srcName, globals(), locals(), self._srcName.split('.') - ) - if hasattr(p, '__loader__'): - self.__loader = p.__loader__ - self._srcName = self._srcName.replace('.', os.sep) - return self - else: - return DirMibSource(os.path.split(p.__file__)[0]).init() + try: + p = __import__( + self._srcName, globals(), locals(), self._srcName.split('.') + ) + if hasattr(p, '__loader__'): + self.__loader = p.__loader__ + self._srcName = self._srcName.replace('.', os.sep) + return self + else: + # Dir relative to PYTHONPATH + return DirMibSource(os.path.split(p.__file__)[0]).init() + except ImportError: + # Dir relative to CWD + return DirMibSource(self._srcName).init() def _parseDosTime(self, dosdate, dostime): t = ( ((dosdate >> 9) & 0x7f) + 1980, # year @@ -177,7 +187,7 @@ class MibBuilder: self.__mibSources = [ s.init() for s in mibSources ] debug.logger & debug.flagBld and debug.logger('setMibPath: new MIB sources %s' % (self.__mibSources,)) - def getMibSources(self): return self.__mibSources + def getMibSources(self): return tuple(self.__mibSources) # Legacy/compatibility methods (won't work for .eggs) def setMibPath(self, *mibPaths): |