diff --git a/SECURITY.md b/SECURITY.md index b04c9e8c9..aff11c765 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -10,7 +10,7 @@ We provide security updates for each version until its End-of-Life (EOL) date. B | 7.0 | 7.0.4 | 2025-03-11 | Supported for 6 months after 7.1.0 | | 6.2 | 6.2.6 | 2025-08-22 | Supported for 1 year after 7.0.0 | | 6.1 | 6.1.4 | 2025-01-12 | Supported for 6 months after 6.2.0 | -| 6.0 | 6.0.13 | 2024-09-23 | Supported for 6 months after 6.1.0 | +| 6.0 | 6.0.13 | 2024-09-23 | Reached EOL | | 5.1 | 5.1.0 | 2024-08-31 | Reached EOL | | 5.0 | 5.0.13 | 2024-08-31 | Reached EOL | | < 5.0 | 4.4.12 | 2024-08-31 | Reached EOL | diff --git a/docs/source/docs/index.rst b/docs/source/docs/index.rst index d6911cba1..36b0b0d13 100644 --- a/docs/source/docs/index.rst +++ b/docs/source/docs/index.rst @@ -5,8 +5,6 @@ Documentation .. toctree:: :maxdepth: 2 - /docs/snmp-history - /docs/snmp-design /docs/pysnmp-architecture /docs/pysnmp-hlapi-tutorial /docs/api-reference diff --git a/docs/source/docs/mib-object-instances.svg b/docs/source/docs/mib-object-instances.svg deleted file mode 100644 index c7d80fab4..000000000 --- a/docs/source/docs/mib-object-instances.svg +++ /dev/null @@ -1,440 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - ifInOctets.1 - - ifInOctets.7 - - ifInOctets.2 - - diff --git a/docs/source/docs/nms-components.svg b/docs/source/docs/nms-components.svg deleted file mode 100644 index b754f3032..000000000 --- a/docs/source/docs/nms-components.svg +++ /dev/null @@ -1,1063 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - managed entity - - agent - - data - - - - manager - data - - - - - - - - - - - managed entity - managing entity - protocol - protocol - protocol - - agent - - data - managed entity - - - agent - - data - - diff --git a/docs/source/docs/oid-tree-mibs.svg b/docs/source/docs/oid-tree-mibs.svg deleted file mode 100644 index e48e3cd26..000000000 --- a/docs/source/docs/oid-tree-mibs.svg +++ /dev/null @@ -1,552 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - ITU-T(0) - ISO(1) - Joint ITU+ISO(2) - - standard(0) - ISO member(1) - ISO Org (3) - NATO (57) - ... - Open SoftwareFoundation(22) - ... - ... - DoD (6) - - Internet (1) - - - directory(1) - management(2) - experimental(3) - private(4) - security(5) - snmpv2(6) - - MIB-2 - - - - - - - - - - - system(1) - interface(2) - addresstranslation(3) - ip(4) - icmp(5) - tcp(6) - udp(7) - egp(8) - cmot(9) - ..... - - diff --git a/docs/source/docs/oid-tree.svg b/docs/source/docs/oid-tree.svg deleted file mode 100644 index 4eb1133df..000000000 --- a/docs/source/docs/oid-tree.svg +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - ITU-T(0) - ISO(1) - Joint ITU+ISO(2) - - standard(0) - ISO member(1) - ISO Org (3) - NATO (57) - ... - Open SoftwareFoundation(22) - ... - ... - DoD (6) - - Internet (1) - - - directory(1) - management(2) - experimental(3) - private(4) - security(5) - snmpv2(6) - - - diff --git a/docs/source/docs/pysnmp-design.svg b/docs/source/docs/pysnmp-design.svg index 0a3e5bfb1..779c4f564 100644 --- a/docs/source/docs/pysnmp-design.svg +++ b/docs/source/docs/pysnmp-design.svg @@ -734,7 +734,7 @@ sodipodi:role="line" x="82.426392" y="931.04944" - id="tspan25789">Substsrem + id="tspan25789">Subsystem ` +asyncio based :doc:`high-level API ` which is the simplest to use. Creating SNMP Engine @@ -40,7 +40,7 @@ Making SNMP Query ----------------- We will send SNMP GET command to read a MIB object from SNMP agent. -For that purpose we will call synchronous, high-level +For that purpose we will call asyncio based, high-level :py:func:`~pysnmp.hlapi.v3arch.asyncio.getCmd` function. Other SNMP commands can be used in a vary similar way by calling corresponding functions. @@ -262,12 +262,6 @@ Reading Scalar Value We are finally in a position to send SNMP query and hopefully receive something meaningful in response. -The distinctive feature of synchronous API is that it is built around -the idea of Python generator. Any function invocation ends up with a -generator object. Iteration over the generator object performs actual -SNMP communication. On each iteration SNMP message gets built and sent -out, response is awaited, received and parsed. - .. code-block:: python >>> from pysnmp.hlapi.v3arch.asyncio import * diff --git a/docs/source/docs/snmp-apps.svg b/docs/source/docs/snmp-apps.svg deleted file mode 100644 index e2218587b..000000000 --- a/docs/source/docs/snmp-apps.svg +++ /dev/null @@ -1,278 +0,0 @@ - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - CommandGenerator - - - - - - - NotificationReceiver - ProxyForwarder - CommandResponder - NotificationOriginator - SNMP Engine - Network - - - - - - - diff --git a/docs/source/docs/snmp-design.rst b/docs/source/docs/snmp-design.rst deleted file mode 100644 index fdff5f2c4..000000000 --- a/docs/source/docs/snmp-design.rst +++ /dev/null @@ -1,284 +0,0 @@ -.. include:: /includes/_links.rst - -.. toctree:: - :maxdepth: 2 - -SNMP Design -=========== - -Contrary to what the name might suggest, SNMP is much more than just -a protocol for moving management data. Over time it has grown to be -more complex than its initial designers probably planned it. - -Terminology and Entities ------------------------- - -The network management field has its own specific terminology for -various components of a network management architecture, and so we -adopt that terminology here. The peculiarity of this terminology is -that the word "management" is greatly overused. So bare with it. - -There are three principle components of a network management -architecture: a managing entity, the managed entity, and a network -management protocol. - -.. image:: nms-components.svg - -* The managing entity is an application running in a centralized - network management station (NMS). It is the managing entity - that controls the collection, processing, analysis, and/or display - of network management information. It is here that actions are - initiated to control network behavior and here that the human network - administrator interacts with the network devices. - -* A managed entity is typically hardware or software application that - resides on a managed network. It enumerates and formalizes some - of its properties and states, important for healthy operation, thus - making them available to the managing entity. For example, a managed - entity could be a host, router, switch, printer, or any other device. - -* The third piece of a network management system is the network - management protocol. The protocol runs between the managing entity - and the managed entity, allowing the managing entity to query the - status of managed entity and make the latter carrying out actions - via its agents. - -Structure and Components ------------------------- - -SNMP consists of four parts: - -* Definitions of network management objects known as MIB objects. - Management information is represented as a collection of managed - objects that together form a virtual information store, known as - the Management Information Base (MIB). A MIB object might be a counter, - descriptive information such as software version; status - information such as whether or not a device is healthy, or - protocol-specific information such as a routing path to a destination. - MIB objects thus define the management information maintained by a - managed node. Related MIB objects are gathered into so-called MIB modules. - -* Data definition language, called SMI (Structure of Management - Information) that introduces base data types, allows for creating - their subtypes and more complex data structures. MIB objects are - expressed in this data definition language. - -* Protocol (SNMP) for conveying information and commands between a managing - and managed entities. SNMP is designed around a client-server model. - What's interesting that both managing and managed entities contain client - and server components. - -* Extensible security framework and system administration capabilities. - -The latter features were completely absent in SNMP versions prior to -SNMPv3. - -Data Types ----------- - -SMI introduces eleven base data types used for representing managed -objects states. They are either pure ASN.1 types or their -specializations. Pure ASN.1 types: - -* INTEGER -* OCTET STRING -* OBJECT IDENTIFIER - -ASN.1 is a really aged and quite complex set of standards that deals -with structuring and serializing data in a portable way. - -SNMP-specific subtypes of those base ASN.1 types are: - -* Integer32/Unsigned32 - 32-bit integer -* Counter32/Counter64 - ever increasing number -* Gauge32 - positive, non-wrapping 31-bit integer -* TimeTicks - time since some event -* IPaddress - IPv4 address -* Opaque - uninterpreted ASN.1 string - -In addition to these scalar types, SNMP defines a way to collect them -into ordered arrays. From these arrays 2-d tables could be built. - -PySNMP relies on the `PyASN1`_ package for -modeling all SNMP types. With PyASN1, instances of ASN.1 types are -represented by Python objects that look like either a string or an -integer. - -We can convert PyASN1 objects into Python types and back. PyASN1 -objects can participate in basic arithmetic operations (numbers) -or in operations with strings (concatenation, subscription etc). -All SNMP base types are immutable like their Python counterparts. - -.. code-block:: python - - >>> from pyasn1.type.univ import * - >>> Integer(21) * 2 - Integer(42) - >>> Integer(-1) + Integer(1) - Integer(0) - >>> int(Integer(42)) - 42 - >>> OctetString('Hello') + ', ' + - >>> OctetString(hexValue='5079534e4d5021') - OctetString('Hello, PySNMP!') - -Users of PySNMP library may encounter PyASN1 classes and objects -when passing data to or receiving data from PySNMP. - -The one data type we will discuss in more detail shortly is the OBJECT -IDENTIFIER data type, which is used to name an object. With this -system, objects are identified in a hierarchical manner. - -Object Identifier -+++++++++++++++++ - -OIDs are widly used in computing for identifying objects. This system -can be depicted as a tree whose nodes are assigned by different -organizations, knowledge domains, types of concepts or objects, -concrete instances of objects. From human perspective, an OID is a -long sequence of numbers, coding the nodes, separated by dots. - -.. image:: oid-tree.svg - -Each 'branch' of this tree has a number and a name, and the complete -path from the top of the tree down to the point of interest forms the -name of that point. This complete path is the OID, the "identifier of -an object" respectively. Nodes near the top of the tree are of an -extremely general nature. - -Top level MIB object IDs (OIDs) belong to different standard -organizations. Vendors define private branches including managed -objects for their own products. - -At the top of the hierarchy are the International Organization for -Standardization (ISO) and the Telecommunication Standardization -Sector of the International Telecommunication Union (ITU-T), the two -main standards organizations dealing with ASN.1, as well as a brach -for joint efforts by these two organizations. - -In PyASN1 model, OID looks like an immutable sequence of numbers. -Like it is with Python tuples, PyASN1 OID objects can be concatinated -or split apart. Subscription operation returns a numeric sub-OID. - -.. code-block:: python - - >>> from pyasn1.type.univ import * - >>> internetId = ObjectIdentifier((1, 3, 6, 1)) - >>> internetId - ObjectIdentifier('1.3.6.1') - >>> internetId[2] - 6 - >>> [ x for x in internetId ] - [1, 3, 6, 1] - >>> internetId + (2,) - ObjectIdentifier('1.3.6.1.2') - >>> internetId[1:3] - ObjectIdentifier('3.6') - >>> internetId[1] - >>> = 2 - ... - TypeError: object does not support item assignment - -Collections of Objects ----------------------- - -Management Information Base (MIB) can be thought of as a formal -description of a collection of relevant managed objects whose values -collectively reflect the current "state" of some subsystem at a -managed entity. These values may be queried, modified by or reported -to a managing entity by sending SNMP messages to the agent that is -executing in a managed node. - -For example, the typical objects to monitor on a printer are the -different cartridge states and maybe the number of printed files, and -on a switch the typical objects of interest are the incoming and -outgoing traffic as well as the rate of package loss or the number of -packets addressed to a broadcast address. - -Every managed device keeps a database of values for each of the -definitions written in the MIB. So, the available data is actually not -dependent on the database, but on the implementation. It is important -to realize that MIB files never contain data, they are functionally -similar to database schemas rather than data stores. - -To organize MIB modules and objects properly, all the manageable -features of all products (from each vendor) are arranged in this MIB -tree structure. Each MIB module and object is uniquely identified -by an Object Identifier. - -Both SNMP managed and managing entities could consume MIB information. - -* Managing entity - - + Looks up OID by MIB object name - + Casts value to proper type of MIB object - + Humans read comments left by other humans - -* Managed entity - - + Implements MIB objects in code - -From human perspective, MIB is a text file written in a subset of -ASN.1 language. We maintain a collection of 9000+ MIB modules on -`mibs.pysnmp.com`_ that you can use for your projects. - -PySNMP converts ASN.1 MIB files into Python modules, then SNMP -engine loads those modules at runtime on demand. PySNMP MIB modules -are universal -- the same module can be consumed by both managed and -managing entities. - -MIB conversion is performed automatically by PySNMP, but technically, -it is handled by PySNMP sister project called -`PySMI`_. However you can also perform said -conversion by hand with PySMI's ``mibdump`` tool. - -Protocol Operations -------------------- - -SNMP is designed around a client-server model. Both managing and -managed entities contain client and server components. Clients and -servers exchange data in a name-value form. Values are strongly -typed. - -Central to protocol entity is *SNMP engine* that coordinates workings -of all SNMP components. - -.. image:: snmp-engine.svg - -Two modes of protocol operation are defined: - -* Request-response messages -* Unsolicited messages - -Protocol carries SNMP messages. Besides header information used for -protocol operations, management information is transferred in -so-called Protocol Data Units (PDU). Seven PDU types are defined in -SNMP addressing conceptually different operations to be performed by -either managing or managed entities (Manager or Agent respectively). - -* Manager-to-agent - - + GetRequest, SetRequest, GetNextRequest, GetBulkRequest, - InformRequest - -* Manager-to-manager - - + InformRequest, Response - -* Agent-to-manager - - + SNMPv2-Trap, Response - -Core Applications ------------------ - -The standard (:RFC:`3413`) identifies a few "standard" SNMP applications -that are associated with either managing or managed entities. - -.. image:: snmp-apps.svg - -PySNMP implements all these standard applications (via *Native SNMP -API*) carefully following RFCs and their abstract service -interfaces. The backside of this approach is that it's way too -detailed and verbose for most SNMP tasks. To make SNMP easy to use, -PySNMP introduces *High-level SNMP API*. diff --git a/docs/source/docs/snmp-engine.svg b/docs/source/docs/snmp-engine.svg deleted file mode 100644 index dfd3b70e8..000000000 --- a/docs/source/docs/snmp-engine.svg +++ /dev/null @@ -1,506 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - Network - - Dispatcher - MessageProcessing - - TimelinessAuthenticationEncryption - Transport subsystem - AccessControl - PDU - - - - - - - - - - - diff --git a/docs/source/docs/snmp-history.rst b/docs/source/docs/snmp-history.rst deleted file mode 100644 index 337643d6c..000000000 --- a/docs/source/docs/snmp-history.rst +++ /dev/null @@ -1,105 +0,0 @@ - -.. toctree:: - :maxdepth: 2 - -SNMP History -============ - -In the early days of networking, when computer networks were research -artifacts rather than a critical infrastructure used by almost every -second human on Earth, "network management" was practically unknown. -Whenever one encountered a network problem, he might run a few pings -to locate the source of the problem and then modify system settings, -reboot hardware or software, or call a remote colleague to check -console at the machine room. - -An interesting discussion of the first major "crash" of the ARPAnet in -1980, long before network management tools were available, and the -efforts taken to recover from and understand the crash can be read in -:RFC:`789`. The astonishment of the engineers taking part in -post-mortem investigation could be read between the lines. As the -public Internet and private intranets have grown from small networks -into a large global infrastructure, the need to more systematically -manage the huge number of hardware and software components within -these networks has grown more important as well. - -SNMP was quickly designed and deployed by a group of university -network researchers and users at a time when the need for network -management was becoming painfully clear. - -SNMP milestones: - -* Research project, successor of SGMP -* SNMPv1 in 1988: initial revision -* SNMPv2 in 1993: improvements -* SNMPv3 in 1999: full redesign -* SNMPv3: backward compatible -* SNMPv3: full Internet standard (STD0062) - -SNMP was initially thought as an interim solution to fill the need for -network management tool while a more theoretically sound system was -being developed by the ISO. Anticipating the transition to the new -network management system, SNMP designers made SNMP modular. Although -that transition never occurred, the modularity of SNMP help it -evolving through three major versions and found widespread use and -acceptance. - -The IETF recognizes SNMP version 3 as defined by :RFC:`3411` .. -:RFC:`3418` as the current standard version of SNMP. The IETF has -designated SNMPv3 a full Internet standard, the highest maturity level -for an RFC. In practice, SNMP implementations often support multiple -versions: typically SNMPv1, SNMPv2c, and SNMPv3 - -Is It Still Relevant? ---------------------- - -Considering how old SNMP is you might be wondering why it is still in -use and is there a more modern alternative? Apparently, SNMP is still -the primary way to do performance and fault management. SNMP is -universally supported by all networking hardware manufactures and -network management applications. - -Perhaps one reason for SNMP being so tenacious is that, considering -SNNP's wide deployment, it takes too much effort to migrate to -anything else. But the other reason is that no significant drawbacks -have been found in SNMP at least in the areas of fault and performance -management. - -Additionally, SNMP is free and not controlled by any particular -vendor. No copyright or licensing fees are required, so anyone can use -it or build SNMP products on it. - -Despite significant efforts made by technology companies and standards -bodies over all these years, no other network monitoring standard -was adopted so far. The most prominent open alternative is probably -NETCONF (:RFC:`6241`). However it mostly targets configuration -management tasks rather than fault or performance monitoring. -Additionally, NETCONF is significantly more resource intensive than -SNMP is. - -It is obviously possible to for everybody to come up with its own -ad-hoc management system. That can be done very easily on top of -HTTPS/JSON, for example. However that would only work with your -application. Also, SSL engine might be heavier on resources. - -Current and Future Use ----------------------- - -As for current SNMP deployment, its virtually impossible to estimate -how many SNMP-enabled devices run on the modern Internet today. -For example, every home router and most of the desktop printers have -embedded SNMP agent inside. - -Expanding on that, you may found SNMP useful for your home network monitoring. -For instance you could easily setup an open source network monitoring -application to watch, collect and graph bandwidth utilization of your -home Wi-Fi router. - -A significant innovation might be coming in the following years. And that -is Internet of Things. All those small and low-power gadgets need to -be monitored and managed. And that may bring new life to the SNMP -technology. Almost three decades ago SNMP was designed for heavily -resource-constrained computers of that time. Later on the computers -grew in power and resources. But now we are back to building a massive -amount of low-power computers for "things" where original lightweight -and well-understood SNMP can serve us again! diff --git a/docs/source/examples/index.rst b/docs/source/examples/index.rst index 01560f638..ce788b26c 100644 --- a/docs/source/examples/index.rst +++ b/docs/source/examples/index.rst @@ -49,13 +49,15 @@ suitable for the most typical client-side operations. For that matter, only Command Generator and Notification Originator Applications are wrapped into a nearly one-line Python expression. -The `hlapi` interfaces come in several flavours: one synchronous +The `hlapi` interfaces used to come in several flavours: one synchronous and a bunch of asynchronous, adapted to work withing the event loops -of popular asynchronous I/O frameworks. But now only asyncio based API is supported. +of popular asynchronous I/O frameworks. But now only asyncio based API is +supported. The primary reason for maintaining high-level API over both `v1arch` and -`v3arch` is performance - `v3arch` machinery is much more functional and complicated -internally, that translates to being heavier on resources and therefore slower. +`v3arch` is performance - `v3arch` machinery is much more functional and +complicated internally, that translates to being heavier on resources and +therefore slower. The v3 architecture +++++++++++++++++++ @@ -188,10 +190,3 @@ you are welcome to search for it and possibly download one from our public MIB repository `mibs.pysnmp.com`_. Alternatively, you can configure PySNMP to fetch and cache required MIBs from there automatically. - -Related Resources ------------------ - -- :doc:`/quick-start` -- :doc:`/troubleshooting` -- :doc:`/docs/api-reference` diff --git a/docs/source/faq.rst b/docs/source/faq/index.rst similarity index 75% rename from docs/source/faq.rst rename to docs/source/faq/index.rst index e34946dae..76bdae741 100644 --- a/docs/source/faq.rst +++ b/docs/source/faq/index.rst @@ -15,11 +15,3 @@ to any PySNMP revision. :glob: /faq/* - -Related Resources ------------------ - -- `Support Options`_ -- :doc:`/quick-start` -- :doc:`/troubleshooting` -- :doc:`/license` diff --git a/docs/source/includes/_links.rst b/docs/source/includes/_links.rst index 0f60a52b1..c78d8ca94 100644 --- a/docs/source/includes/_links.rst +++ b/docs/source/includes/_links.rst @@ -26,3 +26,4 @@ .. _Net-SNMP: http://www.net-snmp.org/ .. _Support Options: https://www.pysnmp.com/support .. _this lifecycle page: https://github.com/lextudio/pysnmp/blob/main/SECURITY.md +.. _PySNMP Homepage: https://www.pysnmp.com/ diff --git a/docs/source/index.rst b/docs/source/index.rst index 4afae9ec7..48afc65b5 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -21,9 +21,7 @@ bringing most possible power and flexibility to its users. Current PySNMP stable version is |version|. It runs with Python 3.8+ 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 6.0 and later versions in mind. -Older materials have been removed. +older, now obsolete, PySNMP releases. Besides the libraries, a set of pure-Python `command line tools`_ are shipped along with the system. Those tools mimic the interface @@ -31,12 +29,6 @@ and behavior of popular Net-SNMP snmpget/snmpset/snmpwalk utilities. They may be useful in a cross-platform situations as well as a testing and prototyping instrument for pysnmp users. -PySNMP software is free and open-source. Source code is hosted in -the `PySNMP Github repository`_. -The library is being distributed under 2-clause BSD-style license. - -PySNMP library development has been initially sponsored by a `PSF`_ grant. - Quick Start ----------- @@ -51,13 +43,34 @@ this implementation? Try out quick start page! Documentation ------------- -You can find conceptual and API documentation in the following section. +.. note:: + + You can use version switch on the sidebar to browse documentation for + other supported PySNMP versions. + +.. warning:: + + PySNMP 4.x, 5.x, and 6.0 are no longer supported. Materials about such + deprecated versions have been removed, but can still be found in the + `PySNMP GitHub repository`_. + + If you are using one of these versions, please consider upgrading to a + supported version. You can find more information about supported + versions and their lifecycle by visiting `this lifecycle page`_. + + You can learn more about how to upgrade from this page :doc:`/upgrade`. + +Conceptual and API documentation are in the following section. .. toctree:: :maxdepth: 2 /docs/index +.. note:: + + Documentation about the SNMP protocol can be found on `PySNMP Homepage`_. + Samples ------- @@ -89,30 +102,30 @@ Best way is usually to install PySNMP using `PySNMP PyPI package`_. $ pip install pysnmp If that does not work for you for some reason, you might need to read the -following page. +following pages. .. toctree:: :maxdepth: 1 /download - -We fanatically document all fixes, changes and new features in changelog. - -.. toctree:: - :maxdepth: 1 - /changelog License ------- -This library is distributed under 2-clause BSD-style license. +PySNMP software is free and open-source. Source code is hosted in +the `PySNMP Github repository`_. + +The library is being distributed under 2-clause BSD-style license. More +details can be found in the following page. .. toctree:: :maxdepth: 1 /license +PySNMP library development was initially sponsored by a `PSF`_ grant. + FAQ --- @@ -121,20 +134,16 @@ We have a collection of frequently asked questions. .. toctree:: :maxdepth: 2 - /faq + /faq/index -Contact +Support ------- -In case of questions or troubles using PySNMP, please open up a -new `GitHub issue`_ or ask on `Stack Overflow`_. - -For other inquiries, please contact `LeXtudio Inc.`_. - -More information about support options can be found in the following -section. +To learn about community and commercial support options, please visit .. toctree:: :maxdepth: 1 Support Options + +If you have other inquiries, please contact `LeXtudio Inc.`_. diff --git a/docs/source/upgrade.rst b/docs/source/upgrade.rst index bee8a85eb..1a9dd99c9 100644 --- a/docs/source/upgrade.rst +++ b/docs/source/upgrade.rst @@ -39,7 +39,7 @@ the official PySNMP project. We consider the 5.1.0 release as a stepping stone to the 6.x releases, so please don't stay with them for long. - You should first attempt to upgrade to 6.0.13 release and see if things + You should next attempt to upgrade to 6.0.13 release and see if things work as expected. Note that you must use Python <3.12, as release 5.1.0 is not compatible @@ -113,9 +113,9 @@ above. Ilya's changes for 4.4.13 release were merged as well. Upgrade to 6.2 Releases ----------------------- -The new sync API is added to enable synchronous I/O operations and easy -migration from 4.x/5.x releases. The new API is based on asyncio and is -compatible with Python 3.8 and later. +The new sync API was added in 6.0 releases to enable synchronous I/O +operations and easy migration from 4.x/5.x releases. The new API was based +on asyncio and was compatible with Python 3.8 and later. We were hoping the new sync API would be stable enough to meet the quality expectation, but it turned out to be the opposite. So we decided to remove