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.0-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.0-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.0-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.0-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.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: netsnmp_cffi-0.2.0-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.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7bd010b5ce783bbe41a41752afef5afa6f0b6b9c29780d6f00183e332c009b6b
MD5 6a0f6ad45aa519d4dc35fc0876817317
BLAKE2b-256 436758ca39f82d96cbc72e26ed2593723201b90cb41ec96d5639358854e34b8f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: netsnmp_cffi-0.2.0-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.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e974084db2980665179fb1f06a17a3246d9a785617d867b852b187bb6541219f
MD5 655a24d7824cfdc0ef96100a52604316
BLAKE2b-256 5489f53e427f4d2e44b3da75920c7fb12c2fd13ddca499ae49aad66a35849775

See more details on using hashes here.

File details

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

File metadata

  • Download URL: netsnmp_cffi-0.2.0-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.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cab52432fec142093a7dd3de4f3046131c3a0dd473969c7fc04d15afd41a31e8
MD5 9896173d1f4de74dd159422c94fc75fa
BLAKE2b-256 c3b598c6dd3ba126b99aad4f2350e18c7973252007aa6474110e2aa2b1837f8e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: netsnmp_cffi-0.2.0-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.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fa0193d1f52732ab8b5715ff20ef3ac2ab620d31a3b5c2e046969e76ba35dfe8
MD5 577b2d11fb6921c71154aa05e9aa5ce0
BLAKE2b-256 c764cd7b5356b99c62bb37674cd80d24302c7a9c149ec6d282308a8e083d5bef

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