From 90b5eb3030aa26f08a498f74e9da0372b60bc706 Mon Sep 17 00:00:00 2001 From: Lex Li Date: Tue, 13 Feb 2024 12:40:12 -0500 Subject: [PATCH] Bumped the version. --- CHANGES.txt | 87 +++++++++++--------- docs/source/conf.py | 196 +++++++++++++++++++++++--------------------- pyproject.toml | 2 +- pysnmp/__init__.py | 8 +- 4 files changed, 152 insertions(+), 141 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index a58245fe3..5c984c705 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,8 @@ +Revision 5.0.37, released 2024-2-13 + +- Simplified asyncio dispatch. +- Added ignoreNonIncreasingOid option to nextCmd and bulkCmd. + Revision 5.0.36, released 2024-2-10 ----------------------------------- @@ -459,13 +464,13 @@ Revision 4.3.0, released 2015-09-28 - Initial support for the asyncio & Trollius frameworks and coroutines-based SNMP Applications interfaces added. Both IPv4 and IPv6 datagram transports are currently supported. -- Original asynsock transport and AsyncsockDispatcher renamed into +- Original asynsock transport and AsyncsockDispatcher renamed into asyncore and AsyncoreDispatcher respectively to provide better hint to fellow devs on the underlying transport being used. Backward compatibility preserved. - The asyncore-based transport subsystem extended to support POSIX sendmsg()/recvmsg() based socket communication what could be used, - among other things, in the context of a transparent SNMP proxy + among other things, in the context of a transparent SNMP proxy application. Technically, the following features were brought into pysnmp with this update: @@ -476,8 +481,8 @@ Revision 4.3.0, released 2015-09-28 on both primary and secondary IP interfaces. - Internal oneliner apps configuration cache moved from respective - apps objects to [a singular] snmpEngine "user context" object. - That would allow for better cache reuse and allow for a single app + apps objects to [a singular] snmpEngine "user context" object. + That would allow for better cache reuse and allow for a single app working with many snmpEngine instances. - Oneliner GETBULK Command Generator now strips possible excessive OIDs off the bottom of returned var-binds table. @@ -514,7 +519,7 @@ Revision 4.3.0, released 2015-09-28 across reboots. - Make config.delTransport() returning detached transport object. Asyncio examples now use this facility to explicitly shutdown transport object. -- Parts of SMIv1 remnant MIBs (RFC1213-MIB, RFC1158-MIB) added to provide +- Parts of SMIv1 remnant MIBs (RFC1213-MIB, RFC1158-MIB) added to provide complete compatibility with SMIv1. Symbols defined in these MIBs only present in SMIv1 so they can't be substituted with their SMIv2 analogues. - MibBuilder.addMibSources() convenience method added. @@ -526,12 +531,12 @@ Revision 4.3.0, released 2015-09-28 PDU handling. The two new classed are ObjectIdentity and ObjectType. The ObjectIdentity class additionally supports just a MIB module name initializer in which case if resolves into either first or last symbol - in given MIB. Another option is just a MIB symbol initializer without + in given MIB. Another option is just a MIB symbol initializer without specifying MIB module. This new subsystem is moved from the scope of oneliner to more common pysnmp.smi.rfc1903 scope to more naturally invoke it from whatever part of pysnmp requires MIB services. -- MibBuilder now prepends the contents of environment variables it +- MibBuilder now prepends the contents of environment variables it recognizes (PYSNMP_MIB_DIR, PYSNMP_MIB_DIRS, PYSNMP_MIB_PKGS) rather than using them instead of its default core MIBs. - Removed RowStatus default value as it may collide with possible subclass @@ -540,14 +545,14 @@ Revision 4.3.0, released 2015-09-28 to better address ordered nature of MIB tree nodes (namely, getFirst*, getLast* family of methods). - Wheel distribution format now supported. -- Fix to authoritative engine side snmpEngineID discovery procedure: +- Fix to authoritative engine side snmpEngineID discovery procedure: respond with notInTimeWindows rather then with unsupportedSecurityLevel at time synchronization phase. - Fix to rfc1902.Bits type to make it accepting hex and binary initializers, cope with missing bits identifieirs at prettyPrint(). - Memory leak fixed in CommandForwarder examples. - Fix to BULK CommandGenerator to use the same nonRepeaters OIDs across - multiple GETBULK iterations so returned table for nonRepeaters columns + multiple GETBULK iterations so returned table for nonRepeaters columns would hold the same var-bind. - Fix to CommandGenerator to make sendRequestHandle persistent across multiple iterations of GETNEXT/GETBULK queries. @@ -561,10 +566,10 @@ Revision 4.3.0, released 2015-09-28 namedValue parameter positionally rather than binding it by name. - Fix to PDU translation service (proto.proxy.rfc2576) to make it initializing errorIndex & errorStatus components of the resulting PDU. -- Fix to MsgAndPduDispatcher.sendPdu() to clean up request queue on +- Fix to MsgAndPduDispatcher.sendPdu() to clean up request queue on pysnmp-level processing failure. - Fix to SNMPv1/v2c message processing subsystem to make it serving - unique PDU request-id's in both outgoing and incoming confirmed + unique PDU request-id's in both outgoing and incoming confirmed and response PDU types. Duplicate request-id's in unrelated PDUs may cause cache errors otherwise. - Fix to licensing terms of multiple twisted backend modules to make @@ -607,7 +612,7 @@ Revision 4.2.5, released 2013-10-02 scene. - The $PYSNMP_MIB_DIR & $PYSNMP_MIB_DIRS & $PYSNMP_MIB_PKGS path separator made platform-specific. -- Change to rfc2576.v1tov2() logic: errorStatus = noSuchName is now +- Change to rfc2576.v1tov2() logic: errorStatus = noSuchName is now translated into rfc1905.noSuchObject exception value for *all* var-bindings at once. Although RFC2576 does not suggest error-status -> v2c exception translation, historically pysnmp used to perform it for a long time so we @@ -624,7 +629,7 @@ Revision 4.2.5, released 2013-10-02 - The snmpCommunityTable row selection improved to follow RFC2576, clause 5.2.1. - Asyncore-based dispatcher attempts to use poll() whenever available - on the platform. It would help handling a really large number (>1024) + on the platform. It would help handling a really large number (>1024) of file descriptors. - AsynCommandGenerator.makeReadVarBinds() generalized into a new makeVarBinds() method which replaces somewhat redundant code at setCmd() @@ -635,7 +640,7 @@ Revision 4.2.5, released 2013-10-02 specific securityName. - SNMP credentials management reworked to separate userName from securityName in snmpCommunityEntry and usmUserEntry tables. Changes made to addV1System(), - addV3User() functions as well as to their oneliner's wrappers. + addV3User() functions as well as to their oneliner's wrappers. - The contextEngineId parameter of config.addV3User() and auth.UsmUserData() renamed into securityEngineId as it's semantically correct - Oneliner UsmUserData() and CommunityData() classes now support clone()'ing @@ -662,9 +667,9 @@ Revision 4.2.5, released 2013-10-02 - Fix to usmUserSecurityName table column implementation -- automatic value generation from index value removed. - Fix and significant logic rework of snmpCommunityTable to make it working - in both Generator and Responder modes and better follow RFC2576 + in both Generator and Responder modes and better follow RFC2576 requirements on sequential entries lookup and selection. As a side effect, - untagged snmpCommunityTable entries will *not* match tagged + untagged snmpCommunityTable entries will *not* match tagged snmpTargetAddrTable entries and vice versa. - Fix to Twisted-based NotificationOriginator to make it serving INFORMs again. - Fix to rfc2576.v1tov2() logic: errorStatus = noSuchName is now translated @@ -730,7 +735,7 @@ Revision 4.2.4, released 2013-01-30 kinds of Management Instrumentation controllers. - Report package version on debugging code initialization. - MibInstrumController.getMibBuilder() added. -- I/O sockets buffer sizes made configurable, minimum default is now +- I/O sockets buffer sizes made configurable, minimum default is now forced to be no less than 2**17 (to fit two huge datagrams). - Catch possible exceptions on pyasn1 encoder invocation. - VACM modules converted from a function into an object to let it keep @@ -741,7 +746,7 @@ Revision 4.2.4, released 2013-01-30 NotificationOriginator.sendNotification() - Standard SNMPv3 Apps hardened to catch protocol-related exceptions and report them as errorIndication's. -- Catch and mute possible failure of getsockname(), that seems to happen +- Catch and mute possible failure of getsockname(), that seems to happen on Windows only so far. - Memory leak fixed at oneliner cache of already configured targets. - Fixes to at AsynNotificationOriginator.sendNotification() to make @@ -788,12 +793,12 @@ Revision 4.2.3, released 2012-09-06 MIB lookup for name resolution. This is a new and preferred API which obsoletes the tuple-based one (it is still suppored though). - Oneliner CommandGenerator's class attributes lexicographicMode, maxRows - and ignoreNonIncreasingOid moved to optional keyword args of nextGen() + and ignoreNonIncreasingOid moved to optional keyword args of nextGen() and bulkGen() methods. - IPv6/UDP and Local Domain Socket transport interfaces added to the oneliner API. - Mib Instrumentation subsystem re-worked to replace excessive - MibNode's smiCreate()/smiWrite()/smiDestroy() methods with + MibNode's smiCreate()/smiWrite()/smiDestroy() methods with MibScalarInstance's getValue()/setValue() - MibTree.readTest[Get]Next() reworked to be called uniformely so user could tap on these methods at any level of the MIB tree. @@ -805,16 +810,16 @@ Revision 4.2.3, released 2012-09-06 local hostname not to depend upon local IP availability and performance. - Example apps reworked, additional SNMPv3 auth/priv protocols and transports added. -- Package version is now available as __init__.__version__ and it is +- Package version is now available as __init__.__version__ and it is in-sync with distutils. - Package meta-information updated. -- The __init__.py's made non-empty (rumors are that they may be optimized +- The __init__.py's made non-empty (rumors are that they may be optimized out by package managers). - Multiple fixes to UNIX domain socket transport to make it fully operational again. - Use sysUpTime value whenever it is included in Notification PDU, otheriwese resort to SNMP engine uptime reading. -- SNMPv2c Message is now defined in rfc1901.py what matches standard +- SNMPv2c Message is now defined in rfc1901.py what matches standard definition. - Types defined within SNMPv1/v2c data structures (rfc1157.py/rfc1905.py) moved to module scope to become accessible by wrapper routines @@ -850,11 +855,11 @@ Revision 4.2.3, released 2012-09-06 - The notificationType parameter of AsynNotificationOriginator.sendNotification made defaulted to reflect its optional nature. - Oneliner UsmUserData, UdpTransportTarget, Udp6TransportTarget instances - are not hashable anymore as they are intended to act more like a data + are not hashable anymore as they are intended to act more like a data structure than object. - Built-in debugger now supports negating debugging categories. - An async/getgen.py example script added. -- Fix to MIB data reading routine to make it working with possible +- Fix to MIB data reading routine to make it working with possible Windows end-of-line's. - Fix to CommandGenerator's SNMPv3 engine autodiscovery algorithm when retryCount is administratively set to 0. @@ -869,7 +874,7 @@ Revision 4.2.3, released 2012-09-06 - Fix to v1.PDUAPI.setDefaults() method that used to set wrongly typed time-stamp component. - Fix to IPv6 address handling to prevent system from crashing whilst - running Python3. + running Python3. - Fix to SNMPv2 exception objects translation into SNMPv1 PDU and NEXT OIDs calculation. - Fix to MibTree class to properly report noSuchObject & noSuchInstance @@ -900,7 +905,7 @@ Revision 4.2.2, released 2012-04-21 side-effect of this change is that repetitive oneliner call with the same securityName and different configuration options will only honor the first settings. Previous implementation would override older settings. -- Transport dispatcher now provides its own time expressed in +- Transport dispatcher now provides its own time expressed in fractions of second. SNMP engine uses this notion of time for handling requests timeout to make packet flow time bound to async I/O core operations rather than to real time. @@ -1190,7 +1195,7 @@ Revision 4.1.10a, released 2008-05-25 - The MIB building tools updated to match significantly improved smidump tool (libsmi version > 0.4.5). - Made libsmi2pysnmp tool optionally building MIB text fields into pysnmp - MIB code (enabled by default) and MibBuilder conditionally loading them + MIB code (enabled by default) and MibBuilder conditionally loading them up (disabled by default). - SnmpEngine and MsgAndPduDispatcher constructors now optionally take msgAndPduDspr and mibInstrumController class instances @@ -1214,8 +1219,8 @@ Revision 4.1.9a, released 2007-11-28 snmpTrapOID handling. - Fix to nonRepeaters object use as sequence slicer (must be int) at cmdrsp.CommandResponderApplication -- Make AsynsockDispatcher using its own socket map by default for - threading safety. This will break asyncore apps that rely on pysnmp +- Make AsynsockDispatcher using its own socket map by default for + threading safety. This will break asyncore apps that rely on pysnmp sharing the same socket map with them. A solution would be to either set asyncore map to pysnmp (AsynsockDispatcher.setSocketMap()) or pass pysnmp map (AsynsockDispatcher.getSocketMap()) to asyncore. @@ -1238,7 +1243,7 @@ Revision 4.1.8a, released 2007-08-14 in oneliner module. - Automatically initialize table index values on table management operations (SF bug ID #1671989). -- Fix to carrier code: ignore BADFD socket error as it may happen upon +- Fix to carrier code: ignore BADFD socket error as it may happen upon FD closure on n-1 select() event. - Fix to MibBuilder.setMibPath() to preserve previously loaded modules intact. Otherwise loadModules() called after setMibPath() might fail @@ -1278,7 +1283,7 @@ Revision 4.1.7a, released 2007-02-19 - UNSTABLE ALPHA RELEASE. - Low-level debugging facility implemented. - Support UdpTransportTarget timeout and retries parameters in oneliner API. -- Fix to snmpTrapOID construction at ...proxy.rfc2576.v1ToV2() +- Fix to snmpTrapOID construction at ...proxy.rfc2576.v1ToV2() function. - Fix to MibViewController.getNodeName() to take MIB module name into account (SF bug #1505847). @@ -1289,16 +1294,16 @@ Revision 4.1.7a, released 2007-02-19 whenever MIB text specifies that (SF bug #1508955). - Honor and apply DISPLAY-HINT specification when building TextualConvention class at libsmi2pysnmp. -- Managed Objects Instances files (smi/mibs/instances/) are now +- Managed Objects Instances files (smi/mibs/instances/) are now double-underscore prefixed to make them imported explicitly by these prefixed names. They used to be imported as a side-effect of Managed Objects files import what is way too hackerish. -- The libsmi2pysnmp now supports future libsmi bugfix that would generate +- The libsmi2pysnmp now supports future libsmi bugfix that would generate "ranges" subtree along with the legacy and ambiguous "range" one. - SMI support for fixed-length string indices implemented (SF bug #1584799, #1653908). - Managed Object Instances may now have smiRead, smiWrite, smiCreate methods - to support specific value mangling. These methods, if present, would be + to support specific value mangling. These methods, if present, would be invoked from SNMP [Agent] core instead of conventional clone() method. The reason is to separate trivial value duplication from specific Instance value mangling that may have Agent-specific side effects @@ -1318,11 +1323,11 @@ Revision 4.1.7a, released 2007-02-19 - Exclude the PYSNMP_MODULE_ID symbol from MIB view index, as it may get resolved into OID label instead of actual MIB object name. - Memory leak fixed in indices.OidOrderedDict implementation. -- Fix to VACM shortcuts to let notifications and requests to co-exist +- Fix to VACM shortcuts to let notifications and requests to co-exist for the same user otherwise. - Fix to ...oneliner.cmdgen.UsmUserData to support non-default ciphers. - USM now uses local notion of snmpEngineBoots/Time when authoritative - and cached estimate otherwise. Also, a security fix applied to to USM + and cached estimate otherwise. Also, a security fix applied to to USM time-window verification (SF bug #1649032). - Fix to notification objects resolution code at NotificationOriginator.sendNotification() @@ -1343,7 +1348,7 @@ Revision 4.1.6a, released 2006-05-25 - pysnmpUsmSecretAuthKey and pysnmpUsmSecretPrivKey length increased up to 256 octets. There seems no limit on this in RFC, though. - A workaround for probably broken Agents: SNMPv3 Manager code defaults - ContextEngineId to SecurityEngineId whenever ContextEngineId is not + ContextEngineId to SecurityEngineId whenever ContextEngineId is not reported by authoritative SNMP engine on discovery. - Use empty PDU in engine-discovery report at mpmod/rfc3412.py. - MibBuilder.loadModules() now fails on missing MIB files. @@ -1380,7 +1385,7 @@ Revision 4.1.4a, released 2005-08-16 - UNSTABLE ALPHA RELEASE. - SHA-based authentication fixed and privacy implemented -- ...oneliner.cmdgen.UsmUserData constructor now takes +- ...oneliner.cmdgen.UsmUserData constructor now takes authProtocol and privProtocol parameters in a backward incompatible manner. @@ -1400,7 +1405,7 @@ Revision 4.1.2a, released 2005-07-12 - UNSTABLE ALPHA RELEASE. - Top-level application classes renamed into longer, self descripting names for clarity. -- CommandResponder & NotificationOriginator applications now uses +- CommandResponder & NotificationOriginator applications now uses stand-alone SnmpContext for application registration. - Many minor fixes (inspired by testing on WinXP) @@ -1429,7 +1434,7 @@ Revision 4.0.0a, released 2004-11-15 - Major re-design and re-implementation. - Rudimental API versioning implemented to let incompatible package branches to co-exist within the same Python installation. -- SMI framework designed and implemented. This framework provides +- SMI framework designed and implemented. This framework provides 1) various access to MIB data 2) a way to implement custom MIB instrumentation objects. There's also a tool for building SMI classes from libsmi(3) output (smidump -f python). diff --git a/docs/source/conf.py b/docs/source/conf.py index 59f571529..86e49a4c7 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -18,67 +18,67 @@ # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) +# sys.path.insert(0, os.path.abspath('.')) # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' +# needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.napoleon', - 'sphinx.ext.intersphinx', - 'sphinx_sitemap', - 'sphinx_copybutton', + "sphinx.ext.autodoc", + "sphinx.ext.napoleon", + "sphinx.ext.intersphinx", + "sphinx_sitemap", + "sphinx_copybutton", ] -html_baseurl = 'https://www.pysnmp.com/pysnmp/' -sitemap_url_scheme = '{link}' +html_baseurl = "https://www.pysnmp.com/pysnmp/" +sitemap_url_scheme = "{link}" # Add any paths that contain templates here, relative to this directory. -templates_path = ['.templates'] +templates_path = [".templates"] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # source_suffix = ['.rst', '.md'] -source_suffix = '.rst' +source_suffix = ".rst" # The encoding of source files. -#source_encoding = 'utf-8-sig' +# source_encoding = 'utf-8-sig' # The master toctree document. -master_doc = 'index' +master_doc = "index" # General information about the project. -project = 'SNMP library for Python' -copyright = '2005-2019, Ilya Etingof. © Copyright 2022-2024, LeXtudio Inc.' -author = 'LeXtudio Inc. ' +project = "SNMP library for Python" +copyright = "2005-2019, Ilya Etingof. © Copyright 2022-2024, LeXtudio Inc." +author = "LeXtudio Inc. " # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = '5.0' +version = "5.0" # The full version, including alpha/beta/rc tags. -release = '5.0.36' +release = "5.0.37" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. -language = 'en' +language = "en" # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: -#today = '' +# today = '' # Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' +# today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. @@ -86,193 +86,192 @@ # The reST default role (used for this markup: `text`) to use for all # documents. -#default_role = None +# default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True +# add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). -#add_module_names = True +# add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. -#show_authors = False +# show_authors = False # The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' +pygments_style = "sphinx" # A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] +# modindex_common_prefix = [] # If true, keep warnings as "system message" paragraphs in the built documents. -#keep_warnings = False +# 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 ---------------------------------------------- html_context = { - 'display_github': True, - 'github_user': 'lextudio', - 'github_repo': 'pysnmp', - 'github_version': 'main/docs/source/', + "display_github": True, + "github_user": "lextudio", + "github_repo": "pysnmp", + "github_version": "main/docs/source/", } # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -html_theme = 'sphinx_rtd_theme' +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. # Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] +# html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". -#html_title = None -#html_title = "PySNMP" +# html_title = None +# html_title = "PySNMP" # A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None +# html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. -#html_logo = "pysnmplogo.png" +# html_logo = "pysnmplogo.png" # 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 = '.static/favicon.ico' +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". -html_static_path = ['.static'] +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 # directly to the root of the documentation. -#html_extra_path = [] +# html_extra_path = [] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' +# html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. -#html_use_smartypants = True +# html_use_smartypants = True # Custom sidebar templates, maps document names to template names. -#html_sidebars = {} +# html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. -#html_additional_pages = {} +# html_additional_pages = {} # If false, no module index is generated. -#html_domain_indices = True +# html_domain_indices = True # If false, no index is generated. -#html_use_index = True +# html_use_index = True # If true, the index is split into individual pages for each letter. -#html_split_index = False +# html_split_index = False # If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True +# html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True +# html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True +# html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. -#html_use_opensearch = '' +# html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None +# html_file_suffix = None # Language to be used for generating the HTML full-text search index. # Sphinx supports the following languages: # 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' # 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' -#html_search_language = 'en' +# html_search_language = 'en' # A dictionary with options for the search language support, empty by default. # Now only 'ja' uses this config value -#html_search_options = {'type': 'default'} +# html_search_options = {'type': 'default'} # The name of a javascript file (relative to the configuration directory) that # implements a search results scorer. If empty, the default will be used. -#html_search_scorer = 'scorer.js' +# html_search_scorer = 'scorer.js' # Output file base name for HTML help builder. -htmlhelp_basename = 'PySNMPdoc' +htmlhelp_basename = "PySNMPdoc" # -- Options for LaTeX output --------------------------------------------- latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', - -# Latex figure (float) alignment -#'figure_align': 'htbp', + # The paper size ('letterpaper' or 'a4paper'). + #'papersize': 'letterpaper', + # The font size ('10pt', '11pt' or '12pt'). + #'pointsize': '10pt', + # Additional stuff for the LaTeX preamble. + #'preamble': '', + # Latex figure (float) alignment + #'figure_align': 'htbp', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ - (master_doc, 'PySNMP.tex', 'PySNMP Documentation', - 'Ilya Etingof \\textless{}etingof@gmail.com\\textgreater{}', 'manual'), + ( + master_doc, + "PySNMP.tex", + "PySNMP Documentation", + "Ilya Etingof \\textless{}etingof@gmail.com\\textgreater{}", + "manual", + ), ] # The name of an image file (relative to this directory) to place at the top of # the title page. -#latex_logo = None +# latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. -#latex_use_parts = False +# latex_use_parts = False # If true, show page references after internal links. -#latex_show_pagerefs = False +# latex_show_pagerefs = False # If true, show URL addresses after external links. -#latex_show_urls = False +# latex_show_urls = False # Documents to append as an appendix to all manuals. -#latex_appendices = [] +# latex_appendices = [] # If false, no module index is generated. -#latex_domain_indices = True +# latex_domain_indices = True # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'pysnmp', 'PySNMP Documentation', - [author], 1) -] +man_pages = [(master_doc, "pysnmp", "PySNMP Documentation", [author], 1)] # If true, show URL addresses after external links. -#man_show_urls = False +# man_show_urls = False # -- Options for Texinfo output ------------------------------------------- @@ -281,35 +280,41 @@ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - (master_doc, 'PySNMP', 'PySNMP Documentation', - author, 'PySNMP', 'One line description of project.', - 'Miscellaneous'), + ( + master_doc, + "PySNMP", + "PySNMP Documentation", + author, + "PySNMP", + "One line description of project.", + "Miscellaneous", + ), ] # Documents to append as an appendix to all manuals. -#texinfo_appendices = [] +# texinfo_appendices = [] # If false, no module index is generated. -#texinfo_domain_indices = True +# texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' +# texinfo_show_urls = 'footnote' # If true, do not generate a @detailmenu in the "Top" node's menu. -#texinfo_no_detailmenu = False +# texinfo_no_detailmenu = False # Configuration for Intersphinx intersphinx_mapping = { - 'python': ('https://docs.python.org/3.7/', None), - 'pyasn1': ('https://pyasn1.readthedocs.io/en/latest/', None), - 'pysmi': ('https://www.pysnmp.com/pysmi/', None), + "python": ("https://docs.python.org/3.7/", None), + "pyasn1": ("https://pyasn1.readthedocs.io/en/latest/", None), + "pysmi": ("https://www.pysnmp.com/pysmi/", None), } # this merges constructor docstring with class docstring -autoclass_content = 'both' +autoclass_content = "both" # Sort members by type -autodoc_member_order = 'bysource' +autodoc_member_order = "bysource" # Napoleon settings napoleon_google_docstring = False @@ -323,8 +328,9 @@ napoleon_use_param = False napoleon_use_rtype = False + def setup(app): - on_rtd = os.environ.get('READTHEDOCS', None) == 'True' + on_rtd = os.environ.get("READTHEDOCS", None) == "True" if not on_rtd: """Insert Google Analytics tracker Based on this Stackoverflow suggestion: https://stackoverflow.com/a/41885884 diff --git a/pyproject.toml b/pyproject.toml index 6cc0fb7c2..daf020e12 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pysnmp-lextudio" -version = "5.0.36" +version = "5.0.37" description = "" authors = ["Ilya Etingof ", "Lex Li "] license = "BSD-2-Clause" diff --git a/pysnmp/__init__.py b/pysnmp/__init__.py index 898020911..2e63d4fb7 100644 --- a/pysnmp/__init__.py +++ b/pysnmp/__init__.py @@ -1,10 +1,10 @@ # http://www.python.org/dev/peps/pep-0396/ -__version__ = '5.0.36' +__version__ = "5.0.37" # another variable is required to prevent semantic release from updating version in more than one place main_version = __version__ # backward compatibility # for beta versions, integer casting throws an exception, so string part must be cut off -if 'beta' in __version__: - main_version = __version__.split('-beta')[0] -version = tuple(int(x) for x in main_version.split('.')) +if "beta" in __version__: + main_version = __version__.split("-beta")[0] +version = tuple(int(x) for x in main_version.split(".")) majorVersionId = version[0]