CFFI interface to Net-SNMP
Project description
netsnmp-cffi
This is a CFFI-based Python interface for the Net-SNMP C library, enabling efficient parallel SNMP communication with large amounts of devices from Python. It provides both asynchronous (asyncio) and synchronous interfaces.
This module is still a work in progress, and has been mainly developed to replace PySNMP as the default SNMP library in Zino 2 - the first releases of this library will focus mainly on functionality used by Zino (which for the most part means that SNMPv3 is not implemented yet).
Compatibility
The library is intended to be compatible with Net-SNMP versions from 5.9 and newer, and with Python 3.9 and newer.
Usage examples
For a simple (asyncio) usage example, see asnmpget.py.
Developing netsnmp-cffi
Running tests
tox and pytest are used to run the test suite. To run the test suite on all supported versions of Python, run:
tox
Code style
netsnmp-cffi code should follow the PEP-8 and PEP-257 guidelines. Ruff is used for automatic code formatting. The pre-commit tool is used to enforce code styles at commit-time.
Before you start hacking, enable pre-commit hooks in your cloned repository, like so:
pre-commit install
Using towncrier to automatically produce the changelog
Before merging a pull request
To be able to automatically produce the changelog for a release one file for each
pull request (also called news fragment) needs to be added to the folder
changelog.d/.
The name of the file consists of three parts separated by a period:
- The identifier: the issue number
or the pull request number. If we don't want to add a link to the resulting changelog
entry then a
+followed by a unique short description. - The type of the change: we use
security,removed,deprecated,added,changedandfixed. - The file suffix, e.g.
.md, towncrier does not care which suffix a fragment has.
So an example for a file name related to an issue/pull request would be 214.added.md
or for a file without corresponding issue +fixed-pagination-bug.fixed.md.
This file can either be created manually with a file name as specified above and the changelog text as content or one can use towncrier to create such a file as following:
$ towncrier create -c "Changelog content" 214.added.md
When opening a pull request there will be a check to make sure that a news fragment is added and it will fail if it is missing.
Before a release
To add all content from the changelog.d/ folder to the changelog file simply run
$ towncrier build --version {version}
This will also delete all files in changelog.d/.
To preview what the addition to the changelog file would look like add the flag
--draft. This will not delete any files or change CHANGELOG.md. It will only output
the preview in the terminal.
A few other helpful flags:
date DATE- set the date of the release, default is todaykeep- do not delete the files inchangelog.d/
More information about towncrier.
Building binary wheels
This package utilizes the API mode of CFFI, which means that it builds a small C shim to interface between the Net-SNMP library and Python. This means that a small platform-dependent binary will be part of the wheels built from this package.
In order to build wheels that should be compatible with at least several Linux distros and Python version combinations, and that are also uploadable to PyPI when making release, we utilize the manylinux tool suite.
Building the binary wheels should more or less be automated by a make
command (see the Makefile itself for details):
make
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file netsnmp_cffi-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: netsnmp_cffi-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.2 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8d577bd1aeaa14c29ed40b94278a94d36241b908e00a8f73f1a95c926e648c5
|
|
| MD5 |
a88543f191b81ba18d131cc6e8dfcfe3
|
|
| BLAKE2b-256 |
e76b82a82827188b09404b82ca1e6b4010b1755c1172d5acd2493bf838ccaedd
|
File details
Details for the file netsnmp_cffi-0.1.3-cp311-cp311-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: netsnmp_cffi-0.1.3-cp311-cp311-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.2 MB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df8a36eda615790dcc5f651eca9508eac335a9d966c6416245613167abf7ca93
|
|
| MD5 |
ea752ea698c9d26e50bfd297d4b1e4a8
|
|
| BLAKE2b-256 |
c60bd15ea23a4d80e4364b2cb0db7ac39221548ba50583af03656869b9c2e621
|
File details
Details for the file netsnmp_cffi-0.1.3-cp310-cp310-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: netsnmp_cffi-0.1.3-cp310-cp310-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.2 MB
- Tags: CPython 3.10, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d2c2cd4d649f99bbd7f06c011d4bb898a9cd4d5b4bca032bed5d1151325a7e10
|
|
| MD5 |
b41c45f7ac7c6fe103c9adc0577f8a50
|
|
| BLAKE2b-256 |
8590d1058ab2eb065c4dd34d078f48ab856b4848e7609645c49e4bdac2e99dca
|
File details
Details for the file netsnmp_cffi-0.1.3-cp39-cp39-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: netsnmp_cffi-0.1.3-cp39-cp39-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.2 MB
- Tags: CPython 3.9, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
924856c7a014b9ec442d9db75415c122a442fa1bea49316d2b505c43260e7da7
|
|
| MD5 |
28bb1251cf8064fb17bf9341d5110198
|
|
| BLAKE2b-256 |
c052dfdd4d8ab294710c8938abec135039227568f8b214ccd1db83e176dc7188
|