Skip to main content

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:

  1. 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.
  2. The type of the change: we use security, removed, deprecated, added, changed and fixed.
  3. 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 today
  • keep - do not delete the files in changelog.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

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

netsnmp_cffi-0.2.1-cp314-cp314-manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

netsnmp_cffi-0.2.1-cp313-cp313-manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

netsnmp_cffi-0.2.1-cp312-cp312-manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

netsnmp_cffi-0.2.1-cp311-cp311-manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

netsnmp_cffi-0.2.1-cp310-cp310-manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

netsnmp_cffi-0.2.1-cp39-cp39-manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

File details

Details for the file netsnmp_cffi-0.2.1-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: netsnmp_cffi-0.2.1-cp314-cp314-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.14, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"25.11","id":"xantusia","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for netsnmp_cffi-0.2.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f461d12a52e7432892db8058f3c7e75f89040a78e5d0ce14beab250060a195ae
MD5 fce4e44aa74d6f820ad29f7c13489e4d
BLAKE2b-256 c7cd3d8411a184ddd7452dc6bd0ae57d414083d62e3719d314f7fb7f4a077237

See more details on using hashes here.

File details

Details for the file netsnmp_cffi-0.2.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: netsnmp_cffi-0.2.1-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"25.11","id":"xantusia","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for netsnmp_cffi-0.2.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ef91c20b1cb98b9cb1bc94ce3fc97e54d2e30273618411e30c4b17b98fec07fe
MD5 ead6cbbdaee94d73757454b830fcc09d
BLAKE2b-256 92a4a4cd6665fdd2725c163de6f75784a256812e24596818dce1403f8c223e3a

See more details on using hashes here.

File details

Details for the file netsnmp_cffi-0.2.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: netsnmp_cffi-0.2.1-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: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"25.11","id":"xantusia","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for netsnmp_cffi-0.2.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ca19984b79963999f7a9353e3baf47a68afc80e535b48e7ffa32a397f316ea2c
MD5 add57e712526f14dad955fbadd02d236
BLAKE2b-256 a4af3cfe3c754effc3442a41e7df6b99a66dab353ba0d45ae03cc65e6ea6ebec

See more details on using hashes here.

File details

Details for the file netsnmp_cffi-0.2.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: netsnmp_cffi-0.2.1-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: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"25.11","id":"xantusia","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for netsnmp_cffi-0.2.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2094cf645979fa5004248ca1288dab00a9f57f405ee290a307c2f2a1d306a230
MD5 85b11729f9f084ce8e4a43d5610ca8b8
BLAKE2b-256 284983316d7e8fdbc39c42ecbe52f55a0e2f2d8e47462430f99b56696046df22

See more details on using hashes here.

File details

Details for the file netsnmp_cffi-0.2.1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: netsnmp_cffi-0.2.1-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: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"25.11","id":"xantusia","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for netsnmp_cffi-0.2.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ee9a1102c66934e88348758ecde6a884f1ce0b1a58ff2fa152a818ac80d7b307
MD5 0528b8e90396829a8aa7bd1eb8c2d29b
BLAKE2b-256 c75c7b3d3c4a8c5f25c3de29cf24280fd7aa56282ebdb081e9640b1dd2fa296c

See more details on using hashes here.

File details

Details for the file netsnmp_cffi-0.2.1-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: netsnmp_cffi-0.2.1-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: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"25.11","id":"xantusia","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for netsnmp_cffi-0.2.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 48a3875a3de1b62717e8c5bce9fa679d810f1e157a536b24cd850f4024823bdc
MD5 941272678c3df3366ba360bcc5888243
BLAKE2b-256 42f565eaacb4069f70878a9c127e75fb221777bd4568411e96d96a7d045caa90

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page