A Python library offering a more concise syntax for data packing.
Project description
StructOvO
A Python library offering a more concise syntax for data packing.
Installation
- From
pypi
pip install structovo
Usage
from structovo import *
class PackA(Packet):
a: PADDING
b: BYTE = b'A'
c: CHAR = -1
d: UCHAR = 1
e: BOOL = False
f: SHORT = -2
g: USHORT = 2
h: INT = -3
i: UINT = 3
j: LONG = -4
k: ULONG = 4
l: LONGLONG = -5
m: ULONGLONG = 5
n: SIZET = 12
o: SSIZET = 34
p: BINARY16 = 3.14
q: FLOAT = 3.14
r: DOUBLE = 3.14
s: FixedString = (b"hello", 10)
t: LengthPrefixedString = b"world"
u: UnsignedPointer = 0x0d000721
v: bytes = b'raw_bytes'
r = PackA.build(endianness=Endianness.NATIVE)
hex_list = [format(byte, '02x') for byte in r]
hex_str = ' '.join(hex_list)
print(hex_str)
And you will get:
00 41 ff 01 00 fe ff 02 00 fd ff ff ff 03 00 00 00 fc ff ff ff 04 00 00 00 fb ff ff ff ff ff ff ff 05 00 00 00 00 00 00 00 0c 00 00 00 00 00 00 00 22 00 00 00 00 00 00 00 48 42 c3 f5 48 40 1f 85 eb 51 b8 1e 09 40 68 65 6c 6c 6f 00 00 00 00 00 05 77 6f 72 6c 64 21 07 00 0d 00 00 00 00 72 61 77 5f 62 79 74 65 73
Advance
Supported Endianness
Endianness.BIG: Big-endianEndianness.LITTLE: Little-endianEndianness.NETWORK: Big-endianEndianness.NATIVE: Depend on your device (Default)
Custom Data Types
You can define your own data types by simply inheriting the BaseType class:
from typing import Tuple, Type
from structovo import BaseType, Endianness
class MyDataType(BaseType):
def check_validation(self) -> Tuple[bool, Type]:
# Implement the validation of whether the self.value is valid.
return ...
def encode(self, endianness: Endianness) -> bytes:
# Implement the operation of converting self.value to bytes.
return ...
Like this:
from typing import Tuple, Type
from structovo import BaseType, Endianness
class BYTE(BaseType):
def check_validation(self) -> Tuple[bool, Type]:
result = isinstance(self.value, bytes)
return result, bytes
def encode(self, endianness: Endianness) -> bytes:
return self._pack('c', endianness)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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 structovo-1.0.0.tar.gz.
File metadata
- Download URL: structovo-1.0.0.tar.gz
- Upload date:
- Size: 3.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ea29eafbb8b9048f0e483a68e64c7fab9d5f904c1cf7701c3e5a5e8b246acef
|
|
| MD5 |
180e14004c4e1d79b85420d45f0d03f7
|
|
| BLAKE2b-256 |
985a99af16ecb03a2d5b6aef90f60bb29d52d8dfa5e9e6ed12d03fa8034f369e
|
Provenance
The following attestation bundles were made for structovo-1.0.0.tar.gz:
Publisher:
release.yml on GuangChen2333/StructOvO
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
structovo-1.0.0.tar.gz -
Subject digest:
0ea29eafbb8b9048f0e483a68e64c7fab9d5f904c1cf7701c3e5a5e8b246acef - Sigstore transparency entry: 169593376
- Sigstore integration time:
-
Permalink:
GuangChen2333/StructOvO@9a2c7e90f619a90024c552ff3163e5010e20a295 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/GuangChen2333
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9a2c7e90f619a90024c552ff3163e5010e20a295 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file structovo-1.0.0-py3-none-any.whl.
File metadata
- Download URL: structovo-1.0.0-py3-none-any.whl
- Upload date:
- Size: 4.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de5bbd175e5b6010638bbac5d9fedfd3f39c91c8bc3a705ed652ff10663ba072
|
|
| MD5 |
f25149aa36afcfa12f55f322a9f698ae
|
|
| BLAKE2b-256 |
56ed2bb121df9b7001b40d404b83c0b99309b9dc8fcf76106cd5d1dc097aa7d8
|
Provenance
The following attestation bundles were made for structovo-1.0.0-py3-none-any.whl:
Publisher:
release.yml on GuangChen2333/StructOvO
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
structovo-1.0.0-py3-none-any.whl -
Subject digest:
de5bbd175e5b6010638bbac5d9fedfd3f39c91c8bc3a705ed652ff10663ba072 - Sigstore transparency entry: 169593377
- Sigstore integration time:
-
Permalink:
GuangChen2333/StructOvO@9a2c7e90f619a90024c552ff3163e5010e20a295 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/GuangChen2333
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9a2c7e90f619a90024c552ff3163e5010e20a295 -
Trigger Event:
workflow_dispatch
-
Statement type: