semvec/pypi-packages huggingface dataset:
pnet 0.0.1
Fast zero-copy packet creating and parsing module
License: Apache 2

====
pnet
====

A fast and simple packet creation and parsing lib for Python, currently nothing
more then a proof of concept. Inspired by both the python `pypacker
<https://github.com/mike01/pypacker>`_ library and Rust's `pnet
<https://github.com/libpnet/libpnet>`_,

------
Design
------

Built around trying to minimize copying data by taking advantage of
`memoryviews <https://docs.python.org/3/library/stdtypes.html#memory-views>`_
for fast slicing and zero copy memory operations. 

This library takes either a `bytes` or `bytearray` object and parses out
various protocols in a similar fashion to the Rust library. The resulting
packet objects can be inspected, or, in the case its backed by a `bytearray`,
also written to. In this case, the backing memory is immediately updated.

Instead of mapping packet fields to attributes, I expose them instead with a
collection-like API. This is my personal taste, as I don't like how
autogenerated attributes end up with akward names that can overlap with Python
keywords.

-----------
Performance
-----------

Initial testing on my machine has shown that this library is about **twice** as
fast at parsing packets, but I haven't determined yet if this can be attributed
to design differences, or if I'm just simply doing less.

----
TODO
----

This is one part of a slew of network inspecting code I'm releasing.

- rich BPF support and mini-language
- asyncio support for raw sockets and packet capturing
- asyncio based dhcp server and client library